Hello xin chào tất cả mọi người lại là Dev Aptech đây. Ngày hôm nay thì chúng ta sẽ tìm hiểu về mô hình MVC, HMVC và những đặc điểm nổi bật của chúng nhé.

MVC là gì? 
Source: Google


MVC có 3 thành phần gồm: Model – View – Controller

Mô hình này bao gồm 3 thành phần chính là: Model – View – Controller. MVC là một mô hình kiến trúc phần mềm khá thường nhật hiện nay. Mỗi thành phần sẽ đảm nhận một nhiệm vụ riêng biệt và vận hành độc lập với các thành phần khác.

Model

Đây là thành phần quản lý toàn bộ các cơ sở dữ liệu (database) của ứng dụng. cùng lúc ấy Model cũng chứa các lớp mô tả business logic và định nghĩa business rules cho dữ liệu (cách mà dữ liệu sẽ được thay đổi ngay và dùng).

View

View là giao diện hiển thị dành cho người dùng. Đây là nơi mà người dùng sẽ thực hiện các thao tác truy vấn, tìm kiếm,.. dữ liệu. Bộ phận này đại diện cho các thành phần UI (ví dụ như: XML, HTML,…). View tương tác với Model thông qua Observer pattern.

Controller

Controller là bộ phận có chức năng ghi nhận và điều hướng các bắt buộc (request) mà người dùng đưa ra tại View. Sau khi tiếp nhận, Controller sẽ xử lý các dữ liệu thông qua Model và cuối cùng trả kết quả, phản hồi tại View.

Các phần mềm được phát triển dựa vào mô hình MVC:

Laravel là một PHP framework, có mã nguồn mở và miễn phí, được xây dựng nhằm hỗ trợ phát triển các phần mềm, ứng dụng, theo kiến trúc MVC. Hiện nay, Laravel đang là PHP framework thường nhật nhất và tốt nhất.

Symfony là framework Open Source được xây dựng dựa trên ngôn ngữ lập trình PHP, giúp phát triển thiết kế website cá nhân. Điểm mạnh của Symfony là gì? Hiện nay, Symfony rất được ưa chuộng nhờ hai ưu điểm lớn, đó là: cộng đồng người dùng, lập trình viên đông đảo và cấu trúc đáng tin cậy, tự do triển khai.

Cách thức hoạt động của mô hình MVC

3 bộ phận Model – View – Controller của mô hình MVC tương tác qua lại với nhau tạo thành một hình tam giác. Cách thức vận hành và luồng đi của mô hình này khả năng hiểu đơn giản như sau: 

- Đầu tiên, thông qua View, người dùng sẽ đưa ra các bắt buộc (user request).Controller sau đó ghi nhận những bắt buộc này và tiếp tục gửi chúng đến Model để tiến hành xử lý.Khi dữ liệu đã được xử lý xong,Controller sẽ thông báo cho View biết.Và View sẽ trực tiếp lấy dữ liệu từ Model để hiển thị trên giao diện UI với các định dạng trực quan như HTML, XML, JSON,… để người dùng khả năng hiểu được.

- Như vậy, qua mô hình vận hành trên, ta khả năng thấy phương thức (method) xử lý user request được quyết định bởi Controller. Phương thức xử lý dữ liệu (UI logic) để hiển thị trên View thì được Model quyết định. Còn View thì chỉ có chức năng tiếp nhận bắt buộc người dùng và hiển thị dữ liệu cuối cùng mà thôi.

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

Mô hình MVC phù hợp với các dự án với các đội ngũ làm việc độc lập với nhau, như vậy các công việc đều có thể được thực hiện một cách linh hoạt. 

Như vậy, mô hình này nổi bật nhờ các ưu điểm sau:

Hỗ trợ quá trình phát triển nhanh chóng: Với đặc điểm hoạt động độc lập của từng thành phần, các lập trình viên có thể làm việc đồng thời trên từng bộ phận khác nhau của mô hình này. MVC giúp bạn tiết kiệm rất nhiều thời gian.

