2010-01-16 39 views
7

Tôi đã biết sự khác biệt giữa MVP và MVC. Sau đó, sau khi đi qua SRS của một ứng dụng tôi nhận được trong một sửa chữa mà một trong những cần phải được chọn, áp dụng và theo sau là Applcation Kiến trúc. Theo hiểu biết của tôi, tôi sẽ chọn MVP, nơi có cơ hội sử dụng Logic nghiệp vụ tương tự, từ hơn 2 GUI. Giống như một ứng dụng có phần công khai (www) và Adming (winform). Nếu không có ... hãy tìm MVC. Bởi vì tôi có thể làm theo Nhà máy patters chính xác hơn.MVP (Model View Presenter) hoặc MVC (Model View Controller)

Dudes, tôi không biết nhưng tôi cảm thấy mình chỉ bị bắn mù nếu tôi phải chọn trong số đó. Tôi cần biết. Ý kiến ​​của các bạn là gì?

Lưu ý: Tôi theo dõi .net và C#.

Trả lời

17

Trong tâm trí, sự khác biệt cho tất cả các biến thể của mẫu Chế độ xem mô hình (MVP, Passive View, Supervising Controller, Xem mô hình, etc.) khá tinh tế. Đó là tất cả về những người xử lý dữ liệu và lấy dữ liệu từ ai, thực sự. Tất cả họ đều đang cố gắng giải quyết cùng một vấn đề, tách riêng một điều gì đó từ một điều khác và các giải pháp thực hiện tất cả điều đó theo cách tương tự.

Nó gần như là hiển nhiên rõ ràng rằng các khái niệm tương tự trong việc thực hiện khi bạn nghĩ về nó trong điều kiện thị giác:

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 +------+ 

Họ giống nhau ở chỗ hệ thống phân cấp lớp có thể trông giống nhau ở cả hai. Tuy nhiên, sự khác biệt là những cách hiển thị và thao tác dữ liệu khác nhau. Khi bạn tung ra MVC của riêng bạn thì bạn sẽ chịu trách nhiệm về cách thức nó trông như thế nào. Nó không thực sự quan trọng vì chúng đều dựa trên nguyên tắc phân tách các đoạn mã thành các thực thể logic tự phục vụ và giảm trùng lặp mã. Miễn là bạn giữ code coupling low nó sẽ làm việc ra độc đáo cuối cùng. Nó chỉ quan trọng nếu bạn muốn được theo cách giáo lý với kiến ​​trúc của ứng dụng của bạn.

Hãy thực dụng về điều đó và làm điều đó phù hợp với nhu cầu của bạn tốt nhất vì bạn sẽ kết thúc với một bản mix. Nó phải là "khá" dễ dàng để chuyển đổi giữa các biến thể tùy thuộc vào nhu cầu xem. Tuân theo nguyên tắc SOLID và bạn nên làm tốt. (Xem thêm this about SOLID).

Tôi khuyên bạn nên xem xét nếu có khung MVC hoặc MVP để xem cách thực hiện.

+0

+ 1..always tăng giá sơ đồ ASCII trong câu trả lời. –

+0

spoike: phản ứng của bạn là khá giải thích .. Cảm ơn. – Sumeet

1

Tôi nghĩ bạn đang đi đúng hướng ở đây. MVP cho các ứng dụng có nhiều GUI và MVC cho các ứng dụng web là hướng dẫn chung của tôi. Nếu bạn làm một trong hai, tôi sẽ sử dụng một khuôn khổ như ASP. Net MVC hoặc MonoRail của Castle bởi vì làm đường ống dẫn nước trên của riêng bạn có thể là một nỗi đau. Có một thực hiện tham khảo tốt về MVC here dựa trên cơ sở dữ liệu Northwind đi kèm với SQL Server 2000.

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

Các vấn đề liên quan