Struts 1.x против Struts 2.x

Я рассмотрел несколько вопросов Struts 1 и 2 на SO, но ни один из них, похоже, не отвечает на вопрос с той точки зрения, с которой я смотрю на него.

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

Команда, которая будет разрабатывать систему, в основном состоит из разработчиков Java и много работала над Struts 1.x в течение последних 5 лет.

Система рассчитана на долгие годы, поэтому идея реинжиниринга через 3-5 лет, когда появится лучший фреймворк, не вариант. Он не предназначен для интенсивного использования AJAX.

Мой вопрос: зачем мне переходить на Struts 2, когда моя команда так опытна в Struts 1.x. Я понимаю, что есть некоторые улучшения, но я беспокоюсь, что время, потраченное на подготовку команды к работе, доработки из-за неправильного использования и т. д., намного перевесит любые преимущества, которые мы могли бы получить от Struts 2. Нам нравится Struts 1, он делает то, что мы необходимо это сделать, и все шаблоны проектирования, стандарты, лучшие практики и т. д. на месте.

Есть ли в Struts 2 какие-либо убийственные функции или серьезные проблемы, о которых я не знаю, в Struts 1, которые могут повлиять на решение остаться со Struts 1.


person Codemwnci    schedule 03.05.2011    source источник
comment
Я бы устал использовать такой старый фреймворк для запуска нового проекта.   -  person Steven Benitez    schedule 03.05.2011


Ответы (7)


Если вы создаете систему с нуля, я бы определенно перешел на версию 2.x Struts. Кривая обучения не будет большой для команды Struts 1.x, но вы сможете воспользоваться преимуществами современной среды MVC.

Для меня две основные функции Struts 2.x, которые повысят производительность:

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

Если вы работаете над большим проектом, возможно, вы захотите взглянуть на структуру компонентов, например. JSF 2 или калитки. Если вы полны решимости остаться на платформе, основанной на действиях, то лично я считаю Stripes более продуктивной средой.

person planetjones    schedule 03.05.2011

Struts 1.x — это винтажная технология 2000 года. С какой стати вы даже подумали о том, чтобы использовать его в совершенно новом приложении?

Самый большой недостаток, который я вижу, заключается в том, что Struts блокирует вас в пользовательском интерфейсе браузера на основе JSP. Struts Actions можно использовать повторно только внутри фреймворка. Вам будет трудно легко интегрировать мобильное устройство в эту систему, если вам это нужно.

Я бы начал думать о веб-сервисах, предпочтительно на основе REST и AJAX. Мир изменился. Я бы рассмотрел альтернативы Struts, такие как Spring или Play. Выбрать новый веб-фреймворк не так уж и сложно, но преимущества могут того стоить.

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

ОБНОВЛЕНИЕ: Если вы пробовали и не можете опоздать, и слишком много ограничений, то я бы сказал, что вы уже знаете свой ответ. Что вы надеетесь получить, придя сюда? Я не вижу аргумента, который вы не смогли продумать.

person duffymo    schedule 03.05.2011
comment
Я полностью понимаю вашу точку зрения. Но меня беспокоит то, что я участвовал в проектах, в которых была выбрана новая технология (поскольку она более новая и имеет x,y преимущества), и из-за отсутствия понимания структуры были приняты плохие проектные решения, и проект сильно опоздал. Я не могу допустить, чтобы это произошло в этом проекте, поэтому у меня есть соблазн оставаться в безопасности!… Что касается Spring/Play, я бы с удовольствием использовал Play (я автор книги Play), но вряд ли руководство покупка фреймворка относительно молода (я уже пробовал). - person Codemwnci; 03.05.2011
comment
+1 за комментарии Struts 1. Struts 2 — хороший вариант, как и Play. Однако я не вижу смысла использовать Spring MVC, если вы не используете Spring DI/AOP. - person Steven Benitez; 03.05.2011
comment
Использование Spring MVC не хуже, чем использование Struts 1.x. И вам не нужно использовать весь механизм Spring, чтобы извлечь выгоду из его частей. Он также хорошо работает по меню. - person duffymo; 03.05.2011
comment
Причина, по которой я пришел сюда, заключается в том, что у меня есть опыт работы со Struts1, но не со 2. Мне нужна веская причина, чтобы отказаться от чего-то, что хорошо известно команде, поэтому я хотел посмотреть, есть ли достаточно веская причина для внесения изменений, которые компенсировать потенциальные трудности кривой обучения. - person Codemwnci; 06.05.2011

