Зачем использовать Oracle Application Express для веб-приложений? - PullRequest
46 голосов
/ 17 марта 2009

Я полагаю, что мы переходим к Oracle Apex для дальнейшего развития. Я читал об Oracle Apex в Википедии, и это за и против. Мне кажется, что этот аргумент перевешивает профессионала, но, возможно, я ошибаюсь. Я чувствую, что Oracle Apex предназначен для администраторов баз данных, у которых мало или совсем нет знаний в области программирования для быстрой настройки веб-приложения, такого как MS Access, для программиста.

Если у вас есть опыт работы с Oracle Apex, можете ли вы поделиться своими мыслями? Из статьи Википедии не кажется, что вам вообще нужен какой-либо язык программирования, а только PL / SQL?

edit: Oracle Apex является масштабируемым? Может ли он обрабатывать трафик, как размер Facebook?

edit: после почти двух лет работы над Oracle Apex 3.2. Я могу с уверенностью сказать, что я ненавижу это, и я не понимаю, почему кто-то хотел бы создать веб-приложение / страницу в браузере, pl / sql и не иметь никакого способа управления версиями.

Спасибо.

Jack

Ответы [ 13 ]

52 голосов
/ 01 декабря 2009

Обратите внимание, мой опыт работы с APEX 2.x-3.0.

Я использовал Apex для нескольких внутренних приложений в течение 12 месяцев, но в конце концов сбросил его для ASP.NET.

Некоторые евангелисты Oracle утверждают, что способны создавать высокодинамичный контент наравне с более распространенными средами, такими как ASP.NET/J2EE. Технически это правда, но технически верно и то, что вы можете пересечь Атлантику в каноэ на одного человека. Если вы испытываете желание ввязаться в проект APEX даже средней сложности, тогда я предлагаю вам взглянуть на пример APEX простого дискуссионного форума . Сравните его с образцом дискуссионного форума ASP.NET MVC или реализацией RoR.

Сказав это:

Добро

  • Невероятно легко создать респектабельное веб-приложение с базовым вводом данных CRUD, простыми отчетами и заполнением их данными. Если вы ИТ-специалист, которому поручено объединить беспорядок в базе данных компании Excel / Access в центральную базу данных / веб-среду, то вам стоит взглянуть на APEX, он очень хорошо подходит для этой задачи. Если вы ожидаете, что сфера увеличится до чего-то даже умеренного уровня сложности, я перейду прямо к более гибкой структуре.

  • Если вы гуру DBA / PLSQL, но у вас нет опыта традиционной веб-разработки, вы будете хорошо подготовлены к тому, чтобы представить существующую бизнес-логику в веб-приложении, не разбираясь с HTML / CSS / JavaScript, если вы этого не хотите. к.

  • Форум поддержки APEX содержит массу информации и хорошо укомплектован разработчиками APEX.

Плохой

Мой опыт работы с Apex начал ухудшаться, когда приложения вышли за пределы ввода данных CRUD и потребовали более динамичного и ориентированного на события поведения.

  • Веб-интерфейс не крутой. Отладка это больно.

  • Контроль версий? Кому нужен контроль версий?

  • Когда вам (неизбежно) нужно сделать что-то за пределами ограниченного объема платформы, вам придется запачкать руки с PL / SQL. Написание бизнес-логики для базы данных - это хорошо, но генерация HTML из процедур PL / SQL в 2007 году выглядела неловко архаично.

  • Учитывая большое количество скрытых мест, в которых можно скрыть страницу и логику перенаправления, поток программы трудно визуализировать и не способствует естественному построению модульного, разделяемого и повторно используемого кода. ООП разработчики не будут впечатлены. С APEX возможно иметь хорошо структурированные поддерживаемые приложения, но это сложнее, чем должно быть. Это миры вдали от MVC.

  • Недопустимое количество ошибок фреймворка в используемых мной версиях. Я надеюсь, что это улучшилось с последними версиями, но парадигма интеграции IDE в платформу APEX сама по себе вызвала у меня самые мрачные сеансы отладки в моей жизни . В качестве примера я пытался воспроизвести периодически возникающую ошибку, из-за которой пользователь терял свои данные сеанса. Используя всплывающее окно информации о сеансе, я увидел, что иногда данные сеанса меняются, когда этого не должно быть. Я потратил 2 дня, пытаясь найти ошибку в моем коде, но безуспешно. Почти в бреду, я совершенно случайно заметил, что я могу воспроизвести ошибочные данные сеанса в окне отладки , но само приложение не перейдет в состояние ошибки . Мое сердце упало, когда я понял, что может происходить. Позже Oracle подтвердил, что я нашел ошибку в APEX, из-за которой в окне информации о сеансе периодически отображались данные предыдущего сеанса. Я потратил впустую 2 дня на отладку ошибки, связанной с сеансом, с ошибочным окном отладки сеанса. Это было последнее приложение Apex, которое я создал.

  • PL / SQL не является и никогда не будет следующей большой вещью в веб-разработке. Поработав некоторое время с APEX, я понял, что это не сделает меня лучшим веб-разработчиком. Освоение APEX действительно о PL / SQL. Это прекрасно, если вы планируете сфокусировать свою карьеру на технологиях Oracle, просто имейте в виду, что APEX настолько сильно влияет на направление основных веб-технологий, что переносимый набор навыков, которые вы можете перенести из APEX в другие веб-фреймворки, минимален.

