Sự khác biệt giữa MVVM và MVP

Mục đích của phát triển phần mềm là xây dựng các giải pháp giải quyết các nhu cầu và vấn đề cho người dùng và doanh nghiệp. Để đạt được điều này, các công nghệ và mô hình kiến ​​trúc khác nhau như Model-View-ViewModel (MVVM) Model-View-Presenter (MVP) được sử dụng.

Như với bất cứ điều gì được sản xuất, bước đầu tiên là giai đoạn lập kế hoạch và thiết kế. Quy trình thiết kế phần mềm có thể là một đặc tả dựa trên bộ công cụ công nghệ ưa thích và nó có thể bao gồm tất cả các hoạt động từ quan niệm - đến - lập kế hoạch - đến - thực hiện - đến - cập nhật và sửa đổi.

Nó bao gồm thiết kế kiến ​​trúc cấp thấp và cấp cao, dựa trên các mẫu kiến ​​trúc được chọn và vạch ra các giải pháp có thể sử dụng lại bằng các mẫu thiết kế.

Cấu trúc ứng dụng phần mềm

Kiến trúc phần mềm xác định cấu trúc của một ứng dụng đáp ứng các yêu cầu về kỹ thuật, vận hành và người dùng và đề cập đến cách mã được tổ chức và quản lý.

Quyết định về kiến ​​trúc của một ứng dụng phần mềm là rất quan trọng vì nó không phải là một phần dễ dàng, có thể thay đổi của một ứng dụng đã được phát triển; do đó mẫu kiến ​​trúc phải được quyết định trước khi bất kỳ chương trình nào bắt đầu.

Các mẫu kiến ​​trúc hơi khác so với các mẫu thiết kế vì phạm vi của chúng rộng hơn nhiều bằng cách giải quyết các vấn đề kỹ thuật hơn như hiệu suất và hạn chế phần cứng và tính sẵn sàng cao. Ví dụ về các mẫu kiến ​​trúc khác nhau là MVC, MVVM và MVP.

Mặt khác, các mẫu thiết kế là các thực tiễn tốt nhất được chính thức hóa tạo điều kiện cho sự phát triển hướng đối tượng có thể sử dụng lại và dễ duy trì và thay đổi hơn so với kiến ​​trúc của ứng dụng. 

Các mẫu kiến ​​trúc

Trình điều khiển xem mô hình (MVC) là một trong những mẫu kiến ​​trúc đầu tiên được phát triển cho các ứng dụng web, được phổ biến từ giữa đến cuối những năm 1990, đặc biệt là với cộng đồng Java.

Các khung mới hơn, chẳng hạn như Django cho Python và Rails (Ruby on Rails), tập trung mạnh vào việc triển khai nhanh chóng, đó là lý do tại sao MVC chiếm thị phần là điểm thu hút lớn trong các mẫu kiến ​​trúc.

Theo truyền thống, phát triển giao diện người dùng chứa rất nhiều mã để xử lý logic phức tạp, do đó các mẫu kiến ​​trúc được thiết kế để giảm mã ở cấp độ giao diện người dùng (UI), làm cho nó trở nên 'sạch' và dễ quản lý hơn.

Vì vậy, với mẫu MVC, một ứng dụng web bao gồm

  • Mô hình (dữ liệu)
  • Lượt xem (giao diện để xem và thao tác dữ liệu)
  • Bộ điều khiển (các hoạt động và hành động được thực hiện trên dữ liệu)

Các Mô hình xử lý dữ liệu và logic kinh doanh và có Không phụ thuộc giữa Mô hìnhBộ điều khiển hoặc là Lượt xem.

Các Lượt xem trình bày dữ liệu cho người dùng ở định dạng được hỗ trợ và bố cục được yêu cầu và khi Bộ điều khiển nhận yêu cầu của người dùng (để tìm nạp dữ liệu), nó gọi các tài nguyên liên quan cần thiết để hoàn thành yêu cầu.

Hãy áp dụng mô hình này để xây dựng một cửa hàng sách trực tuyến.

