2016-09-26 5 views
1

Я хотел бы модернизировать приложение Struts 1.x. Существует целый ряд статей, которые пропагандируют миграцию кодов, а не переписывают всю систему.Модернизация Struts 1.x Применение

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

В моей нынешней системе используются подготовленные операторы 1.x и JDBC в качестве уровня доступа к данным.

Я с нетерпением жду, чтобы улучшить унаследованное приложение со следующими целями:

  1. Веб-страницы должны кодироваться с адаптивным веб-дизайна в виду.
  2. Замените Struts 1.x с Spring MVC

Я ищу разбивая модернизации на следующие этапы:

  1. Фаза 1 - изменить все страницы JSP в HTML 5 и CSS 3
  2. Фаза 2 - Изменение всех классов DAO в Spring JDBC шаблона или Spring JPA и сделок с управлением Spring
  3. Фаза 3 - в конечном счете, заменить Struts 1.x Action Forms, действия с Spring MVC

Перед тем, как начать изменения, я хотел бы узнать, если это возможно:

  1. Struts 1.x с HTML 5 и CSS 3? Я смотрю на замену всех struts 1.x html taglibs на HTML 5 и JSTL/EL.
  2. Бегущие струпья 1.x с пружиной 3/4? Можно ли запускать не-весеннее управляемое pojo с весенними бобами?

Что я должен принять к сведению и как/каковы наилучшие методы обработки этого процесса модернизации? База кода составляет около 500 тыс. Кодов HTML/JSP и 3 миллиона кодов Java.

+0

3 Фазы 2 и 3: вам нужно «ввести» классы Spring @Service (которые используют шаблон JDBC или JPA) внутри действий Struts, что можно сделать, если вы получите дескриптор контекста приложения Spring из действий Struts. Для этого вы определяете компонент «контекстно-зависимый» Spring, который устанавливает какое-то статическое поле, например. myApplicationContext, в контексте приложения, как в ссылке http://sujitpal.blogspot.it/2007/03/accessing-spring-beans-from-legacy-code.html. Затем вы просто получаете доступ к статическому полю этого класса, чтобы получить контекст приложения и службы. Так что, похоже, вы можете так поступать. –

+0

Что означает, что я не могу использовать аннотацию вообще для Struts 1.x с Spring? – youcanlearnanything

+0

Ну, сначала вы используете аннотации (например, JPA) для служб. (фаза 2). Затем, во время фазы 3, когда вы конвертируете действия в Spring MVC, вы будете использовать аннотации Spring MVC. –

ответ

3
  1. Это было время, так как я в последний раз работал с Struts 1.x, но я не вижу никакой проблемы, заменяющий по крайней мере большинство из тегов Struts с JSTL/EL. Вы должны иметь возможность рисовать HTML5 с помощью Struts 1.x JSP. Я помню, что я работал с небольшими или отсутствующими тегами Struts, только JSTL/EL, но это было до HTML5.

  2. Вы можете вызвать Spring Context из любого Struts ActionForm или, по существу, любого класса в вашем webapp. Вам, вероятно, придется делать это вручную, хотя и не с аннотациями, примерно так:

    Приложение WebApplicationContextContext = WebApplicationContextUtils.getWebApplicationContext (getServletContext());

При всем этом сказал, я вижу, что вы намерены делать серьезное обновление своего приложения, поэтому я должен спросить, вы положительны о сохранении Struts 1.x? Если вы хотите использовать теги Struts, используйте Spring 3/4 и HTML 5, почему бы не обойтись без Struts и перенести приложение в Spring MVC? Он очень прост в использовании, мощен и, само собой разумеется, идеально сочетается с компонентами Spring, реализующими вашу бизнес-логику, настойчивость и т. Д.

Cheers.

+0

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

+0

Я разбиваю фазы, чтобы свести к минимуму риски. – youcanlearnanything

+0

@youcanlearnanything «Я смотрю шаг за шагом, чтобы смягчить любой провал проекта или риск», если ваше приложение не использует javascript очень сильно, вы можете попытаться создать полный набор тестов Selenium для вашего текущего приложения (когда приложение не является интенсивным javascript, это не очень сложно или требует много времени. После того, как вы перейдете к первому threshlod), а затем проверьте свое реинжиниринговое приложение на этот пакет. И, конечно, лучше создать модульные тесты, чтобы проверить, что запросы JPA дают те же результаты, что и исходные SQL-запросы. –

2

(Не ответ, информационный.)

  1. Там нет причин вы не можете иметь приложение S1 работает вместе с Spring MVC. Это разумный способ перенести по частям вместо более длинного проекта, который выполняет полную замену.
  2. Старая весна имеет прямую поддержку Struts 1. В зависимости от ваших времен я могу рассмотреть использование старой весны, пока вы не продолжите дальше.
  3. Замена тегов S1 на чистый HTML/CSS будет больно, потому что теги S1 визуализируют другие вещи помимо полей ввода (например, метки, сообщения об ошибках и т. Д.). Это полностью выполнимо, особенно если вы пишете свои собственные теги ,
  4. jQuery v. (AngularJS | React | аналогичный) Переход на полнофункциональное клиентское приложение - большой подъем, особенно если ваш back-end еще не разработан таким образом. Я бы этого не сделал, но вы могли бы начать с него, поставив бизнес-логику на свое место и используя ее на веб-уровне. Затем ...
  5. ... вы начинаете потреблять вызовы API на стороне клиента, используя jQ или другую клиентскую структуру, внедренную на существующие страницы. Только тогда я начну рассматривать полный SPA.

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

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

+0

Вы имеете в виду, что в одном веб-приложении (военном файле) я могу иметь в себе обе стойки 1.x и spring mvc? Внутри файла войны я запускаю модуль A на стойках 1.x и модуле B на весеннем mvc? – youcanlearnanything

+0

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

+0

«Старая весна имеет прямую поддержку Struts 1» - Интересно, есть ли смысл использовать более старую Spring (я думаю, 2.5?), Так как тогда вам придется обновляться на какой-то стадии до Spring 4+ в любом случае и, по крайней мере, в мое мнение лучше сразу перейти к весне 4. –