Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy MVC i architektura trójwarstwowa to to samo?
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Pakinter
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
NuLL
Mnie sie wydaje ze tak - w koncu MVC to tez 3 warstwy - wlasnie takie jakie napisales.
sobstel
zwał jak zwał, zależy o co chodzi dokładniej, nie mówiąc juz o tym ze jelsi chodzi o MVC to niemal kazdy ma swoj punkt widzenia, interpretacje i implementacje
bela
Przetłumacz sobie skrót MVC i zobaczysz winksmiley.jpg
I przeczytaj artykuł hawka na wortalu.
Speedy
w MVC, to warstwę prezentacyjną masz na pewno, ale nie czytałem książki, o której wspomniałeś, więc nie wiem co jej autor miał na myśli.
Np. "warstwa danych". w MVC nie ma czegoś takiego jak "warstwa danych". Jest Model - sposób pobierania danych i controller - modyfikacja danych. smile.gif
bela
Przecież model to warstwa danych.
Speedy
Z tego co wiem, model nie ingeruje w modyfikację danych winksmiley.jpg.

PS. Tak czy inaczej, nie wiem, czy jest większy sens się nad tym rozwodzić...

pozdrawiam.
bela
Miałem na myśli pobieranie, łączenie się z bazą. Nie chwytaj mnie za słówka.
Model udostępnia jakieś API z pomocą którego niezależnie od tego gdzie dane się znajdują np. w bazie, pliku zawsze otrzymamy tak samo je.
krzysztof f.
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
NuLL
[OT]
Jak nazwa forum wskazuje to forum nie sluzy do pisania offtopicowych klotni i postow

http://forum.php.pl/index.php?showtopic=937

Dziwne posty usuwam i prosze nie pisac wiecej takowych.
[/OT]
hwao
Cytat
MVC błędnie jest mylone z innymi wzorcami, które mają na celu odseparowanie interfejsu użytkownika od warstwy logicznej, takim jak na przykład „Presentation Abstraction Control”.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.