Tin tức Cơ bản về MVVM (Model – View – ViewModel) Pattern

Cơ bản về MVVM (Model – View – ViewModel) Pattern

Ngày đăng: - chuyên mục Bài viết đơn

Kể từ khi Microsoft giới thiệu hai nền tảng phát triển ứng dụng mới là WPF và Silverlight, đã có nhiều thay đổi trong việc xử lý sự kiện và binding dữ liệu, giữa các tầng của ứng dụng với nhau. Qua đó, hầu hết các công việc của tầng kết hợp với lớp presentation. Điều này làm nảy sinh ra nhu cầu phải có một mô hình phát triển ứng dụng mới phù hợp hơn. Và do đó, Model – View – ViewModel (MVVM) pattern ra đời và ngày càng trở nên phổ biến.

 

Đa số các ứng dụng thuộc bất kì nền tảng nào cũng có thể chia thành hai phần: giao diện (View) và dữ liệu (Model). Vì việc tách riêng các phần này, cần phải có một phần trung gian nào đó nối kết hai phần này lại, và chúng tạo nên một mô hình (pattern).

Quen thuộc và phổ biến nhất với chúng ta là mô hình MVC (Model – View – Controller) . Có thể nói MVC là một mô hình tiêu chuẩn bởi sự logic và hợp lý của nó. Điều này làm cho việc xuất hiện một mô hình phát triển ứng dụng mới có thể khiến bạn bỡ ngỡ.

Trước khi tìm hiểu về mô hình MVVM này, ta cùng điểm qua một số tính năng mới trong xu hướng phát triển ứng dụng hiện nay.

Data Binding

Đây là một khái niệm quen thuộc và làm ta nhớ lại những rắc rối mà chúng đem lại trong những nền tảng trước đây và thậm chí trong .NET. Tuy nhiên từ khi WPF ra đời, việc sử dụng kĩ thuật này thực sự chuyển sang một bước tiến mới, thỏa mãn những điều mà hầu hết các lập trình viên mong đợi. Nếu như tìm hiểu sâu về tính năng này, bạn sẽ không ngạc nhiên gì khi nhiều người nói rằng data binding là thành phần cốt lỗi tạo nên các 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ổ, các control đơn giản như TextBlock cho đến một usercontrol phức tạp. Tất cả đều được thực hiện dễ dàng, nhanh chóng, hiệu quả và có thể không cần dùng đến bất kì dòng code-behind (C#,VB.NET, …) nào.

Nếu bạn chưa tìm hiểu qua tính năng này trong WPF, tôi đã chuẩn bị sẵn cho cho bạn một số bài viết hướng dẫn dưới đây:

WPF – Data Binding cơ bản

WPF – Data Binding: Chuyển đổi dữ liệu với IValueConverter

WPF – Data Binding và Collection: Sorting, Filtering, Grouping

Data Template

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

Bạn có thể tham khảo một bài viết về Data Template của tôi tại:

WPF – Data Template

Command

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

Một command binding cho phép bạn tùy ý xác định các phương thức xử lý, phím tắt hoặc thao tác chuột để kích hoạt. Ngoài ra, các command có thể tự động thay đổi thuộc tính của các control dựa vào trạng thái chúng có thể được kích hoạt hay không.

Một bài viết cơ bản về Routed Command mà bạn có thể cần đọc qua:

WPF – Routed Command cơ bản

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

View: Tương tự như trong mô hình MVC, View là phần giao diện của ứng dụng để hiển thị dữ liệu và nhận tương tác của người dùng. Một điểm khác biệt so với các ứng dụng truyền thống là View trong mô hình này tích cực hơn. Nó có khả năng thực hiện các hành vi và phản hồi lại người dùng thông qua tính năng binding, command.

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

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

Một điểm cần lưu ý là trong mô hình MVVM, các tầng bên dưới sẽ không biết được các thông tin gì về tầng bên trên nó. Như hình minh họa dưới đây:

View - ViewModel - Model pattern

Trong bài tới tôi sẽ cung cấp một số ví dụ đơn giản trong WPF giúp bạn hiểu rõ hơn về mô hình này.

 

Liên hệ

Để được hỗ trợ và tư vấn trực tiếp hãy liên hệ với chúng tôi ngay bây giờ.
CÔNG TY TNHH PHẦN MỀM L.I.B.S
183/2, Khu phố Thạnh Lợi,
Phường An Thạnh, Thị xã Thuận An,
Tỉnh Bình Dương
Hotline: 0906442230
© 2015 LIBS Software