Разница между Oracle ATG и Struts?

В чем разница между Oracle ATG и Struts?

Ответы

Ответ 1

Struts - это основа для использования в веб-приложении J2EE, которое пытается предоставить веб-приложениям подход, основанный на MVC-шаблоне для кодирования. Он включает некоторые дополнительные утилиты для проверки данных формы и т.д. Это проект с открытым исходным кодом, и он неплохо справился с решением этой части головоломки веб-приложения и ограничивается только решением этой конкретной части.

ATG (ATG Dynamo), с другой стороны, представляет собой платформу приложений - решение и структуру - для создания веб-приложений, ориентированных на данные и контент, - в основном для торговли и публикации. На уровне платформы это платформа приложений на основе Java для размещения веб-приложений, а также бизнес-компонентов, поддерживающих RMI, с уровнем ORM, контейнером компонентов, инфраструктурой MVC и набором библиотек тегов для JSP. Рамка компонентов (The Nucleus) представляет собой легкий контейнер для управления жизненным циклом и привязкой зависимостей (инъекции зависимостей) объектов Java-компонентов (beans). В этом смысле он несколько похож на контейнер Spring bean и является ядром платформы ATG - все остальные службы и фреймворки размещены внутри него. Структура уровня ORM (репозитории) отображает объекты в реляционные базы данных и из них (как и следовало ожидать). Но он также может обрабатывать сопоставление с данными LDAP, XML и данными файловой системы, используя тот же согласованный API доступа к данным. Теги JSP для привязки элементов формы на странице к значениям на бизнес-объектах и ​​т.д. Более элегантны и чисты, чем теги привязки формы в любых других рамках, которые я видел. Механизм написания собственных эквивалентов библиотеки тегов (Droplets) намного более совместим с API Servlet, чем стандартные теги J2EE.

Структура MVC (базовый шаблон обработчика форм) несколько похожа на классы Struts Form и Action, но предоставляет гораздо более базовую структуру, которую Struts делает. Вне зависимости от того, на чем работает большинство разработчиков, модель ATG управляется с помощью страницы, а не управляется контроллером. Внутри он, конечно, управляется контроллером с помощью конвейерного подхода к цепочке диспетчеров и контроллеров.

Кроме того, структура на базовом уровне предоставляет вам RMI-контейнер, распределенное кэширование, распределенные блокировки и распределенные синглеты, распределенные события и обмен сообщениями, планировщик задач, механизм правил и механизм для определения бизнес-процессов с пользовательскими действиями и результаты, графический редактор для бизнес-процессов, поддержка версий данных, поддержка ролей и прав, ведение журнала и аудит - все это из коробки, и все они используют очень согласованные и согласованные API

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

Точки расширения и точки интеграции в ATG обычно хорошо разработаны и хорошо документированы. Они поддерживают интеграцию со всем, кто есть кто-либо в электронной коммерции и издательском пространстве для таких вещей, как авторинг и управление контентом, управление идентификацией и безопасность, каталоги продуктов, поисковая и управляемая навигация и т.д. Кроме того, почти все области структуры расширяемы и plug-gable, чтобы вы могли писать свои собственные компоненты, чтобы улучшить или заменить их из коробки.

На самом деле нет смысла сравнивать эти два. Однако, учитывая ваш вопрос, я представляю, что вас действительно интересует часть MVC ATG

Для MVC Struts дает вам больше, чем ATG (но тогда Spring MVC дает вам больше, чем Struts). Тем не менее, вы склонны увязнуть в механизме каркаса гораздо больше с Struts, чем с ATG.

Лично я считаю, что модель ATG для форм-обработчиков более элегантна, чиста и удобна в работе, чем большинство других веб-фреймворков MVC, которые я видел, и API-интерфейсы более совместимы с API-интерфейсами Servlet.

Помните также, что большинство "веб-MVC" фреймворков не похожи на истинный MVC (т.е. шаблон, используемый для программирования графического интерфейса в Smalltalk или даже Java Swing и т.д.). Ни Struts, ни ATG не обеспечивают (как это предусмотрено) истинным MVC - хотя ATG на самом деле приближается. Существует много путаницы в терминологии.

