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

Anonim

Mục đích của việc phát triển phần mềm là xây dựng các giải pháp nhằm giải quyết nhu cầu và các 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) và Model-View-Presenter (MVP) được sử dụng.

Cũng như bất cứ thứ gì được sản xuất, bước đầu tiên là quy hoạch và giai đoạn thiết kế. Quá 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ừ nhận thức từ kế hoạch đến triển khai đến cập nhật và sửa đổi.

Bao gồm thiết kế kiến ​​trúc cấp thấp và cao cấp, dựa trên các mẫu kiến ​​trúc đã chọn, và lập bản đồ các giải pháp tái sử dụng bằng cách sử dụ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 ứng dụng đáp ứng các yêu cầu về kỹ thuật, vận hành và người sử dụng và đề cập đến cách thức tổ chức và quản lý mã.

Quyết định 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ễ thay đổi của một ứng dụng đã được phát triển; do đó mô hình kiến ​​trúc phải được quyết định trước khi bất kỳ chương trình bắt đầu.

Mô hình kiến ​​trúc hơi khác với các mẫu thiết kế vì phạm vi của chúng là rộng hơn rất nhiều bằng cách giải quyết các vấn đề kỹ thuật khác như hiệu suất và hạn chế của 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ế được hình thành các phương pháp hay nhất để tạo ra sự phát triển hướng đối tượng có thể tái sử dụng và dễ bảo trì và thay đổi hơn so với kiến ​​trúc của ứng dụng.

Mô hình Kiến trúc

Model View Controller (MVC)

là một trong những mô hình 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 nineties, đặc biệt với cộng đồng Java.

Các khuôn khổ mới hơn, chẳng hạn như Django cho Python và Rails (Ruby on Rails), tập trung mạnh mẽ vào việc triển khai nhanh, đó là lý do tại sao MVC chiếm thị phần như là điểm thu hút lớn trong các mô hình 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 nên 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ó "sạch hơn" 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ẫu

(dữ liệu)

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

xử lý logic dữ liệu và kinh doanh và không phụ thuộc giữa Mẫu và Controller < hoặc Xem . Xem hiển thị dữ liệu cho người dùng ở định dạng được hỗ trợ và cách bố trí yêu cầu, và khi

Controller nhận yêu cầu của người dùng (để lấy dữ liệu), nó gọi các tài nguyên 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 chuột vào thể loại SCI-FI, tất cả sách có liên quan sẽ hiển thị như có sẵn.

Bộ điều khiển

xử lý các hành động quản lý sách (danh sách, thêm, xem, vv). Có thể có nhiều

Bộ điều khiển với một Điều khiển chính 'chỉ đạo giao thông. Ví dụ này, Controller được đặt tên controller_books. php và

Mẫu (ví dụ: model_books. php) xử lý dữ liệu và logic liên quan đến sách. Cuối cùng, yêu cầu Số lượt xem khác nhau, như khi thêm sách vào giỏ hàng trực tuyến hoặc khi xem chi tiết sách với hình ảnh và bài đánh giá.

Bộ điều khiển. php nhận được hành động (yêu cầu của người dùng) từ

