Миграция из Struts 1.2 → Struts2 vs Spring -MVC (в первую очередь, для поддержки Struts1.2 taglib)

Основной вопрос: если мое приложение в настоящее время использует Struts 1.x - и я рассматриваю возможность перехода на EITHER Spring -MVC или Struts2 для MVC-рамки - есть ли что-нибудь об одном, которое сделает это легче мигрировать из Struts1.2?

Чтобы уточнить, я НЕ спрашиваю, лучше ли SpringMVC или Struts2 в целом (есть ряд существующих Q на SO, которые обращаются к этому) - просто с какой из них легче перейти на Struts1.2.

То, что меня больше всего интересует с точки зрения миграции: возможность продолжения (в начале) использовать struts1.x taglib на страницах JSP, а при переходе на Struts2 ( или SpringMVC) на бэкэнд. (Другими словами, может ли любая из этих фреймворков поддерживать Struts1.x taglib в качестве плагина)? [Примечание: это не предназначено как долгосрочное решение, но уменьшит интегральную боль, поскольку JSP не нужно будет немедленно переписывать. Я предполагаю, что этот вопрос имеет смысл - если нет, пожалуйста, объясните почему]

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


Некоторая предыстория:

Я работаю над приложением, уровень MVC которого написан через Struts 1.2. Мы также используем Spring IOC - хотя приложение в настоящее время не имеет сильной интеграции между слоем Struts и Spring установками DI. (Примечание. Это то, что мы планируем корректировать, когда мы реорганизуем, но я понимаю, что с небольшим планированием - это можно сделать правильно/эффективно даже при использовании комбинации Spring IOC + Struts2.)

В качестве части улучшения/рефакторинга кодовой базы - мы хотели бы перейти на более современную среду MVC (чтобы исключить необходимость в классах Action/Form, а также, если это возможно, использовать конфигурацию на основе аннотаций и т.д.), но сохраняйте общий классический стиль MVC (т.е. в настоящее время не заинтересован в том, чтобы сделать прыжок в JSF, Tapestry, GWT, Flex, Play и т.д. Я понимаю, что это очень разные вещи - объединяя их вместе, чтобы дать общую идею..) Кроме того, желание состоит в том, чтобы пойти с чем-то разумным движением/импульсом - поэтому правящие Полосы по этой причине. Похоже, что оставить только Spring -MVC и Struts2 в качестве претендентов (хотя, если есть что-то еще с похожим стилем и с сильной отраслевой тягой, мы бы, конечно, его рассмотрели)

Это то, что переход на любой из них потребует снижения производительности - но план должен был бы сделать это на модульном уровне. По этой причине, если любой из этих поддерживаемых Struts 1.2 taglib - это упростит процесс переключения/тестирования (поскольку мы могли бы затем закодировать реализацию определенного модуля "Control" в новом API) и иметь второй сервер, который запускает старый Struts1.2 реализация с использованием того же jsps. QA-тестирование тогда будет "яблоками для яблок". Это имеет смысл или будет ли этот подход (если это возможно) привести к большему количеству головных болей, чем это разрешило бы?

Кроме того, как указано выше, в то время как мой основной вопрос касается запуска struts1.2 taglib с помощью Spring -MVC или Struts2 - меня также интересуют любые другие преимущества MIGRATION для Struts2-vs- Spring -MVC.

Ответ 1

Я не видел поддержки Struts 1 taglib в любой из этих фреймворков.

Некоторые незначительные преимущества Struts2: Существует несколько официальных ссылок о переносе приложений из Struts1 в Struts2  - http://struts.apache.org/2.2.3.1/docs/migration-strategies.html  - http://struts.apache.org/2.2.3.1/docs/migration-tools.html

В Struts2 есть даже плагин Struts1, который позволяет запускать ваши действия в Struts2  - http://struts.apache.org/2.2.3.1/docs/struts-1-plugin.html

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

Ответ 2

Если перенести Strut1.2 на Spring MVC, если мы включим struts.jar в WEB-INF/lib, мы все равно можем использовать strut1.2 taglib в Spring MVC, это означает, что вы все еще можете использовать bean: define, bean: write... logic: present, logic: equal... (Struts1.2 taglib) в JSP, только изменение struts 1.2 form taglib (html: text, html: error html: form...) следует заменить на форму Spring formlib (form: path, form: form, form: path, form: error...), чтобы мы могли связывать поля формы с данными командного класса, referenceData или инициализированными данными команды formBackObject для использования Spring Функция MVC JSP

Ответ 4

Перемещение к или по существу равно той же сумме и типу работы.

Хотя в S2 есть плагин Struts 1, который позволяет использовать существующие классы действий S1, как уже отмечалось, вам все равно нужно переписать свои JSP файлы, и ваше приложение все равно будет страдать от близких связей S1 с картой сервлетов.