2010-01-16 13 views
7

Już znam różnicę między MVP i MVC. Następnie również po przejściu przez SRS aplikacji otrzymuję poprawkę, którą należy wybrać, zastosować i postępować jako Architektura apliakcji. Zgodnie z moim rozumowaniem wybrałbym MVP tam, gdzie istnieje szansa na użycie logiki Same Business Logic, z ponad 2 GUI. Podobnie jak w przypadku aplikacji z częścią publiczną (www) i Adming (winform). Jeśli nie ma takiego ... poszukaj MVC. Ponieważ mogę dokładniej śledzić wzorce Fabryki.MVP (rzutnik widoku modelu) lub MVC (kontroler widoku modelu)

Dudes, nie wiem, ale czuję, że po prostu gram ślepym strzałem, gdybym mógł wybrać między nimi. Muszę wiedzieć. Jaką masz opinię na ich temat?

Uwaga: śledzę .net i C#.

Odpowiedz

17

W moim umyśle różnice dla wszystkich odmian wzorów Model-View-Controller (MVP, Passive View, Supervising Controller, Widok Model, etc.) są dość subtelne. Chodzi o to, kto przetwarza dane i bierze dane od kogo, naprawdę. Wszyscy próbują rozwiązać ten sam problem, oddzielając coś od kolejną rzecz, a rozwiązania robią to wszystko w podobny sposób.

Jest niemal rażąco oczywiste, że pojęcia są podobne w realizacji, kiedy myślisz o nim w kategoriach wizualnych:

Simplistic MVC: 

+-------+  manipulates data 
| Model |<---------------------+ 
+-------+      | 
    |       | 
    | gets data    | 
    v       | 
+------------+ serves data +------+ 
| Controller |------------->| View | 
+------------+    +------+ 

Simplistic MVP: 

+-------+ 
| Model | 
+-------+ 
    |^
    | | get/manipulates data 
    v | 
+-----------+ serve data +------+ 
| Presenter |-------------->| View | 
|   |<--------------|  | 
+-----------+ tell changes +------+ 

Są podobne w tej klasie hierarchii może wyglądać tak samo w obu. Różnica polega jednak na różnych sposobach wyświetlania i manipulowania danymi. Kiedy wdrażasz swój własny MVC, odpowiadasz za to, jak powinien wyglądać.

To naprawdę nie ma większego znaczenia, ponieważ wszystkie opierają się na zasadzie oddzielania fragmentów kodu na jednostkach logicznych obsługujących samoobsługę i ograniczaniu powielania kodu. Tak długo, jak utrzymujesz numer code coupling low, powinien on wyglądać ładnie na końcu. Ma to znaczenie tylko wtedy, gdy chcesz być dogmatycznie konsekwentny w swojej architekturze aplikacji.

Bądźcie pragmatyczni i róbcie to, co najbardziej odpowiada waszym potrzebom, ponieważ i tak macie mieszankę. Powinno być "dość" łatwe przełączanie pomiędzy wersjami w zależności od tego, czego potrzebuje widok. Postępuj zgodnie z zasadami SOLID i powinieneś zrobić dobrze. (Patrz także this about SOLID).

Proponuję sprawdzić, czy istnieją struktury MVC lub MVP, aby zobaczyć, jak to zrobić.

+0

+ 1..always doceniając diagramy ASCII w odpowiedzi. –

+0

spoike: twoja odpowiedź jest dość wyjaśniająca .. Dzięki. – Sumeet

1

Myślę, że jesteś na dobrej drodze. MVP dla aplikacji z więcej niż jednym GUI i MVC dla aplikacji internetowych jest moją ogólną wytyczną. Jeśli to zrobisz, użyłbym frameworka takiego jak ASP .Net MVC lub Castle MonoRail, ponieważ samodzielne wykonanie instalacji może być uciążliwe. Jest tam dobra implementacja referencyjna MVC here na podstawie bazy danych Northwind, który przyszedł z SQL Server 2000.

http://nsk.codeplex.com/SourceControl/list/changesets

Powiązane problemy