2020.03.12

Giới thiệu mô hình MVC trong lập trình

“Mô hình MVC” có lẽ là cụm từ quen thuộc đối với các bạn lập trình viên, đặc biệt là lập trình viên website. Hôm nay, MarketEnterprise xin giới thiệu đến các bạn khái niệm MVC là gì, kiến trúc của mô hình MVC, vai trò của mô hình MVC trong lập trình, ưu điểm và nhược điểm của mô hình MVC là gì. Nào chúng ta cùng nhau bắt đầu:


Mô hình MVC là gì?

Mô hình MVC được phát triển tại phòng thí nghiệm Xerox PARC ở Palo Alto bởi TrygveReenskaug, sau đó được giới thiệu lần đầu vào thập niên 80 của thế kỷ 20.

MVC là viết tắt của Model – View – Controller. Là một mẫu kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm để tạo lập giao diện người dùng trên máy tính. MVC chia ứng dụng thành ba phần (layer) riêng biệt, độc lập và có thể tương tác được với nhau.


Các thành phần và nhiệm vụ trong mô hình MVC

Mô hình MVC chia ứng dụng thành ba phần bao gồm Model, View và Controller:

  • Model: Là nơi chứa các logic, nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị cơ sở dữ liệu (MySQL, SQL Server…), nó sẽ bao gồm các phương thức xử lý kết nối database, truy vấn dữ liệu. Là nơi lưu giữ các đối tượng mô tả dữ liệu, như là Class và các hàm xử lý get, set của Class…

  • View: Đảm nhận việc hiển thị, trả về thông tin, dữ liệu cho end-user. Ví dụ như hiển thị UI/UX, hiển thị dữ liệu ra cho người dùng xem website, hoặc có thể là một đoạn XML hoặc JSON…

  • Controller: Giữ nhiệm vụ tiếp nhận, điều hướng yêu cầu từ end-user để gọi đúng phương thức xử lý, thao tác trực tiếp với Model và trả về dữ liệu cho View. Đây còn là nơi quản lý sự trao đổi dữ liệu và nguyên tắc nghê nghiệp trong các thao tác liên quan đến mô hình. Controller giữ vai trò trung gian giữa Model và View.



Luồng xử lý trong mô hình MVC

MVC đại diện cho kiến trúc mà các nhà phát triển ứng dụng áp dụng vào dự án, chúng ta xem xét cách luồng dữ liệu ứng dụng hoạt động như thế nào nhé.

Có rất nhiều kịch bản cho luồng xử lý MVC trên ứng dụng web. Dưới đây là luồng xử lý căn bản và phổ biến nhất.

  1. Client gửi yêu cầu đến server thông qua Controller, Controller sẽ tiếp nhận yêu cầu.

  2. Controller sẽ xử lý dữ liệu đầu vào, và quyết đinh luồng đi tiếp theo của yêu cầu. Trả về kết quả hay tương tác với database để lấy dữ liệu. Nếu cần tương tác với Model để lấy dữ liệu, Controller sẽ gọi tới Model để lấy dữ liệu đầu ra. Nếu không, Controller sẽ trả về kết quả theo mũi tên số (8).

  3. Model tương tác với Database để truy xuất dữ liệu phù hợp với yêu cầu.

  4. Database trả về cho Model dữ liệu theo yêu cầu của Model.

  5. Model trả về dữ liệu cho Controller xử lý.

  6. Controller sẽ gọi đến View phù hợp với yêu cầu và kèm theo dữ liệu cho View. View chịu trách nhiệm hiển thị dữ liệu phù hợp với yêu cầu.

  7. Sau khi xử lý hiển thị dữ liệu, View trả về cho Controller kết quả (HTML, XML hoặc JSON…).

  8. Sau khi hoàn tất, Controller sẽ trả về kết quả cho Client.



Ưu điểm của mô hình MVC

  • Tạo mô hình chuẩn cho dự án, giúp cho việc tiếp cận với ứng dụng dễ dàng hơn

  • Trình tự xử lý rõ ràng, nhiệm vụ riêng biệt, độc lập với các thành phần khác và các thành phần có thể tương tác được với nhau.

  • Quy hoạch các thành phần riêng biệt giúp cho quá trình phát triển, quản lý, vận hành, bảo trì ứng dụng thuận lợi hơn, đồng thời dễ dàng kiểm soát được luồng xử lý của ứng dụng.

  • Mô hình triển khai rõ ràng, mạch lạc, xử lý nghiệp vụ tốt, dễ dàng triển khai các ứng dụng vừa.


Nhược điểm của mô hình MVC

  • Phân chia công việc và nghiệp vụ giữa các thành phần không đồng đều, trong đó Model phải xử lý rất nhiều tác vụ.

  • Sự hỗ trợ cho quá trình kiểm thử không quá tốt bởi lớp View phải phụ thuộc vào cả Controller và Model. View sẽ không thể xử lý được vấn đề gì bởi View không thể nhận yêu cầu và cũng không có dữ liệu để hiển thị. Để tiến hành kiểm thử trên View, chúng ta cần giả lập cả Controller và Model.

  • Đối với các mô hình, ứng dụng nhỏ thì việc triển khai sử dụng MVC có vẻ quá cồng kềnh.

  • Đối với các ứng dụng quy mô lớn, quy trình xử lý nghiệp vụ có tính phức tạp cao, lượng dữ liệu lớn thì mô hình MVC trở nên không còn khả dụng.


Kết luận

Hiện tại mô hình MVC đang được ứng dụng rất nhiều trong các mô hình lập trình ứng dụng web. Để việc lập trình web trở nên đơn giản, chuyên nghiệp hơn và có thể ứng dụng cho nhóm làm việc nhiều người thì việc áp dụng mô hình MVC là rất tốt và khả quan.

MVC cũng là nền tảng cho các mô hình lớn hơn được triển khai sau này, vì vậy việc tiếp cận ban đầu với mô hình này cũng rất quan trọng cho các bạn lập trình viên mới.