Если вы рассматриваете возможность использования APEX для простого ввода данных и составления отчетов на веб-основе, это стоит посмотреть. Если вы ищете альтернативу .NET / JAVA / PHP для динамического веб-контента и богатого взаимодействия с пользовательским интерфейсом, я бы посоветовал вам искать в другом месте.

21 голосов
/ 25 января 2010

Я читаю эту страницу с большим интересом. Наша команда разработчиков использует Apex уже около 2 лет, и я хотел бы обобщить наш опыт.

Для построения базовых приложений CRUD Apex действительно превосходен. На самом деле я рекомендую вам попробовать это самостоятельно. Сначала мы столкнулись с некоторыми незначительными трудностями при настройке, но, похоже, они были исправлены в версии 3.2.

Добро

  • Отлично подходит для простых приложений. Если ваше приложение будет усложняться, рассмотрите альтернативное решение.
  • Встроенные шаблоны означают, что ваше приложение выглядит довольно профессионально (хотя некоторые будут обсуждать это).
  • Хороший форум поддержки и сообщество, с большим количеством активных людей, готовых помочь вам.
  • Некоторые превосходные встроенные элементы управления. Люблю графики и отчеты (но см. Ниже).

Плохой

  • Отладчик ужасен. Если вы использовали Visual Studio (и даже древние версии Microsoft Access), вы будете раздражены отладчиком. Нет точек останова, отладочные сообщения выплескиваются на экран в большом списке, приходится вручную выводить отладочные сообщения на экран. Какой ужас. Причиной многих, много часов потеряли для поддержки.

  • Как только ваше приложение становится сложным или требует какой-либо богатой функциональности, вам приходится прибегать к взлому Javascript и HTML / CSS, которые делают отладку и поддержку еще более сложными (хотя вы можете использовать такие инструменты, как Firebug или Visual Studio чтобы помочь с этим).

  • Мы столкнулись с необъяснимыми ошибками состояния сеанса, и таблицы стилей стали «отделяться» от приложения без объяснения причин - назовем пару проблем.

  • Поддержка незнакомых приложений может быть сложной, так как может быть трудно следить за логикой страницы без хорошего отладчика. И я не покупаю ответ «хорошо - приложения должны быть лучше написаны». Потому что в реальном мире это не так, особенно когда вы используете подрядчика.

  • Отчеты выглядят хорошо, но не очень хорошо, если вы не можете распечатать их или экспортировать в PDF. Конечно, вы можете выложить на сервер отчетов, в конце концов мы использовали другое решение.

Общий

Я бы сказал, что непременно используйте Apex для простых приложений CRUD. Для чего-то более, чем легкой сложности перейдите на .Net или Java. Я бы не стал обращать внимания на статью в Вики об Apex, так как она очень искажена. Обратите внимание, как «трудно отлаживать» (на мой взгляд, самый большой недостаток) был удален из статьи.

Что-то, что также должно быть очень осторожным, - это нелепое утверждение, что вы можете быстро конвертировать базы данных Access прямо в Apex. Да, это будет работать, если у вас доступ к БД очень и очень упрощен. Что-нибудь умеренно сложное, забудьте об этом, как мы нашли.

