2.1 .Tổng quan về FRAMEWORK
2.2. Mô hình MVC (Model-Control-View)
2.2.1 Khái niệm
MVC là một kiến trúc phần mềm đƣợc chia ba phần tách biệt: Model (mô hình dữ liệu), View (phần hiển thị hay giao diện ngƣời dùng), Controlller (phần điều khiển hay điều khiển chức năng) của một thành phần hay một ứng dụng thành, vì thế khi thay đổi trên một trong ba thành phần đó sẽ ảnh hƣởng ít nhất đến các thành phần còn lại.
MVC thƣờng đƣợc hiểu là một mẫu thiết kế phần mềm. tuy nhiên MVC mang nhiều ý nghĩa về kiến trúc phần mềm hơn. MVC đƣợc tổng hợp từ nhiều các mẫu thiết kế nhỏ hơn: View áp dụng mẫu thiết kế Composite Pattern, giao tiếp giữa View và Model sử dụng mẫu Observer Pattern; Controller sử dụng mẫu Strategy Pattern hay command Pattern; và một số mẫu khác nhƣ: Mediator Pattern; Decorator Pattern, Adaptor Pattern,…
a. Model (Mô hình dữ liêu)
Model nắm giữ các dữ liệu, thực hiện các chức năng liên quan đến việc truy cập dữ liệu hay thay đổi các dữ liệu của chƣơng trình. Model thƣờng đƣợc chia thành hai hệ thống con: Các trạng thái nội tại của hệ thống và các hành động làm thay đổi trạng thái của hệ thống.
Mỗi một ứng dụng có một Model khác nhau. Ví dụ, Model của một thanh cuộn (Scrollbar) có thể chứa các thông tin hiện tại của nó, giá trị lớn nhất, nhỏ nhất hay độ rộng của thumb. Model có thể chịu trách nhiệm giao tiếp một cách gián tiếp với View và Controller. Gián tiếp có nghĩa là Model không hề biết các View và Controller của nó – nó không duy trì các tham chiếu đến chúng. Thay vào đó, Model gửi đi các thông báo đến View và Controller khi có sự thay đổi trạng thái của hệ thống.
b. View (Hiển thị hay giao diện người dùng)
View xác định việc hiển thị trực quan dữ liệu của Model. View chịu trách nhiệm cập nhật những thay đổi của nó trên màn hình. View có thể nhận những thông báo gián tiếp từ Model hoặc các thông điệp từ Controller.
c. Controller (Điều khiển hay Quản lý chức năng)
Controller là hành vi của ứng dụng. Nó tập trung việc nhận các yêu cầu của ngƣời dùng, chuyển các yêu cầu của ngƣời dùng đến chức năng xử lý yêu cầu của Model và chuyển kết quả trả về cho View hiển thị. Controller có thể nhận thông điệp từ View và những thông điệp gián tiếp từ Model.
Hình dƣới chỉ ra Model, View, Controller làm việc với nhau nhƣ thế nào để tạo ra thanh cuộn. Model nắm giữ thông tin về giá trị nhỏ nhất, lớn nhất. View xác định chính xác vẽ thanh cuộn. Controller chịu trách niệm xử lý các sự kiện chuột. Kết quả thanh cuộn mang đầy đủ chức năng của MVC.
2.2.2. Sự tương tác giữa các thành phần của MVC
Trong kiến trúc MVC, Model chịu trách nhiệm thông báo cho View biết khi có sự thay đổi và cho phép View lấy các thông tin về trạng thái và Controller có thể truy cập vào các chức năng của Model. View lấy dữ liệu từ Model và chịu trách nhiệm hiển thị chúng. Nó tự động cập nhật việc hiển thị khi có sự thay đổi trong Model. Đồng thời View cũng làm nhiệm vụ chuyển các yêu cầu của ngƣời dùng đến Controller. Controller lựa chọn chức năng xử lý yêu cầu của ngƣời dùng và lựa chọn thành phần hiển thị tiếp theo dựa vào tƣơng tác của ngƣời dùng hoặc dựa vào kết quả xử lý trả về từ Model.
Hình 2.3 Mô hình tƣơng tác MVC
Một ứng dụng thông thƣờng sử dụng một bộ điều khiển cho một nhóm các chức năng liên quan nào đó. Một số ứng dụng khác có thể sử dụng nhiều bộ điều khiển độc lập cho mỗi loại ngƣời dùng vì thế có thể có nhiều View khác nhau ứng với mỗi loại ngƣời dùng khác nhau.
2.2.3. Một số đặc điểm của MVC
Một điều dễ thấy đó là View thƣờng xuyên đƣợc thay đổi theo thời gian cho phù hợp với từng loại ngƣời dùng, trong khi Model thì lại rất ít khi thay đổi. Do đó, việc phân tách View và Model giữ cho Model không bị thay đổi khi viết lại giao diện. Hơn nữa, hoạt động của mỗi chức năng trong hệ thống thƣờng là phức tạp và khó hiểu cho tới khâu thực thi cuối cùng. Vì thế, trong một số dự án, các View có
thể đƣợc thiết kế ngay trong các khâu đầu tiên của quá trình thiết kế còn Model sẽ đƣợc hoàn thiện dần trong suốt quá trình phát triển.
Mặc dù Model và Controller là hai khái niệm riêng rẽ trong kiến trúc MVC nhƣng thực tế chúng lại có mối quan hệ rất chặt chẽ. Mỗi thay đổi liên quan đến Model sẽ tạo ra một thay đổi tƣơng ứng đến Controller.
Kiến trúc MVC cho phép một ứng dụng có thể đƣợc xây dựng trên nhiều ngôn ngữ lập trình khác nhau. Do Model và Controller là độc lập với View nên View chỉ cần thông báo cho Controller các sự kiện ngƣời dùng và cập nhật những thay đổi của Model.
Những ƣu điểm nổi bật của mô hình MVC
Đặc tính Mô tả
Khả năng mở rộng
Có thể mở rộng các chức năng của hệ thống thông qua việc bổ sung các Module mới tại View mà không phải xây dựng lại toàn bộ ứng dụng
Khả năng sử dụng lại ứng dụng
Các ứng dụng có thể đƣợc sử dụng lại thay vì phải phát triển mới khi có nhu cầu thay đổi hoặc bổ sung chức năng Tích hợp với các hệ
thống có sẵn
Dễ dàng xây dựng các cầu nối với các hệ thống khác do hệ thống đƣợc xây dựng theo Module và đƣợc tổ chức tốt Hỗ trợ nhiều loại cơ
sở dữ liệu
Với việc tách riêng phần Data Access, có thể sử dụng nhiều cơ sở dữ liệu khác nhau