Когда имеет смысл использовать Spring WebFlow поверх Spring MVC?

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

Когда имеет смысл использовать Spring WebFlow поверх Spring MVC? Каким должен быть процесс принятия решения об использовании Spring WebFlow?


person LeoNYC    schedule 27.07.2010    source источник


Ответы (4)


Если у вас есть веб-приложение, в котором есть некоторый процесс приложения. Например, если у вас есть какой-то процесс регистрации, одна кнопка может перейти на одну страницу, а другая — на другую. Spring Webflow может очень хорошо справляться с переходом к различным наборам процессов.

По сути, если какая-то часть вашего приложения связана и страницы зависят друг от друга во время выполнения, лучше использовать SWF.

person John Vint    schedule 27.07.2010

Лично мне в webflow больше всего нравятся две вещи:

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

Что мне не нравится, так это непоследовательность и плохая обратная совместимость более новых версий. Например, последний веб-поток 2.1 несовместим с JSF 1.x jira. Также существует множество проблем с интеграцией со Spring Security. Например, в spring security 3.x они просто изменили имена некоторых пакетов. В общем, как упоминал Саси, веб-поток почти заставит вас разделить вашу логику на разные веб-потоки - и это хорошо, я думаю.

person Denis Kniazhev    schedule 11.08.2010

Одна из проблем, которую веб-поток решает эффективно, заключается в том, что он четко отделяет (или, по крайней мере, очень сложно смешивать) бизнес-логику от вашей управляющей логики.
Согласен с @John по поводу вариантов использования, но я хотел бы отметить, что как только вы начнете интенсивно используя веб-поток, вы обнаружите, что пишете много файлов xml (поскольку в веб-потоке вы указываете все потоки в файлах xml). Лично для меня это почти разрыв сделки.

person Sasi    schedule 27.07.2010
comment
Я согласен, что xml очень громоздкий, но альтернатива еще более сложная (написание собственной логики потока с помощью java). Я видел, как люди пытались сделать это до того, как веб-поток был доступен, и поддерживать его было кошмаром. - person John Vint; 28.07.2010

Я использовал MVC и SWF. Лично я предпочитаю SWF MVC по следующим двум веским причинам:

  1. Spring MVC не имеет встроенного механизма управления сеансом на нескольких вкладках в одном браузере.
  2. Обработка возврата браузера проще в SWF, чем в MVC.
person sujeeshValath    schedule 29.12.2015