Различие между Oracle ATG и Struts? [закрытый]

15
задан Roman C 20 March 2016 в 20:35
поделиться

3 ответа

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

ATG (Динамо ATG), с другой стороны, является платформой приложений - решением и платформой - для создания данных - и содержания - управляемых веб-приложений - в основном для коммерции и публикации. На уровне платформы это - платформа Java-приложения для хостинга веб-приложений, а также RMI доступные бизнес-компоненты, с уровнем ORM, контейнером компонента, платформой MVC и рядом библиотек тегов для JSP. Платформа компонента (Ядро) является легким контейнером для управления жизненным циклом и зависимостью, связывающей (внедрение зависимости) объектов компонента Java (бобы). В этом смысле это несколько подобно бобовому контейнеру Spring и является ядром платформы ATG - все другие сервисы и платформы размещаются в нем. Платформа уровня ORM (Репозитории), которым карты возражают против и от реляционных баз данных (как Вы ожидали бы). Но это может также дескрипторы, отображающиеся с LDAP, XML и данными файловой системы ources использование того же последовательного доступа к данным API. Теги JSP для привязки элементов формы на странице к значениям на бизнес-объектах и т.д. являются более изящными и более чистыми, чем теги привязки формы в любой другой платформе, которую я видел. Механизм записи Ваших собственных эквивалентов библиотеки тегов (Капелек) намного более согласовывается с Сервлетом API, чем стандартные теги J2EE.

платформа MVC (шаблон обработчика канонических форм) несколько подобна классам Формы и Действия Struts - но служит намного более основной основой, которую делает Struts. Из поля, и на уровне, на котором работает большинство разработчиков, модель ATG управляется страницей не управляемая контроллером. Внутренне, это, конечно, управляется контроллером с конвейерным подходом к объединению в цепочку диспетчеров и контроллеров.

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

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

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

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

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

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

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

, Например,

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

  2. Controller в MVC не является Вашим бизнес-контроллером. Контроллер в MVC является кабелепроводом между представлением и моделью. Это реагирует на изменения в представлении, или на действия, выполненные на представлении, и дает модели команду обновлять себя соответственно. В Struts Контроллер, о котором они говорят, не является контроллером MVC вообще - это - действительно диспетчер. Много кода, который принадлежит контроллера, заканчивается в Вашем классе Действия. Но способ, которым Struts разработан, класс Действия, действительно предназначен, чтобы сделать то, что делает Модель.

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

В Struts, функция Контроллера MVC распространена через контроллер Struts и Действие, в то время как функция Модели MVC распространена через Объект формы и Действие.

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

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

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

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

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

Возвращение к Вашему вопросу;

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

, Если бы Вы собираетесь запустить работу над новым проектом и иметь выбор платформ использовать - я лично рекомендовал бы сервер приложения с открытым исходным кодом (как JBoss) и Платформа Spring - это дает Вам лучшее из того, что обеспечивают ATG и Struts. Это имеет подобный Ядру контейнер компонента (Контекст Приложения), это интегрируется со всеми хорошими решениями ORM (теми, которые В спящем режиме), и включает платформу MVC, которая, по-моему, далеко затмила Struts. Кроме того, я рекомендовал бы смотреть на веб-поток Spring для высокоуровневого дизайна потока GUI.

58
ответ дан 30 November 2019 в 23:57
поделиться

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

-1
ответ дан 30 November 2019 в 23:57
поделиться

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

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

9
ответ дан 30 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: