Những người tôi đã trải qua nhiều liên kết/blog. Tôi thấy hầu hết trong số họ không thể giao tiếp rõ ràng trong ngôn ngữ layman và cũng như sự khác biệt về kỹ thuật giữa MVP, MVVM và MVC. Tôi biết những gì mọi nhân vật đại diện cho và cũng làm việc trên MVP. Nhưng không thực sự hiểu nếu ai đó hỏi tôi cùng một câu hỏi. Tại sao tôi không thể sử dụng bộ điều khiển trong MvP thay vì Trình bày? Và tại sao Xem mô hình trong MVVM thay vì trình bày và nó khác nhau như thế nào? Tôi có thể trong một sentense duy nhất nói "MVC được tối ưu hóa cho ASP.NET và cũng có mẫu trong VS, MVP được tối ưu hóa cho winforms và MVVM cho SL/WPF vì nó hỗ trợ các tính năng ràng buộc sẵn có vv". Nhưng tôi cảm thấy rằng nó không phải những gì tôi phải hiểu, nhưng chi tiết và sâu sắc. Có thể một số người ném ánh sáng vào điều này với giải thích chi tiết và cách sử dụng và lý do thực tế để chọn một. Cảm ơn tất cả ...sự khác biệt giữa MVP MVC và MVVM
Trả lời
Tôi không thể trả lời đầy đủ, tuy nhiên tôi đã cố gắng tìm hiểu một số mẫu này và có thể cung cấp cho bạn ý tưởng về một số khác biệt chính.
Tôi đã học MVVM trước và sau đó là MVC. Tôi biết MVP và cách nó hoạt động theo lý thuyết, tuy nhiên tôi chưa bao giờ thực sự xây dựng một ứng dụng với nó.
Sự khác biệt lớn nhất giữa các mẫu thiết kế có vẻ là người kiểm soát luồng ứng dụng và logic.
Trong MVVM, các lớp mã của bạn (ViewModels
) là ứng dụng của bạn, trong khi Views
của bạn chỉ là một giao diện người dùng thân thiện khá mà ngồi trên đầu của mã ứng dụng và cho phép người dùng tương tác với nó. Điều này có nghĩa là ViewModels
có một công việc rất lớn, vì chúng là ứng dụng của bạn và chịu trách nhiệm cho mọi thứ từ luồng ứng dụng đến logic nghiệp vụ.
Với MVC, Views
là ứng dụng của bạn, trong khi Controller
xử lý luồng ứng dụng của bạn. Logic ứng dụng thường được tìm thấy trong ViewModels
, được coi là một phần của M
trong MVC (sidenote: M
trong MVC không thể được coi là giống như M
trong MVVM vì lớp M
của MVC chứa nhiều chức năng hơn lớp M
của MVVM). Người dùng được cấp một màn hình (View
), họ tương tác với nó rồi gửi một cái gì đó đến số Controller
và Controller
quyết định ai làm gì với dữ liệu và trả lại View
mới cho người dùng.
Tôi chưa sử dụng MVP, tuy nhiên sự hiểu biết của tôi về nó rất giống với MVC, nhưng được tối ưu hóa cho ứng dụng dành cho máy tính để bàn thay vì ứng dụng khách/máy chủ. Views
là ứng dụng thực tế, trong khi Presenter
xử lý các sự kiện ứng dụng và logic nghiệp vụ.
Cảm ơn bạn rất nhiều Rachel đã chia sẻ kiến thức và kinh nghiệm của bạn. Nó thực sự giúp tôi rất nhiều cho sự hiểu biết. Tôi đánh giá cao nó. Tôi sẽ đi qua nhiều hơn, cảm ơn một lần nữa Madam :) Chúc mừng – Learner
FYI, MVP có hai hương vị: chế độ xem thụ động và bộ điều khiển giám sát. Chế độ xem thụ động khá khác so với MVC. Từ hiểu biết MVP của tôi cũng thích hợp cho web (GWT). –
@GarrettHall Cảm ơn, tôi thực sự không biết nhiều về MVP cả. Tôi đoán "thụ động xem" có nghĩa là nó thụ động chờ tin nhắn sự kiện và phản ứng với họ như điều khiển MVC, trong khi "giám sát điều khiển" có nghĩa là nó chịu trách nhiệm về toàn bộ dòng ứng dụng giống như ViewModel của MVVM? Loại giống như một ông chủ thụ động ngồi lại và chỉ can thiệp vào công việc của bạn nếu có vấn đề, hoặc một ông chủ điều khiển thích quản lý vi mô công việc của bạn? :) – Rachel
Trong MVC bạn có Model View Controller liên kết như một hình tam giác Trong MVP bạn có Model View Presenter liên kết lineary Về cơ bản MVC và MVP rất nhiều tương tự, tuy nhiên nó là đơn giản hơn để làm việc với MVC, thậm chí bởi vì bạn đã đã xây dựng trong MS plugin để tạo và tách MVC của bạn cung cấp lợi thế của nó Với MVP ứng dụng của bạn sẽ giống như một ứng dụng ASP.NET chung, có nghĩa là: không có Razor, không có .cshtml cho các khung nhìn, vv và bạn phải đối phó với cấu trúc trên của riêng bạn. MVVM thường được sử dụng trong Silverlight/WPF và cho những techs đó là sự lựa chọn tốt nhất. Ý tưởng MVVM và MVC khá giống nhau. Bạn cũng có thể áp dụng MVVM ở phía máy khách của ứng dụng web nếu bạn sử dụng loại trực tiếp.
Có rất nhiều trợ giúp tại đây: https://www.google.com/#q=difference+between+MVP+MVC+and+MVVM.Những gì chúng ta có thể nói rằng chưa được bao phủ đầy đủ trong các blog đó? –
@RobertHarvey: Hầu hết các blog thực sự gây nhầm lẫn và mọi người vẫn lặp lại việc dán cùng một bản sao. Tôi không thấy điều đó một cách chính xác và dễ hiểu. Tôi cũng chắc chắn, rất nhiều người như tôi vẫn không thể giải thích rõ sự khác biệt nếu được hỏi. Tôi muốn một câu người đàn ông giải thích sự khác biệt của 3 và cũng như tôi đã hỏi, nếu tôi thay thế Controller bằng Present và presenter bằng model view. Tôi muốn câu trả lời cho những loại câu hỏi này. Ngoài ra sự khác biệt về kỹ thuật. (Vì tất cả đều là mục tiêu duy nhất) – Learner
SO dành cho các câu hỏi lập trình cụ thể. – Paparazzi