Controller (ví dụ: chỉ mục . php (dữ liệu) để trả lại danh sách sách SCI-FI. Trách nhiệm của Mẫu là cung cấp thông tin đó, sử dụng bất kỳ logic nào đã được áp dụng (sử dụng các bộ lọc tìm kiếm). Controller

sau đó lấy thông tin và chuyển nó tới Xem (xem tìm kiếm, chế độ xem in, chi tiết xem vv) và thông tin được trình bày (thông qua View >) cho người dùng đã khởi tạo yêu cầu. Đây là các nguyên tắc cơ bản của mô hình MVC, đã phát triển các biến thể đẻ trứng của các mẫu kiến ​​trúc, như Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (MVP) Mô hình MVP đã tồn tại khoảng một lúc và mô hình MVP là một biến thể của MVC. Nó được thiết kế đặc biệt để kiểm tra tự động hóa, 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ô hình này giải quyết một số vấn đề với lớp trình bày, cô lập logic kinh doanh từ UI.

Màn hình là View, dữ liệu hiển thị là Model, và Presenter nối cả hai.

MVP

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

Mẫu (xác định dữ liệu được hiển thị) Xem

(hiển thị dữ liệu từ Mẫu và định tuyến các yêu cầu của người dùng đến Người thuyết trình).

Presenter (tương tác giữa Chế độ xem và Mô hình và nối chúng với nhau)

  • Xem
  • (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) tới Người trình bày
  • được bắt đầu trong Xem

. Presenter đáp ứng các sự kiện này bằng cách đọc và cập nhật Model để thay đổi Xem và vì vậy trách nhiệm của

Người thuyết trình là để ràng buộc Mẫu Xem . Sau khi xem mẫu MVCMVP , tính phổ biến có trách nhiệm riêng biệt đối với mỗi thành phần và thúc đẩy sự tách biệt giữa Xem (UI) và

Mẫu (dữ liệu). Sự khác nhau đáng kể giữa các mẫu này rõ ràng hơn trong cách thức thực hiện các mẫu. 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ó những lợi ích to lớn nếu được thực hiện như một giải pháp được thiết kế tốt, mặc dù nó không nhất thiết là sự lựa chọn thích hợp cho các giải pháp đơn giản. Mô hình MVVM Model-View-ViewModel (MVVM) Mẫu MVVM được thiết kế đặc biệt cho nền tảng Windows Presentation Foundation (WPF) và Microsoft Silverlight và nó có thể được được sử dụng trên tất cả các nền tảng

XAML [i] .

MVC

MVC

được điều chỉnh từ MVC và trong mô hình này, Xem đang hoạt động với hành vi, sự kiện và ràng buộc dữ liệu và Xem

đồng bộ hóa với

ViewModel (cho phép tách bản trình bày và cho thấy các phương pháp và các lệnh để quản lý và vận dụng Mô hình . MVVM bao gồm ba thành phần cốt lõi: Mẫu (thể hiện dữ liệu với xác nhận và logic kinh doanh) Xem (Xem) có trách nhiệm xác định cấu trúc, cách bố trí, và sự xuất hiện của những gì người dùng nhìn thấy trên màn hình.Lý do được định nghĩa hoàn toàn với XAML, với một mã sau đằng sau không có logic kinh doanh. -máy giữa Xem ViewModel

để displayenables đồng bộ hóa mô hình và ViewModel với View) ViewModel

  • (ngăn cách View from th e Model và phơi bày các phương pháp và lệnh để thao tác dữ liệu (Model).
  • Xem nhận dữ liệu từ ViewModel (thông qua phương pháp và ràng buộc dữ liệu) và khi chạy, Xem sẽ thay đổi khi đáp ứng các sự kiện trong
  • ViewModel .

ViewModel trung gian giữa XemMẫu và xử lý logic Xem . Nó tương tác với

Mô hình - lấy dữ liệu từ mô hình và đưa nó tới Xem để hiển thị. Các thành phần này tách rời nhau cho phép linh hoạt hơn khi hoạt động trên chúng một cách độc lập, cô lập kiểm tra đơn vị và trao đổi chúng ra 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 View , họ chỉ đơn giản là tạo ra 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 khi Xem được thực hiện 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ư "Hello World!"Là quá cơ bản để làm theo bất kỳ khuôn mẫu nào; tuy nhiên, khi có thêm nhiều tính năng, chức năng và thành phần, sự 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 trở nên dễ dàng hơn, các ứng dụng có thể mở rộng hơn và tạo điều kiện thử nghiệm dễ dàng hơn. Sự khác biệt minh họa giữa MVP và MVVM Patterns: Trong MVP

MVVM , Xem

là điểm vào ứng dụng > Trong

MVP

, có một-một-bản đồ giữa

  • Xem Trình bày , trong đó MVVM , mối quan hệ là một -to-nhiều giữa Xem
  • ViewModel . 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, vv