Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy MVC i architektura trójwarstwowa to to samo?
Pakinter
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 10.01.2005

Ostrzeżenie: (0%)
-----


W ksiazce "PHP5 i MySQL Zastosowania e-commerce" Helionu jest opis budowy sklepu na zasadzie architektury trojwarstwowej tj. warstwy prezentacji, warstwy biznesowej i warstwy danych. I tak sie zastanawiam czy to jest to samo co MVC
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krzysztof f.
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.11.2005

Ostrzeżenie: (0%)
-----


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_2

Napewno 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#faq26

Cel 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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 21:43