Khả năng cung cấp đồng thời nhiều khung View: Với mô hình MVC, bạn có thể tạo ra đồng thời nhiều khung View cho Model.

Hỗ trợ các kỹ thuật không đồng bộ: MVC có thể hoạt động trên nền tảng JavaScript. Điều này có nghĩa là các ứng dụng MVC có thể hoạt động với các file PDF, các trình duyệt web cụ thể, và cả các widget máy tính. 

Dễ dàng thao tác chỉnh sửa: Bộ phận Model hoạt động tách biệt với View đồng nghĩa với việc bạn có thể đưa ra các thay đổi, chỉnh sửa hoặc cập nhật dễ dàng ở từng bộ phận. 

Giữ nguyên trạng thái data: Mô hình MVC truyền lại dữ liệu nhưng không định dạng lại dữ liệu. Do đó, các dữ liệu này có thể được dùng lại cho các thay đổi sau này.

Hỗ trợ các nền tảng phát triển SEO: Với mô hình MVC, bạn có thể dễ dàng tạo ra các mã SEO URL để thu hút lượng truy cập đối với ứng dụng bất kỳ.

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

Khó khăn trong quá trình điều hướng code: Điều hướng khung có thể phức tạp vì mô hình này bao gồm nhiều lớp và yêu cầu người dùng thích ứng với các tiêu chí phân tách của MVC.

- Không thích hợp việc phát triển các ứng dụng nhỏ vì mô hình này yêu cầu bạn lưu trữ một số lượng lớn các file.

Nhiều khung hoạt động đồng thời: Việc phân tách một tính năng thành ba bộ phận khác nhau dễ dẫn đến hiện tượng phân tán. Do đó, đòi hỏi các nhà phát triển phải duy trì tính nhất quán của nhiều bộ phận cùng một lúc.

Như vậy, MVC khuyến khích việc thực hành mã hóa và hỗ trợ khả năng mở rộng nhanh chóng. Nếu mối quan tâm lớn nhất của bạn là bạn có thể xây dựng ứng dụng một cách nhanh chóng, dễ cập nhật, thì mô hình MVC chính là lựa chọn tốt nhất của bạn. Nếu bạn quan tâm nhiều hơn đến hiệu suất và giữ những cấu trúc tệp ít phức tạp hơn, thì MVC có thể không phải là lựa chọn phù hợp.

HMVC là gì ?
Source: Google


HMVC (Hierarchical Model – View – Controller) là một biến thể được đản sinh từ mô hình MVC (Model – View – Controller) truyền thống, bằng cách chia nhỏ mã nguồn thành các cụm MVC nhỏ hơn (tên tiếng Anh của cụm này là MVC triads) đảm nhận các tác vụ riêng biệt, từ đó giải quyết các vấn đề về khả năng mở rộng để có thể đáp ứng được tốc độ phát triển mà không phải thay đổi kiến trúc chính của hệ thống. 

Có một lợi ích to lớn của HMVC đó chính là widget hóa các cấu trúc nội dung khi mà điều này chưa được giải quyết triệt để ở mô hình MVC truyền thống. Thực ra bạn hoàn toàn có thể tạo nên các widgets của riêng mình với sự hỗ trợ từ Laravel thông qua View Composer, nhưng nó khá là khó quản lí khi dự án phát triển ngày một lớn dần.

Việc mô đun hóa làm giảm tối đa sự phụ thuộc lẫn nhau giữa các thành phần của ứng dụng, code trở nên sạch sẽ và rõ ràng, từ đó đem lại khả năng tái sử dụng tuyệt vời và việc bảo trì trở nên dễ dàng hơn so với MVC truyền thống.

Kết

Kết thúc bài viết, bạn chắc hẳn đã có những nhận định riêng cho mình về hai kiến trúc MVC và HMVC. Chúc các bạn thành công !!!

Nhận xét

Bài đăng phổ biến từ blog này