Tìm hiểu mô hình lập trình MVVM chi tiết, so sánh sở hữu những mô hình khác

Tìm hiểu về mô hình lập trình MVVM (Mannequin-View-ViewModel). MVVM có thể nói là mô hình kiến trúc được siêu nhiều lập trình viên trong cùng đồng lập trình ưa chuộng dùng nó. Mô hình này sinh ra dành cho những ứng dụng dùng ngôn ngữ XAML để định nghĩa giao diện ứng dụng như: Home windows Cellphone 8.0, 8.1 Silverlight/RT, WPF, Silverlight, Home windows RT, Common Apps,… Lợi ích từ mô hình này mang trong mình lại là siêu nhiều. Nhưng lợi ích nổi bật nhất là tách biệt việc thiết kế giao diện và lập trình code logic ko phụ thuộc nhau. Bài viết này sẽ chỉ rõ những nội dung tổng quát có thể giúp bạn có thêm dòng nhìn cụ thể MVVM là gì, bí quyết dùng và lợi ích của nó…Hãy cũng mình tìm hiểu qua bài viết này nhé.

Giới thiệu mô hình Mannequin-View-ViewModel (MVVM)

Lịch sử phát triển thành

Nhắc từ lúc Microsoft cho ra mắt 2 ứng dụng phát triển thành ứng dụng new ấy là WPF và Silverlight. Trên nên tảng ấy đã có nhiều thay thế đổi trong việc xử lý sự kiện và binding dữ liệu, giữa những tầng của ứng dụng sở hữu nhau. Vì vậy, phát sinh ra nhu cầu cần có 1 mô hình phát triển thành ứng dụng new yêu thích hơn. Do vậy Mannequin – View – ViewModel (MVVM) sample ra đời và ngày càng trở nên phổ cập}, phát triển thành hơn.

Xem thêm: WPF là gì

Mô hình MVVM là gì

MVVM ko cần là framework hay thư viện, api… nó chỉ đơn giản là chỉ dẫn bạn định nghĩa cấu trúc ứng dụng của bạn. MVVM được phát triển thành dựa trên kiến trúc MVP.

Mô hình mvvm cho phép tách biệt dữ liệu (Mannequin), mã thực thi (logic hay ViewModel) và giao diện người mua (View).

Trong những mô hình cổ điển, chúng ta thường xử lý sự kiện Click on và viết mã thực thi quản lý trên trên 1 Button nhưng sở hữu mô hình MVVM ko cho phép làm cho điều này.

Trong mô hình MVVM, những điều khiển(management) như Button, ListView, SearchBar, v.v. ko thể kết buộc quản lý tới dữ liệu mà cần thông qua thuộc tính Command – là 1 thuộc tính kiểu ICommand.

mô hình lập trình mvvm là gì

MVVM được hiểu như thế nào ?

View:

Thành phần giao diện của ứng dụng. Tương tự động như trên trong mô hình MVC, View là thành phần duy nhất mà người mua có thể tương tác được trong chương trình, nó chính là thành phần mô tả dữ liệu.

1 điểm khác biệt so sở hữu những mô hình khác là View trong mô hình này hăng hái hơn. Nó có khả năng thực hành những hành vi và phản hồi lại người mua thông qua tính năng là: binding, command.

Mannequin:

Cũng tương tự động như trong mô hình MVC. Mannequin là những đối tượng giúp truy xuất và thực hiện trên dữ liệu thực sự.

ViewModel:

Lớp trung gian giữa View và Mannequin. ViewModel có thể được xem là thành phần thay thế thế cho Controller trong mô hình MVC. Nó chứa những mã lệnh cần thiết để thực hành information binding, command.

1 định nghĩa khác về ViewModel trong mvvm:

ViewModel: Sẽ đảm nhận công việc đồng bộ dữ liệu từ mannequin lên View. Mối quan hệ giữa View và View-Mannequin là View sẽ được ánh xạ tới View-Mannequin nhưng View-Mannequin lại ko biết thông tin gì về View. Nó được ẩn dấu qua bí quyết dùng Information-binding và cơ chế của mô hình Observer. 1 View-Mannequin có thể được ánh xạ từ nhiều View.

