Na wstępie chciałbym się przywitać. Jestem Nowy ; )
Cytat
...nie mówiąc już o tym ze jeśli chodzi o MVC to niemal każdy ma swój punkt widzenia, interpretacje i implementacje
To prawda, wzorzec architektury aplikacji MVC należy do bardzo kontrowersyjnych wzorców. Szczególnie jeśli przychodzi do jego implementacji w środowisku www (
PoEAA) i szczegółów zastosowań oraz rozdzielenia zadań między poszczególne komponenty. Wynika to zapewne z tego, że nie jest to prosty wzorzec dający propozycje gotowych interfejsów klas, a pewne podejście programistyczne w budowaniu struktury aplikacji z szczególnym uwzględnieniem separacji podstawowych i różnych zadań zupełnie jak w architekturze wielowarstwowej. A także jego pierwotne przeznaczenie dla interfejsów GUI, które znacznie różnią się od aplikacji internetowych.
Cytat
...nie wiem, czy jest większy sens się nad tym rozwodzić...
...ależ oczywiście że jest. O ile jest wiele propozycji implementacji wzorca MVC i sporów co do szczegółów zastosowania w aplikacjach webowych to sama idea wzorca jest bardzo przejrzysta i atrakcyjna.
http://www.phpwact.org/pattern/model_view_controller June 2003 - php Architekt - Industrial Strength MVC
http://www.phppatterns.com/docs/design/mvc_pattern_version_2Napewno było na ten temat wiele dyskusji, ale pozwolicie, że spróbuję jeszcze raz zebrać podstawowe informacje...
Wytyczne wzorca projektowego MVC mówią o podziale aplikacji lub jej fragmentu na trzy części: model, widok i kontroler. Funkcje poszczególnych elementów oraz przepływ danych wywodzi się z aplikacji z graficznymi interfejsami GUI, gdzie można wyróżnić proces wprowadzania danych, przetwarzania ich i prezentowania. Za każdą z tych funkcji odpowiada odpowiednia część wzorca.
Model zawiera w sobie kluczowy element aplikacji, logikę biznesową. Głównym celem wzorca MVC jest uniezależnienie modelu od widoku i kontrolera, które razem tworzą interfejs aplikacji. Ponieważ model powinien pozostać niezależny od prezentacji, nie może odnosić się ani do widoku ani kontrolera. W warunkach sieci web wzorzec MVC korzysta z pasywnych obiektów modeli, które są w pełni odseparowane od pozostałych komponentów, a operacje na nich i pobieranie danych wykonywane są przez kontroler i widok. Model jest odpowiedzialny za zachowanie i przetwarzanie danych, odpowiada na zapytania o jego stan oraz reaguje na polecenia zmiany stanu. Odpowiada za dostęp do danych i nie decyduje o sposobie ich prezentacji, za którą odpowiedzialne są powiązane z nim widoki
Widok pobiera dane z modelu i prezentuje je użytkownikowi, tworząc tym samym warstwę prezentacji aplikacji. Widok charakteryzuje się swobodnym dostępem do modelu, ale nie ma możliwości wpływać na jego stan. Może tylko odczytywać i reprezentować konkretny stan modelu. Odczyt danych z modelu odbywa się za pośrednictwem odpowiednich metod modelu.
Kontroler odbiera i tłumaczy dane wejściowe na odpowiednie zapytania do modelu lub widoku. W zależności od żądań jakie przychodzą z poza aplikacji (w przypadku programów z interfejsem www są to zapytania GET i POST) wywołuje odpowiednie akcje. Kontroler jest odpowiedzialny za wywoływanie odpowiednich metod na modelu, które wpływają na jego stan. Następnie, w przypadku modeli pasywnych, informuje on widok o zmianie stanu modelu. W przypadku wzorca MVC kontroler nie jest, jak się często mylnie sądzi, rodzajem mediatora pomiędzy widokiem a modelem. Zarówno kontroler jak i widok mają takie same możliwości pobierania danych z modelu. Kontroler nie przekazuje danych z modelu do widoku.
Idąc za przemyśleniami autora „php|architect's Guide to php Design Patterns”
Jason E. Sweat to czym naprawdę różnią się wszystkie implementacje wzorca MVC w świecie php to właśnie sposób rozwiązania działania Kontrolera. Jeśli chodzi o komponent widoku większość frameworków opiera go na własnym lub jednym z powszechnie znanych systemów szablonów implementującym wzorzec Template View. Stosunkowo prosta sprawa jest też w przypadku Modelu. php doczekało się już kilku popularnych implementacji Wzorców DAO czy bardziej skomplikowanych frameworków ORM.
Wracając do porównania architektury wielowarstwowej i wzorca MVC
http://www.tonymarston.net/php-mysql/infra...-faq.html#faq26Cel w postaci odseparowania fragmentów kodu odpowiedzialnych za prezentację, logikę biznesową oraz dostęp i gromadzenie danych, jest wspólny zarówno dla architektur wielowarstwowych jak i dla wzorca MVC. Dlatego też istnieje możliwość przeplatania się tych dwóch podejść i wykorzystywania ich równolegle wykorzystując tym samym korzyści płynące z obydwu rozwiązań. Na tym etapie możemy mówić o podobieństwie tych dwóch podejść.
Podstawowe różnice architektur sprowadzają się do tego, iż w MVC model odpowiedzialny jest za dostęp i zachowanie się danych, co może odpowiadać warstwom logiki biznesowej i dostępu do danych w modelu trójwarstwowym. Warstwa prezentacji w modelu warstwowym odpowiada za komunikacje z użytkownikiem (zarówno pobieranie danych wejściowych jak i prezentowanie danych wyjściowych), w modelu MVC rolę tą spełniają widok i kontroler
To tyle moich rozważań
Z poważaniem,
kf