Мы определенно не будем использовать его для веб-приложений, только для внутренних. Просто слишком много трудностей, связанных с тем, что вы считаете само собой разумеющимся, скажем, .Net. Я знаю, что есть сайты, такие как AskTom, но они не совсем сложные. Мы увидим следующий Facebook на нем? Я думаю нет - хотя я уверен, что кто-то, читающий это, будет иметь трещину в этом.

Apex резюмируется в предыдущем комментарии - менеджеры видят демонстрации и быстро покупают, убежденные, что они нашли серебряную пулю, которая сократит время разработки. У меня были менеджеры, которые звонили мне и говорили, что нам нужно приложение db с 40 таблицами, которые собираются в неделю в Apex, пожалуйста - вот как далеко продвинулся миф. Реальность несколько иная. Да, некоторые вещи выполняются быстрее, существенно быстрее, но вы потеряете время в других областях - отладке, поддержке и настройке.

Конечно, вы лучше всего решаете сами. Установите его, попробуйте, вам может понравиться. Но не дайте себя одурачить быстрым заявкам о времени разработки, пока вы не поработаете над реалистичным приложением.

18 голосов
/ 17 марта 2009

Я участвую в огромном проекте по переносу приложения Oracle Forms с 5000 модулями в APEX. Это экстремальное использование APEX, но оно работает просто отлично. Это полный миф, что APEX подходит только для небольших внутренних приложений, созданных администраторами баз данных, стажерами или конечными пользователями: он, безусловно, подходит и для них (и более подходит, чем большинство других инструментов), но он также может использоваться для создания чрезвычайно сложных приложений.

Чтобы создать сложное приложение (а не стандартное стандартное приложение APEX), вам понадобится кто-то в команде с навыками Javascript и кто-то с навыками CSS. Но большинству разработчиков изначально нужен PL / SQL.

Это масштабируемо? Да: вероятно, более масштабируемый, чем большинство других решений! APEX добавляет очень мало накладных расходов на сервер базы данных, и требуется только самый минимальный из серверов приложений. "Размер Facebook"? Я не знаю наверняка, но я не понимаю, почему нет, если предположить, что у вас есть база данных Oracle на машине, достаточно большой и мощной, чтобы обрабатывать данные размера Facebook и объем транзакций. Как и в любом проекте Oracle, масштабируемость затруднена в основном плохими проектами баз данных и плохо написанным SQL, а не инструментом. Не многие люди когда-либо строят системы «размера Facebook»: а вы?

12 голосов
/ 17 марта 2009

APEX - это платформа, которая использует базу данных и PL / SQL для создания веб-страниц. Если вы можете выяснить, каким должен быть вывод в браузер, вы можете создать его в APEX. Если вы обнаружите, что какая-то часть инфраструктуры препятствует, вы можете написать процедуры PL / SQL и напрямую представить их веб-серверу, но при этом использовать преимущества безопасности, ведения журнала, состояния сеанса и т. Д., Которыми управляет система APEX.

Вы должны знать PL / SQL, SQL, HTML, JavaScript и CSS. Конечно, интерфейс выглядит как приложение для ввода больших данных, но вводимые вами данные будут в основном фрагментами кода на каждом из этих языков.

Масштабируется так же, как и база данных. Обычно он использует Apache в качестве веб-сервера, но используется только для обслуживания статических файлов и передачи запросов обратно в базу данных, где веб-страницы создаются с помощью кода PL / SQL в схеме APEX. Вы можете использовать AJAX, чтобы минимизировать размер трафика, проходящего вверх и вниз по трубе. Вы можете установить кэширование для определенных элементов, списков, областей страниц, страниц и т. Д.

Поскольку большинство вещей довольно просто сделать с помощью фреймворка, естественно, есть некоторые вещи, которые немного сложнее сделать в фреймворке. Приведенный выше пример цветовой кодировки может быть чем-то, что вы делаете с CSS, или вам может понадобиться обратиться к операторам печати, чтобы получить нужный результат. Суть в том, чтобы узнать, как инфраструктура облегчает жизнь, а затем, когда вы достигнете предела, вы можете легко прибегнуть к более прямым методам.

Исходя из VB.Net, вы пропустите пошаговую отладку и перетаскивание. Вы никогда не пропустите тот факт, что некоторая часть жизненного цикла страницы выполнит привязку и сбросит значения, которые вы привязали к объекту в другой части страницы.

Удачи.

Грег

9 голосов
/ 04 января 2010