Учитывая, что у вас есть команда с хорошим опытом работы со Struts 1.x, а ваш продукт также стабилен, я не вижу веских причин для перехода на Struts 2. Apache, похоже, тоже согласен с тем, что http://struts.apache.org/roadmap.html#migrate_s1.

person Pravin    schedule 03.05.2011

Я бы подумал, что вместо того, чтобы спрашивать «Остаться со Struts1 или перейти на Struts2?» вам лучше спросить: «Остаться со Struts1 или перейти на современную веб-инфраструктуру MVC, основанную на действиях?». Зачем двигаться? Потому что Struts1 стар и (честно говоря) отстой. Почему бы не двигаться? Потому что мы должны изучить новый фреймворк. Конечно, вы знаете свои ресурсы, вы должны провести оценку. Но имейте в виду, что современные фреймворки, основанные на действиях (Struts2, SpringMVC, Stripes), довольно просты в освоении, особенно если ваша команда уже знает Struts1.

Лично я перешел со Struts на Struts2 и теперь не хотел бы возвращаться к программированию на Struts1 (эти неуклюжие ActionForms!). Я думаю, что Struts2 намного лучше. Но нужно также учитывать, что у Struts2 есть и свои слабые стороны, проект не выглядит очень здоровым, а сообщество не очень активным. Переход от Struts1 к Struts2 невелик, но и не так мал, как изменение версии ("Struts2" — неправильное название), и, вероятно, не меньше, чем переход к SpringMVC, поэтому я бы предложил рассмотреть его (или полосы).

person leonbloy    schedule 04.05.2011

В целом, многоуровневая структура Struts 2.x сравнивается со Struts 1.x. Например, на уровне данных Struts 2.x имеет уровень DO между VO и DAO. Аналогичные другие функции упомянуты в приведенной ниже ссылке.

http://struts.fromdev.com/2008/08/struts-1-vs-struts-2.html ..

Поскольку у вашей команды больше опыта работы со Struts 1.x, я не думаю, что потребуется больше времени для переноса вашего кода на Struts 2.x.

Пожалуйста, укажите, какую разницу вы ожидаете.

person Vignesh Ramachandran    schedule 03.05.2011

в struts2.0 больше возможностей и преимуществ, в struts2.0 нет луча формы, хорошая и мощная структура полной проверки и наиболее импортированная в struts2.0 для каждого запроса есть один экземпляр действия, но только в sturts1.x один экземпляр действия для применения отверстия.

так что выбор за вами. :)

person p27    schedule 03.05.2011

Ну, основная причина заключается в переходе на struts 2.x вместо struts 1.x. struts 1.x находится на этапе обслуживания, а не в активной разработке.

теперь, когда все начинается с команды, которая хорошо разбирается в Struts 1.x, они быстро получат базовую систему. Но прежде позвольте мне четко изложить один момент. struts1.x не имеет сходства со struts 2.x, сходство только в имени, унаследованном от родителей. struts2 имеет следующие преимущества.

  1. Основанная на действиях структура
  2. Сильная поддержка Ajax
  3. Подход перехватчиков (ядро фреймворка) 4 Отделен от Serve let API, что означает простой POJO, поэтому модульное тестирование будет намного проще

но я хочу сказать, что struts2 и struts1 похожи только по названию, но с точки зрения базовой архитектуры они совершенно разные.

person Umesh Awasthi    schedule 04.05.2011