2010-06-24 28 views
7

Có vẻ như có rất nhiều cấu hình/cấu trúc MVC (MVC, MVVM, MVP, HMVC, PAC, chế độ xem tài liệu ...). Có bất kỳ kiến ​​trúc MVC 'tốt nhất' hoặc hiện đại nào được chấp nhận không? Suy nghĩ mới nhất là gì? Hoặc là tất cả miễn phí cho tất cả và/hoặc chỉ đơn giản là gắn với bất kỳ nền tảng nào phát triển trên (ví dụ: MVVM cho WPF)?Nhà nước của nghệ thuật trong kiến ​​trúc MVC?

(Cụ Tôi quan tâm đến MVC như áp dụng trong các ứng dụng máy tính để bàn/đa-client.)

+0

+1 câu hỏi hay. – adatapost

Trả lời

6

số Bạn sẽ không nhận được bất kỳ thỏa thuận về "chấp nhận hiện nay" kiến ​​trúc tốt nhất là gì.

nó là chắc chắn không phải MVC hay MVP Những kiến ​​trúc này có nguồn gốc từ cuối những năm 70 và đầu những năm 90. MVP là một cải tiến về MVC, nhưng trong hai mươi năm kể từ khi MVP được phát minh, nó đã trở nên rõ ràng rằng nó bị nhiều lỗ hổng. là lý do tại sao có rất nhiều kiến ​​trúc cạnh tranh mới.

Khái niệm về "mô hình" d "xem" được chấp nhận tốt và dường như là phổ biến đối với tất cả các mô hình kiến ​​trúc hiện tại hiện nay. Câu hỏi thực sự là cách liên kết chúng tốt nhất với nhau. Bạn cần một cái gì đó khác ngoài các mô hình và xem, nhưng những gì?

Hầu hết các kiến ​​trúc mới có xu hướng làm điều này bằng cách có liên kết xem hoặc liên kết trực tiếp với mô hình và "cái gì đó khác" bằng cách sử dụng ràng buộc dữ liệu, biểu thức hoặc cơ chế tương tự. Bằng cách đó, mọi thứ trong mô hình có thể bị ràng buộc trực tiếp bởi khung nhìn không cần phải liên quan đến "cái gì khác".

Yêu thích cá nhân của tôi là MVVM. Tôi thích thực tế là một "mô hình xem" là khái niệm chỉ là một "mô hình" với tất cả các khía cạnh của bất kỳ mô hình nào khác ngoại trừ việc nó không (thường) được ghi ra đĩa. Trong thực tế, nếu nó không khó hiểu "MVVM" có thể được đổi tên thành "MV", vì nó khá nhiều phân phối với sự cần thiết cho bất cứ điều gì khác ngoài quan điểm và mô hình. MVVM có thể được sử dụng không chỉ với WPF mà còn với bất kỳ khung trình bày nào có khả năng ràng buộc dữ liệu nâng cao. Thật không may, điều này loại trừ GWT và Cocoa. Tôi cũng thích MVVM vì nó có xu hướng loại bỏ hoàn toàn mã dư thừa hoặc lặp lại.

MVVM không phải là trình phát nâng cao duy nhất trong thị trấn. Các phương pháp tiếp cận theo hướng khía cạnh và kiến ​​trúc lệnh được xây dựng trên các mô hình truyền thống và quan điểm cũng có nguyện vọng tương tự.

Điểm mấu chốt là, đây vẫn là khu vực được nghiên cứu tích cực và không có sự đồng thuận nào đạt được tại thời điểm này. MVVM là phổ biến nhất của các kiến ​​trúc mới nhưng không phải là duy nhất. Ban giám khảo vẫn ra.

Lưu ý: Để nhận được một số ý tưởng về cách kiến ​​trúc mới hơn là cải tiến so với MVC và MVP, hãy kiểm tra this comparison of Cocoa and WPF bắt đầu từ tiêu đề "mã lặp đi lặp lại" và đi xuống đến hết phần "Kiến trúc Command".

+0

Có liên kết đến trang web mô tả MVVM một cách chi tiết không? –

+0

Có một số trang web như vậy. Bài viết trên Wikipedia về MVVM có 12 liên kết bên ngoài, một vài trong số đó dường như là những gì bạn đang tìm kiếm. http://en.wikipedia.org/wiki/Model_View_ViewModel Cảnh báo: Một số liên kết này mô tả việc tạo thuộc tính proxy trong ViewModel của bạn cho từng thuộc tính Mô hình của bạn, nhưng không làm rõ rằng đây là * chỉ * cần thiết hoặc mong muốn nếu Mô hình của bạn thiếu thông báo thay đổi thuộc tính. Tôi sử dụng một lớp dữ liệu thực hiện thông báo thay đổi thuộc tính đúng cách, vì vậy tôi chưa bao giờ có bất kỳ lý do nào để tạo các đặc tính proxy như vậy khi tôi đã sử dụng MVVM. –

3

Nghiên cứu kiến ​​trúc mới nhất được thực hiện trong những ngày cho khách hàng dày đang được thực hiện bởi Google. với kiến ​​trúc MVP.

Kiểm tra các bài viết GWT trên MVP
http://code.google.com/webtoolkit/articles/mvp-architecture.html
http://code.google.com/webtoolkit/articles/mvp-architecture-2.html

Cũng xem xét điều này http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/8b0ae5eaf84d8bc2?hide_quotes=no

Ngoài ra kiểm tra video YouTube này http://www.youtube.com/watch?v=PDuhR18-EdM

Theo như trả lời các câu hỏi của bạn, trừ nói rằng MVC là loại ngày, tôi nghĩ rằng nó là rất chủ quan trên con đường để đi. Nó không phải là nền tảng cụ thể, ngoại trừ khung bạn chọn có thể ra lệnh kiến ​​trúc :(

+0

GWT trong bối cảnh máy tính để bàn/ứng dụng khách phong phú? .. ngoài ra, tôi có đang đọc sai nó hay bạn thực sự ngụ ý rằng kiến ​​trúc MVP là của Google? –

+0

@Pavel GWT rất giống Java Swing. Tôi không ngụ ý rằng họ đã phát minh ra MVP (Không chắc chắn ai đã làm), chỉ là họ đang quảng bá nó và đã xuất bản rất nhiều. Cập nhật bài đăng của tôi đến nơi nó có thể được hiểu rằng tôi có ý đó. –

+0

** MVP đã được khoảng từ đầu những năm 90 ** và là tin cũ. Nếu câu hỏi đặt ra là yêu cầu những gì nhà nước-of-the-nghệ thuật là, MVP không phải là ngay cả trong chạy. MVP vẫn có hầu hết các vấn đề mà MVC có. Bạn có thể làm tốt hơn thế. –

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