Xem Thêm  (CUSO4) Đồng Sunphat là gì? Ứng dụng & những lưu ý lúc dùng

1 điểm cần lưu ý: Là trong mô hình MVVM, những tầng bên dưới sẽ ko biết được những thông tin gì về tầng bên trên nó. ViewModel ko hề biết gì về View, 1 ViewModel có thể được dùng cho nhiều View (one-to-many). ViewModel dùng Observer design sample để liên lạc sở hữu View (thường được gọi là binding information, có thể là 1 chiều hoặc 2 chiều tùy thuộc} nhu cầu của ứng dụng).

Cấu trúc thư phần trong MVVM

Thông thường lúc dùng sở hữu MVVM chúng ta nên tạo 3 thư phần chính chứa những file code liên quan.

cấu trúc thư phần trong mvvm

Views

Trong thư phần Views chứ những file giao diện. Và từng file giao diện đều có class code-behind đi kèm. Đặc biệt file code-behind ta sẽ ko dùng tới, mọi điều cần làm cho sẽ chuyển xuống class ViewModel. Tất nhiên là bạn có thể code trong file code-behind của XAML nhưng điều ấy sẽ phá vỡ quy ước MVVM. Bạn có thể khai báo thuộc tính datacontext hoặc vài thiết lập khác nhưng nên hạn chế tối thiểu code trên đây. Views được dùng để hài hòa sở hữu những mô hình MVVM… Nó dùng để phân phối 1 sự chia tách gọn gàng của khái niệm giữa UI và presentation logic và information.

Fashions

Trong thư phần Fashions trong ấy tạo những class chứa information và bất kỳ hợp tác validation, logic nghiệp vụ để chắc chắn chắc chắn tính toàn vẹn của information, bạn có thể tách ra thư phần Repositories khác. Chúng được dùng như 1 phần của mô hình MVVM.

ViewModels

Tương tự động ta cũng tạo 1 thư phần ViewModels. Thông thường 1 file giao diện thì ta tạo 1 class ViewModels tương ứng (có đôi lúc ta tạo nhiều class phụ giúp tinh giản file code và gọi chúng trong class ViewModels chính).

ViewModels sẽ dùng những mannequin giả dụ cần định nghĩa dữ liệu. Sự hợp tác giữa View-ViewModel giúp chúng gửi và nhận dữ liệu, để hiểu rõ ta cần tìm hiểu những khái niệm về Binding, DataContext, Behaviors SDK. Nhờ có ấy ta tách code-behind của View và đưa xuống View Mannequin.

Bên cạnh ra 1 lớp ViewModels chứa presentation logic và state của ứng dụng. ViewModels cần chứa những chức năng của ứng dụng. ViewModels định nghĩa properties, instructions, và occasions, để chuyển đổi controls trong view cần data-bind.

Information Binding

Information Binding là kĩ thuật dùng để tạo gắn kết giữa phần giao diện (UI) và dữ liệu thông qua phần enterprise logic. Nhờ có Information Binding, UI có thể tự động động cập nhật lại để hiển thị những thay thế đổi trong dữ liệu. Bên cạnh ra, Information Binding trong WPF còn tương trợ những chiều khác nhau, nghĩa là những thay thế đổi có thể cập nhật từ UI vào dữ liệu. Kĩ thuật binding trong mô hình mvvm thực sự là 1 bước tiến new, thỏa mãn những điều mà gần như lập trình viên mong đợi.

Giả dụ như tìm hiểu về tính năng này, bạn sẽ ko ngạc nhiên gì lúc nhiều người bảo rằng information binding là thành phần cốt lỗi tạo nên những cơ chế hoạt động trong WPF. Bạn có thể binding dữ liệu nguồn và đích từ bất kì đối tượng nào: như cửa sổ, những management đơn giản như TextBlock cho tới 1 usercontrol phức tạp.