Я администратор базы данных, и мне никогда не приходилось программировать с использованием APEX или чего-то еще (кроме некоторых сценариев bash и пользовательских сценариев SQL для целей администрирования), потому что моя работа далека от разработки приложений (кроме боли в заднице разработчиков) то есть). Конечно, мой опыт - разработчик, и я верю, что APEX - это будущее строго ориентированных на данные программ на базе Oracle.

Теперь ключевое слово здесь ориентировано на данные, так как я не согласен со многими другими администраторами баз данных в том, что все приложения ориентированы на данные (вы знаете тип администраторов баз данных, которые все еще думают, что ODBC означает ORACLE Подключение к базе данных). Конечно, все приложения включают данные, но все ли приложения ориентированы на данные? Я сомневаюсь, точно так же, как я сомневаюсь, что APEX когда-либо будет использоваться для приложений обработки изображений или мобильных игр. Однако, несмотря на всю шумиху вокруг RIA и Web 2.0, большинство компаний вокруг нас жаждут этих простых старых приложений, ориентированных на данные, и Oracle - лучшая база данных, и я могу заверить вас, что Oracle и APEX могут справиться гораздо больше, чем масштабируемость Facebook конечно, при условии, что вы вложили столько же денег, сколько ребята из Facebook в основную инфраструктуру.

Кстати, я также ненавижу дизайн Oracle тем APEX (ужасный непрофессиональный пользовательский интерфейс, просто представьте его как основной пользовательский интерфейс для банковского или авиационного бизнеса), ограниченные возможности (хотя это может измениться в будущем), многие и многие другие. проблемы (профессиональная отчетность в формате PDF без оплаты суммы лицензии на корпоративную базу данных для издателя BI), но больше всего маркетинг APEX заменяет Access или Excel, потому что это создает плохое впечатление, что это для детей, и я могу заверить вас, мой друг, что я никогда бы не стал разрешить детям трогать мои базы данных:)

Видите ли, у Oracle есть гем под названием PL / SQL, который совершенствовался годами для обработки данных гораздо более интуитивно понятным способом, чем любой другой язык. Теперь, когда гем затихает с медленной смертью форм / отчетов, и я уверен, что ни один новый выпускник никогда не потрудится изучать его строго для хранимых процедур базы данных (просто посмотрите на бушующую войну между разработчиками Java и .Net, и вы поймете, что, коснувшись фигурных скобок {} все остальное становится ересью). Увы, для тысяч и тысяч превосходных разработчиков PL / SQL APEX остается единственным убежищем, где они могут оставаться продуктивными и разрабатывать выдающиеся приложения, ориентированные на данные, и без APEX PL / SQL, несомненно, станет следующим COBOL. Вот почему сообщество PL / SQL заставит Oracle преобразовать APEX в платформу класса А, гораздо более мощную, чем то, что мы наблюдаем сегодня. Либо так, либо попрощайтесь с PL / SQL и присоединяйтесь к фигурным скобкам (кстати, никогда не бывает плохой идеей, по крайней мере, попробовать разные технологии, когда ты являешься разработчиком, по крайней мере, ты понимаешь, почему она не обязательно зеленее в другая сторона).

8 голосов
/ 17 марта 2009

Я не уверен, почему вы не считаете PL / SQL языком программирования ...

APEX идеально подходит для внутренних приложений, где вы хотите легкий интерфейс поверх ваших данных. Вы можете сделать это довольно легко без необходимости писать код.

Я также считаю, что APEX очень хорош для разработки небольших приложений для клиентов. Я бы не хотел создавать гигантское приложение, над которым будут работать сотни разработчиков, используя APEX. Но если у вас есть случай, когда 3 или 4 разработчика строят небольшой сайт, APEX, вероятно, будет так же хорош, как Java / PHP / ASP.Net / независимо от того, что в нем участвуют такие же опытные разработчики. Например, если ваши разработчики имеют большой опыт работы с ASP.Net, у них будет возможность освоить написание приложений APEX. Однако у вас будет, по крайней мере, такой же уровень сложности, если у вас будет куча разработчиков PL / SQL, которые попытаются научиться создавать сайты ASP.Net.

7 голосов
/ 17 марта 2009

Сайт поддержки Oracle Metalink был написан на Apex, поэтому он определенно МОЖЕТ масштабироваться. Теперь они переходят на новый сайт поддержки на основе Flash. Я понимаю, что они приобрели эту платформу в результате приобретения другой компании, а не строили ее в ответ на любые ограничения Apex.

