Wpis filozoficzny…
Ostatnio(czytaj gdzieś w tym kwartale) zostałem zapytany czy integracja Spring MVC z Vaadin ma sens. Odpowiedź w skrócie brzmi… to zależy.
Contents
Na Nie
Po pierwsze jeżeli przyjrzymy się temu co kryje się za pojęciem Spring MVC to odkryjemy, że tak na prawdę jest to Spring Web MVC z bardzo silnym naciskiem na Web. Vaadin nie jest typowym frameworkiem webowym i dlatego nie można stosować springowych rozwiązań wprost. Oczywiście da się, ale będzie to niezgrabna proteza, która pozbawi nas zalet zarówno Springa jak i Vaadin.
Lepszym rozwiązaniem jest samodzielna implementacja ViewResolvera, ale powiedzmy sobie szczerze to jest bardzo trudne. Trudność polega na niewebowym sposobie „myślenia” związanym z Vaadin. Znacznie lepszym jest sposób myślenia taki jaki mamy w przypadku aplikacji Swing/AWT/SWT. Zresztą powiedzmy sobie szczerze, Vaadin ma bliżej do Swinga niż do JSP/JSF/Inna technologia webowa. Dlatego też w przypadku Vaadin nie należy używać Springowego MVC wprost.
Na Tak
Używanie wzorca MVC jest bardzo, ale to bardzo dobrym pomysłem. Jest to jeden z tych wzorców, który powinien być stosowany wszędzie tam, gdzie aplikacja obsługuje więcej niż trzy scenariusze. Implementowany powinien być już na początku, a następnie schemat powinien być konsekwentnie powtarzany w całej aplikacji.
Problemem jest wymieszanie warstwy kontrolera i widoku właściwe dla aplikacji okienkowych. Dlatego też należy użyć Springa jako narzędzia do separacji widoku i kontrolerów. No właśnie… nie kontrolerów, a prezenterów. Tu dochodzimy do ważnego stwierdzenia. Zamiast wzorca MVC należy używać wzorca MVP, a Spring powinien służyć do wiązania widoków domeny i prezenterów domeny.
Jak dokładnie to zrobić będzie innym razem.
Podsumowanie
Spring tak, MVC nie. Po prostu wzorzec ten w przypadku aplikacji w Vaadin nie będzie spełniał swojej roli. Lepszym rozwiązaniem jest wzorzec MVP, który jest pewną mutacją MVC przystosowaną do środowiska okienkowego.
Dzięki za odpowiedź.
ps.
Mam nadzieję, że nie trzeba będzie długo czekać na obiecany wpis:P
Spoko. Tydzień przrrwy od treningu bo rozwaliłem łapę więc będzie czas na pisanie 😀