Robert.BrainUsers.net

MVC w aplikacjach webowych? Tak, to możliwe

Wzorzec architektury MVC dla aplikacji WWW to dość kontrowersyjny temat. Standardowy MVC charakteryzuje się podziałem aplikacji na trzy hermetyzowane warstwy: model mapujący tabelę bazy danych, kontroler implementujący logikę dla modelu oraz widok, który pełni rolę prezentacji i odpowiada za interakcję użytkownika z aplikacją. Znawcy tematu (a wiadomo że programiści są istostami wszechwiedzącymi i niepodatnymi na krytykę) mówią, że w środowisku HTTP nie może być mowy o prawdziwym MVC, bo widok jest tylko głupim fragmentem kodu, który wyświetla dane, a protokół HTTP jest bezstanowy. Prawdziwe aplikacje MVC mają komunikację widok -> kontroler. Otóż muszę zmartwić niektórych przeciwników MVC dla aplikacji WWW.

Wszystko jest kwestią punktu widzenia i odpowiedniej generalizacji procesów, które zachodzą podczas komunikacji tych warstw. Otóż w aplikacjach webowych istnieje komunikacja widok -> kontroler, jeśli do widoku wliczymy funkcjonalność cieńkiego klienta, czyli przeglądarki internetowej.

Każde żądanie przeglądarki można traktować jak komunikat z widoku do kontrolera, chociażby kliknięcie na link w wygenerowanym dokumencie HTML. Komunikacja ta nie musi się przejawiać przeładowaniem strony, gdy użyjemy AJAX-a. W ten sposób można budować naprawdę zaawansowane aplikacje na nowym poziomie abstrakcji, dla których nie ma jakichś wielkich ograniczeń jeśli chodzi o architekturę (patrz aplikacje webowe Google). Jest za to po prostu kolejna warstwa abstrakcji.

Ponadto HTTP jest co prawda bezstanowy, ale wystarczy dodać obsługę sesji (np. na ciasteczkach) a już można dorzucić nową warstwę abstrakcji w której zakładamy, że sesja jest ciągła.

Natomiast jeśli chodzi o komunikację w czasie rzeczywistym serwera i klienta (kontrolera i widoku), to czekamy na rozwiązania HTML 5 - sockety w JavaScript (no własnie, czemu HTML5 a nie nowy JS?). A tymczasem trzeba korzystać z innych technik, lub po prostu traktować niektóre żądania AJAX transparentnie.

Pamiętajmy, wszystko zależy od punktu widzenia. Swoją drogą, ciekawe kiedy ktoś napisze taki framework, który będzie abstrahować od protokołu HTTP i związanych z tym konsekwencji. Byłby to zupełnie nowy sposób myślenia o architekturze aplikacji internetowych.

Komentarze

Na razie brak komentarzy, Twój będzie pierwszy.

Dodaj komentarz