Если вы хотите использовать «супер-сексуальность» в любом веб-приложении, вам, вероятно, придется использовать Flash / Silverlight / Air. В соответствии с этим любой сайт, основанный на HTML, включая Apex, может быть снабжен Javascript. Библиотека JQuery будет включена в следующую основную версию Apex (4.0), хотя вы можете включить ее (или любую другую библиотеку) сейчас.

Проблема кеширования, упомянутая в статье в Википедии, была устранена, хотя большинство установок все равно помещают изображения и сценарии в обычную структуру каталогов, а не обслуживают их из базы данных.

Пока вы заблокированы в базе данных Oracle, я не получаю «con» платформы «con» в статье. Oracle доступен в Windows, Linux и AIX (среди прочих). Это намного меньше блокировки, чем ASP / SQL Server.

6 голосов
/ 15 марта 2010

Не помещайте бизнес-логику в Apex. Используйте его только для презентации.

Если вы поместите код в приложение, вы не сможете его сохранить, и вы получите RSI от всех этих нажатий. Я всегда создаю слой-обертку, и в мире оракулов следуйте советам Тома Кайта - максимально приближайте бизнес-логику к данным. Это также означает, что ваши модули PL / SQL могут вызываться другими системами и т. Д., И, что лучше всего, настоящая суть вашего приложения будет заключаться в простых текстовых файлах, которыми можно манипулировать с помощью вашего любимого текстового редактора / IDE.

  • Создание представления со всеми данными, которые будут получены для каждого экрана.
  • Создайте единый пакет-обертку для всех операций CRUD. (То есть создание, чтение, обновление и удаление, я полагаю)

Короче говоря:

НЕ ПОСТАВЛЯЙТЕ ЛОГИКУ ПРИЛОЖЕНИЯ В APEX.

Вот мой совет. , , .

6 голосов
/ 17 марта 2009

То, что Apex подходит только для непрограммистов и администраторов баз данных, является неудачным заблуждением. Мы использовали его для создания нескольких критически важных, ориентированных на клиента веб-приложений.

Графический интерфейс пользователя обрабатывается шаблонами страниц Apex (HTML), CSS и небольшим количеством Javascript для улучшения взаимодействия с пользователем. Вся бизнес-логика размещена в пакетах PL / SQL. Это является ключом к тому, чтобы сделать ваше приложение простым в обслуживании и повторно использовать бизнес-логику в других приложениях Apex и других клиентских инструментах, таких как C # WinForms, Delphi, приложения Java и т. Д.

Что касается производительности, то движок Apex добавляет немного накладных расходов, а время отклика и масштабируемость вашего приложения во многом зависят от качества ваших запросов SQL (и модели данных). Подумайте об этом так: с Apex единственное, что между вашим пользователем и базой данных - это тонкий слой PL / SQL. Только здравый смысл заключается в том, что это должно быть быстрее, чем типичное приложение .NET или Java, которое имеет семнадцать уровней сложности (обычно включающих множество веб-сервисов и слоев объектно-реляционного отображения) между GUI и базой данных.

5 голосов
/ 23 августа 2010

Очень понравилось читать ветку сверху донизу, так как это было похоже на горячую дискуссию. Чтобы напомнить начало потока, он начинался как «Я полагаю, что мы переходим на Oracle Apex для будущего развития ...» Джек, будучи программистом .NET, беспокоился о решении своего руководства и думал о том, чтобы найти встречные факты для Oracle Apex. что в конечном итоге привело к стирке грязного белья (всех веб-фреймворков) в общественных местах. Несмотря на то, что жертвой был Oracle Apex, то же самое могло случиться с .net или j2ee, если спор велся между .net и j2ee gurus. Я хочу сказать, что у всех фреймворков есть свои плюсы и минусы. Вот почему на самом деле у нас так много. Это пустая трата времени на обсуждение того, что важнее для жизни (секс, еда или вода?). Естественно, мы выбираем наиболее подходящий предмет, когда это необходимо.

  • Oracle APEX подходит для сред, где у вас много баз данных Oracle и когда у вас действительно есть энтузиасты Pl / SQL. Можно действительно легко создавать многофункциональные, сложные веб-приложения 2.0 Data Centric (Apex 4.0), но отладка и контроль версий по-прежнему беспорядок, и вам также придется придерживаться базы данных Oracle (да, вы можете иметь обходные пути) но не крепкий).
...