Например,

  • M odel в истинном MVC не является вашей моделью данных и объектами модели домена. Это модель, которая представляет все данные в представлении. Если это будет объект модели домена, тогда хорошо и хорошо - но чаще всего вы обнаружите, что вам нужен другой набор объектов вида или формы. Кроме того, модель несет ответственность за обновление себя - это модель, которая взаимодействует с бизнес-услугами ниже. ATG имеет тенденцию сливать модель и контроллер в один компонент - обработчик формы. Struts имеет тенденцию сохранять модель данных представления разной (объект формы), но не поощряет ее использование в качестве модели в истинном смысле MVC - это не объект формы, который взаимодействует с другими бизнес-службами, чтобы поддерживать себя в курсе.

  • oncroller C в MVC не является вашим бизнес-контроллером. Контроллер в MVC является каналом между представлением и моделью. Он реагирует на изменения в представлении или на действия, выполняемые в представлении, и инструктирует модель соответствующим образом обновлять ее. В Struts контроллер, о котором они говорят, не является контроллером MVC вообще - это действительно диспетчер. Большая часть кода, который принадлежит контроллеру, попадает в ваш класс Action. Но способ Struts разработан, класс Action действительно предназначен для того, чтобы делать то, что делает модель.

  • V iew в MVC должен быть заполнен моделью - это механизм push с моделью, обновляющей представление, а не механизм вытягивания с представлением о запросе модели. В большинстве инфраструктур web-MVC представление (обычно JSP) выводит состояние из модели, чтобы отображать себя. Это особенно характерно для подхода ATG, ориентированного на страницы. Если вы обнаружите, что данные извлекаются во время рендеринга вашей страницы, это означает, что что-то не так с вашим дизайном MVC.

В Struts функция MVC Controller распространяется через контроллер Struts и Action, а функция MVC-модели распространяется по объекту Form и Action.

В ATG функция MVC-контроллера и MVC-модели находится в обработчике формы

Сказав, что из-за характера запроса-ответа HTTP функция контроллера в структуре web-MVC довольно ограничена. С веб-приложениями мы обычно получаем полностью обновленный вид представления формы, а не множество небольших изменений (например, каждое нажатие клавиши или щелчок мышью или каждое измененное поле ввода), как и в случае с богатым интерфейсом пользовательского интерфейса. Использование AJAX меняет это - и нам нужно больше думать о правильном внедрении MVC.

Помните, что MVC является шаблоном проектирования, то есть принципом времени разработки, который должен использоваться при разработке аспекта GUI приложений. Struts и ATG являются фреймворками - то есть они являются классами и объектами, которые должны быть расширены, реализованы или настроены при создании приложения. Рамки не могут обеспечить использование шаблона проектирования - он может просто поощрять его. Выбор использования конкретной структуры не заставит вас лучше спроектировать ваш ciode - в лучшем случае это может стимулировать определенную дисциплину.

Если вы хорошо спроектируете свой MVC, это не будет иметь большого значения, используете ли вы классы Struts или классы ATG для его реализации. Точно так же, если вы плохо проектируете свой MVC, надеясь, что ваш выбор фреймворка восполнит ваши недостатки, не будет иметь большого значения, используете ли вы Struts или ATG. Если вы понимаете и работаете с принципами проектирования, вам будет очень легко переключаться между рамками.

Лучшим кодом будет тот, который придерживается хорошего принципа дизайна (скажем, истинного MVC) в реферате и реализует его (реализует) с использованием правильных инструментов, доступных в выбранной структуре, в том виде, в котором они предназначены используемый.

Возвращаясь к вашему вопросу;

Если вы работаете над проектом ATG, вы должны использовать рамки, которые предоставляет ATG. Конечно, возможно, что Shoothorn Struts в приложение ATG - я сделал это сам много лет назад - но это гораздо больше усилий, чем это стоит, и вы отказываетесь от многих тем, что ATG предоставляет из коробки с точки зрения управление жизненным циклом объекта, привязка данных формы и т.д.

Если вы собираетесь приступить к работе над новым проектом и иметь выбор фреймворков - я бы лично рекомендовал сервер приложений с открытым исходным кодом (например, JBoss) и Spring Framework - он дает вам лучшее из того, что ATG и Struts. Он имеет контейнер типа Nucleus (контекст приложения), он интегрируется со всеми хорошими решениями ORM (такими как Hibernate) и включает инфраструктуру MVC, которая, на мой взгляд, сильно затмила Struts. Кроме того, я бы рекомендовал посмотреть Spring Web-поток для разработки потока графического интерфейса более высокого уровня.

Ответ 2

Основное отличие в Великобритании заключается в том, что в качестве подрядчика ATG вы можете получить 500 фунтов стерлингов в день, но, как общий парень Struts, вам повезло получить 350 фунтов стерлингов.

Не то, чтобы я был горьким вообще.

Ответ 3

ATG - это проприетарное программное обеспечение... и ресурсы меньше...