Đa số được thực hành 1 bí quyết dễ dàng, nhanh chóng, hiệu quả và có thể ko cần dùng tới bất kì dòng code-behind (C#, VB.NET, …) nào.

Xem Thêm  Đánh giá về ram ảo là gì | Sen Tây Hồ

Information Template

Information Template là kĩ thuật dùng để tạo ra 1 khuôn mẫu giao diện. Template chỉ được vận dụng cho những Management. 1 template trong WPF xác định bí quyết thức và cấu trúc mà dữ liệu hoặc management sẽ được hiển thị ra màn hình.

Nói riêng về Information Template, chức năng này giúp cho dữ liệu (thuộc dạng non-visual) được gắn vào 1 cấu trúc bao gồm 1 hoặc nhiều thành phần có khả năng hiển thị. Và do ấy, dữ liệu sẽ được hiển thị lên cửa sổ 1 bí quyết trực quan theo ý muốn của lập trình viên. Cũng như Information Binding, tính năng này ko đề nghị bạn cần biết trong code-behind của ứng dụng.

Command

Information Binding và Information Template trong wpf giúp cho người mua thấy được những gì có trong dữ liệu và có thể cập nhật lại dữ liệu ấy. Tuy nhiên để nhận được tương tác từ người mua và xử lý, WPF phân phối 1 tính năng gọi là command. Những command có thể được xem như dữ liệu và được phân phối cho người mua thông qua chức năng binding.

1 command binding cho phép bạn tùy thuộc} ý xác định những phương thức xử lý, phím tắt hoặc thực hiện chuột để kích hoạt.

So sánh ưu điểm và nhược điểm của MVC MVP và MVVM

Tại đây mình ko so sánh mô hình nào nên dùng hơn mô hình nào, mà tùy thuộc} trường hợp mọi người mua mô hình nào cho thích hợp sở hữu dự án của mình. Mình xin nêu ra những ưu nhược điểm của mô hình MVP và mô hình MVVM nhé!

Ưu nhược điểm của MVC là gì?

mô hình mvc cho lập trình

Ưu điểm:

Mô hình MVC có siêu nhiều ưu điểm, cụ thể như là:

  • Nhẹ, tiết kiệm đường dẫn}: MVC ko tiêu tốn nhiều viewstate nên siêu tiết kiệm đường dẫn}. Những thực hiện gửi, nhận dữ liệu được diễn ra liên tục. Vì vậy, dùng mô hình này web site/ ứng dụng hoạt động ổn định hơn.
  • Có thể đánh giá, tìm ra lỗi phần mềm 1 bí quyết dễ dàng.
  • Dễ dàng trong việc phân tách những phần Mannequin và View.
  • Mô hình này có kết cấu đơn giản. Ko cần quá am hiểu về kỹ thuật cũng có thể dùng được.
  • Tương trợ phải chăng cho những ứng dụng phát triển thành website positioning: Bạn có thể dễ dàng tạo ra những mã website positioning URL để lôi kéo lượng truy cập đối sở hữu 1 ứng dụng bất kỳ.

Nhược điểm:

Ngoại trừ những ưu điểm nên bên trên thì MVC cũng tồn tại 1 số nhược điểm:

  • Controller và View có sự liên quan sở hữu nhau. Vì vậy, lúc thay thế đổi trên View thì đồng nghĩa bạn sẽ cần thay thế đổi trên Controller.
  • Khó thực hành chạy unit take a look at do Controller và Android API có sự liên lạc chặt chẽ sở hữu nhau.
  • Theo thời kì, Controller sẽ trở nên khó kiểm soát vì càng ngày càng có nhiều code được viết thêm vào.
  • MVC yêu thích sở hữu những dự án lớn. Sở hữu những dự án bé, mô hình này khá cồng kềnh và tốn nhiều thời kì trong việc trung chuyển dữ liệu.
  • Khiến khó khăn trong quy trình điều hướng code của dự án.

Ưu nhược điểm của MVP là gì?

MVP : Mannequin – View – Presenter

mô hình lập trình mvp

