Mô hình MVC trong phát triển ứng dụng Web
Ngày nay có rất nhiều Framework, Source Code của mã nguồn mở của các website sử dụng kiến trúc lập trình MCV cho các ứng dụng của họ. Bài viết này sẽ giới thiệu về mô hình này và cách làm việc của mô hình MCV.
Mô hình MVC là gì?
Trong lập trình Web hiện đại, kiến trúc MCV được sử dụng rộng rãi. Rất nhiều Framework phổ biến hiện nay sử dụng MCV, tuy nhiên nó không phải là một ứng dụng mà là một khuân mẫu thiết kế, một giải pháp để giải quyết vấn đề tổ chức code.
MCV được biết tới như kiến trúc khuân mẫu, được xem như kiến trúc dựa trên các tầng (layer), đó là các tầng Controller, Model và View. Các tầng này đều có liên quan đến nhau, xem hình minh hoạ bên dưới.
1. Nhiệm vụ Controller
Các controller giữ vai trò điều khiển chính của chương trình. Một controller có trách nhiệm cho một luồng thực thi của chương trình. Trong các ứng dụng web cơ sở sử dụng MVC, nó là tầng đầu điên được gọi khi trình duyệt được truy cập URL.
2. Nhiệm vụ Model
Các Model giữ vai trò dữ liệu chính của chương trình như thông tin từ các đối tượng của cơ sở dữ liệu và các câu truy vấn SQL. Tất cả dữ liệu thu được từ các model; tuy nhiên các model không thể được gọi trực tiếp mà controller phải yêu cầu model cho đặc tả dữ liệu và rồi model thực thi các truy vấn và trả về dữ liệu cho controller.
3. Nhiệm vụ Views
View là tầng cuối cùng của kiến trúc MVC, đóng vai trò là giao diện của chương trình – GUI. Trong các ứng dụng web, nó chứa mã ở phía client như HTML, JavaScript, XML hay JSON, v.v. View là tầng nhìn thấy được với, người dùng, trong khi các model, các controller là bị ẩn đi với người sử dụng.
Một ví dụ để hiểu cách giao tiếp giữa các tầng khi người sử dụng đánh vào URL trên trình duyệt:
- Controller: Này Model ABC: Người sử dụng muốn dữ liệu XYZ, làm ơn lấy nó cho tôi.
- Model: Lấy được dữ liệu XYZ! Đưa cho Controller, nó đây.
- Controller: Này View ABC, Tôi đưa dữ liệu XYZ cho bạn.
- View: Hiển thị thông tin trên trang web cho người sử dụng xem.
Trong bài sau chúng ta sẽ tìm thực hiện một ví dụ bằng PHP và bằng ASP.Net để mô tả chức năng từng phần.