Người dùng có thể tìm kiếm, xem, đăng ký và mua sách, cũng như quản lý hồ sơ và danh sách sách của họ. Khi người dùng nhấp vào danh mục SCI-FI, tất cả các sách liên quan sẽ hiển thị như có sẵn.

Các Bộ điều khiển xử lý các hành động quản lý sách (liệt kê, thêm, xem, v.v.). Có thể có nhiều Bộ điều khiển với một chính Bộ điều khiển 'chỉ đạo giao thông'.

Trong ví dụ này, Bộ điều khiển được đặt tên là control_books.php và Mô hình (ví dụ: model_books.php) xử lý dữ liệu và logic liên quan đến sách.

Cuối cùng, khác nhau Lượt xem sẽ được yêu cầu, như khi thêm sách vào giỏ hàng trực tuyến hoặc khi xem chi tiết sách có hình ảnh và đánh giá.

Các điều khiển_books.php nhận hành động (yêu cầu người dùng) từ chính Bộ điều khiển (ví dụ. index.php). Các điều khiển_books.php phân tích yêu cầu và gọi model_books.php (dữ liệu) để trả về danh sách sách SCI-FI.

Trách nhiệm của Mô hình là cung cấp thông tin đó, sử dụng bất kỳ logic nào đã được áp dụng (sử dụng bộ lọc tìm kiếm). Các Bộ điều khiển sau đó lấy thông tin và chuyển nó cho người có liên quan Lượt xem (chế độ xem tìm kiếm, chế độ xem in, chế độ xem chi tiết, v.v.) và thông tin được trình bày (thông qua Lượt xem) cho người dùng đã thực hiện yêu cầu.

Đây là nguyên tắc cơ bản của mẫu MVC, đã phát triển các biến thể của các mẫu kiến ​​trúc, như Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), HVELical-Model-View-Controller (HMVC), và Model-View-Adaptor (MVA), v.v..

Mô hình MVP

Model-View-Presenter (MVP)

Các Mẫu MVP đã xuất hiện được một thời gian và là một biến thể của MVC. Nó được thiết kế dành riêng cho tự động hóa thử nghiệm trong đó mục tiêu là tăng số lượng mã có thể được kiểm tra thông qua tự động hóa và mẫu xử lý một số vấn đề với lớp trình bày, tách biệt logic nghiệp vụ khỏi UI.

Màn hình là Chế độ xem, dữ liệu mà nó hiển thị là Kiểu và Người thuyết trình nối hai cái lại với nhau.

MVP bao gồm các thành phần sau đây với các trách nhiệm riêng biệt:

  • Mô hình (xác định dữ liệu sẽ được hiển thị)
  • Lượt xem (hiển thị dữ liệu từ Mô hình và định tuyến các yêu cầu của người dùng đến Người thuyết trình).
  • Người trình bày (tương tác giữa Chế độ xem và Mô hình và nối chúng lại với nhau)

Các Lượt xem (một trang web) hiển thị và quản lý các điều khiển trang bằng cách chuyển tiếp các sự kiện (yêu cầu của người dùng) đến Người trình bày đã được bắt đầu trong Lượt xem.

Các Người trình bày phản ứng với những sự kiện này bằng cách đọc và cập nhật Mô hình để thay đổi Lượt xem và do đó, Người thuyết trình trách nhiệm là ràng buộc Mô hìnhLượt xem.

Sau khi nhìn vào MVCMVP các mẫu, điểm chung là cả hai đều có trách nhiệm riêng cho từng thành phần và chúng thúc đẩy sự tách biệt giữa Lượt xem (UI) và Mô hình (dữ liệu). Sự khác biệt đáng kể giữa các mẫu này thể hiện rõ hơn trong cách các mẫu được triển khai.

MVP có thể là một mô hình phức tạp để thực hiện cho các giải pháp tiên tiến nhưng chắc chắn có lợi ích lớn nếu được triển khai như một giải pháp được thiết kế tốt, mặc dù nó có thể không nhất thiết là lựa chọn thích hợp cho các giải pháp đơn giản.

Mẫu MVVM