Ưu điểm:

  • Chúng ta dễ dàng viết unit take a look at cho presenter vì nó ko gắn sở hữu bất cứ view, nó hoạt động độc lập sở hữu View và ko gắn sở hữu bất cứ API nào của Android.
  • MVP có cấu trúc code rõ ràng hơn so sở hữu MVC nên khá dễ hiểu và dễ dùng. ít bug hơn, dễ dàng overview code.
Xem Thêm  For Sale và On Sale [For Sale Là Gì | On Sale Là Gì]

Nhược điểm:

  • Mô hình MVP theo thời kì, Presenter sẽ dần lớn lên do bị thêm những enterprise logic rải rác. Khách hàng sẽ siêu khó để kiểm soát và chia bé code lúc Presenter đã quá lớn.
  • Nó sẽ trở lên rườm rà lúc ta xây dựng sở hữu những ứng dụng bé, hoặc sở hữu những Exercise đơn giản.
  • Khó dùng lại logic code trong Presenter cho những View khác..

Ưu nhược điểm của MVVM: Mannequin – View – ViewModel?

Ưu điểm:

  • Thực hành Unit testing ngay bây giờ} sẽ siêu dễ dàng, vì bạn thực sự ko phụ thuộc vào view.
  • MVVM sẽ tạo sự tương tác hiệu quả giữa designer và developer.
  • Nâng cao khả năng dùng lại những thành phần hay việc thay thế đổi giao diện chương trình mà ko cần cần viết lại code quá nhiều.
  • Phát triển thành ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì…

Nhược điểm :

  • Khả năng duy trì lúc view có thể gán cả biến và biểu thức, những logic ko liên quan sẽ nâng cao dần theo thời kì, tác động tới việc thêm code vào XML.
  • Đối sở hữu dự án bé việc vận dụng mô hình MVVM gây cồng kềnh, tốn thời kì trong quy trình phát triển thành. Tốn thời kì trung chuyển dữ liệu của những thành phần.
  • Đối sở hữu dự án lớn hơn, nó gây khó khăn và mất thời kì để thiết kế những ViewModel.
  • Việc hợp tác dữ liệu cho hầu hết những thành phần gây khó khăn trong việc debug lúc cơ sở dữ liệu phức tạp.

Dùng mô hình MVC, MVP và MVVM lúc nào?

Bạn nên dùng MVP giả dụ ko thể binding dữ liệu qua DataContext (thí dụ như sở hữu Home windows Types).

Mô hình MVVM thì nên dùng trong trường hợp có thể binding dữ liệu thông qua DataContext (thí dụ như: WPF).

Còn đối sở hữu MVC nên dùng lúc việc kết nối giữa View và những phần còn lại của ứng dụng ko cần lúc nào cùng obtainable (thí dụ như net API). Lúc ấy, bạn ko thể dùng MVP hoặc MVVM hiệu quả được và đề nghị} cần chọn mô hình MVC.

Kết luận:

MVVM có thể nói là mô hình kiến trúc được siêu nhiều lập trình viên ưa chuộng và dùng. MVVM đã kế thừa những ưu điểm vốn có của MVP, hài hòa sở hữu những lợi thế của information binding đem tới 1 sample có khả năng phân chia những thành phần sở hữu từng chức năng biệt lập, dễ dàng trong việc keep, redesign. MVVM cũng đem lại khả năng take a look at siêu dễ dàng, giúp làm cho việc hiệu quả hơn cho lập trình viên.

Cảm ơn quý khách đã đọc bài viết của mình. Mong nhận được nhiều sự góp ý từ phía bạn.

Xem thêm: Ngôn ngữ lập trình C sharp là gì

Tài liệu tham khảo: https://en.wikipedia.org/wiki/ModelpercentE2percent80percent93viewpercentE2percent80percent93viewmodel

Bài viết cùng chủ đề:

  1. WPF C# cơ bản là gì? So sánh wpf sở hữu winform

Đăng kí khóa học lập trình tại Unica để được giảm tới 40% học phí tổn, hyperlink đăng kí tại đây.