Model-View-ViewModel (MVVM)

Các MVVM mẫu được thiết kế riêng cho nền tảng Windows Presentation Foundation (WPF) và Microsoft Silverlight và nó có thể được sử dụng trên tất cả XAML [i] nền tảng.

WPF là một hệ thống của Microsoft kết xuất giao diện người dùng trong các chương trình dựa trên Windows và được phát hành lần đầu tiên trong .NET Framework 3.0.

MVVM được tinh chế từ MVC và trong mô hình này, Lượt xem đang hoạt động với các hành vi, sự kiện và ràng buộc dữ liệu và Lượt xem đồng bộ hóa với ViewModel (cho phép tách bản trình bày và hiển thị các phương thức và lệnh để quản lý và thao tác Mô hình.

MVVM bao gồm ba thành phần cốt lõi:

  • Mô hình (biểu thị dữ liệu có xác thực và logic nghiệp vụ)
  • Lượt xem (Chế độ xem chịu trách nhiệm xác định cấu trúc, bố cục và giao diện của những gì người dùng nhìn thấy trên màn hình. Lý tưởng nhất là chế độ xem được xác định hoàn toàn bằng XAML, với một mã giới hạn phía sau không chứa dữ liệu logic kinh doanh. ràng buộc giữa Lượt xemViewModel để hiển thị đồng bộ hóa Model và ViewModel với View)
  • ViewModel (tách Chế độ xem khỏi Mô hình và hiển thị các phương thức và lệnh để thao tác dữ liệu (Mô hình).

Các Lượt xem nhận dữ liệu từ ViewModel (thông qua liên kết dữ liệu và phương thức) và tại thời gian chạy, Lượt xem sẽ thay đổi khi phản hồi các sự kiện trong ViewModel.

Các ViewModel trung gian giữa Lượt xemMô hình và xử lý Lượt xem Hợp lý. Nó tương tác với Mô hình - lấy dữ liệu từ Mô hình và trình bày nó cho Lượt xem để hiển thị.

Các thành phần này được tách rời khỏi nhau cho phép linh hoạt hơn để hoạt động độc lập với chúng, cô lập thử nghiệm đơn vị và trao đổi chúng, mà không ảnh hưởng đến bất kỳ thành phần nào khác.

Cấu trúc này cho phép Mô hình và các thành phần khác để phát triển độc lập, cho phép các nhà phát triển làm việc trên các khía cạnh khác nhau của giải pháp đồng thời. Ví dụ, nơi các nhà thiết kế đang làm việc trên Lượt xem, họ chỉ đơn giản tạo các mẫu dữ liệu mà không cần truy cập vào các thành phần khác. Điều này tạo điều kiện dễ dàng thiết kế lại giao diện người dùng như Lượt xem được triển khai trong XAML.

Như đã đề cập trước đó với MVP, các giải pháp đơn giản sẽ không cần kiến ​​trúc và các mẫu thiết kế, như thế giới Hello Hello! là quá cơ bản để theo bất kỳ mô hình; tuy nhiên, khi nhiều tính năng, chức năng và thành phần được giới thiệu, độ phức tạp của ứng dụng tăng lên và số lượng mã cần được quản lý.

Tóm tắt

Kể từ khi bắt đầu phát triển giao diện người dùng, các mẫu thiết kế ngày càng trở nên phổ biến để làm cho quá trình phát triển dễ dàng hơn, các ứng dụng có khả năng mở rộng hơn và nó tạo điều kiện cho việc kiểm tra dễ dàng hơn.

Minh họa sự khác biệt giữa các mẫu MVP và MVVM:

  • Ở cả hai MVPMVVM, các Lượt xem là điểm vào ứng dụng
  • Trong MVP, có một ánh xạ một-một giữa Lượt xemNgười trình bày, ở đâu trong MVVM, mối quan hệ là một-nhiều giữa Lượt xemViewModel.
  • MVP được sử dụng chủ yếu cho các ứng dụng Windows Forms và Windows Phone và MVVM được thiết kế cho Silverlight, WPF, Knockout / AngularJS, v.v..