Giải thích dễ hiểu về MVC – Mô hình MVC là gì?



Trong thế giới Internet hiện đại, các trang web đang ngày càng có xu hướng tương tác nhiều hơn với người dùng. Giờ đây website không chỉ đơn giản là HTML, CSS nữa. Việc tương tác hai chiều giữa người dùng và ứng dụng càng nhiều khiến cho website không thể thực hiện chỉ với một trang tĩnh. Giờ đây,có rất nhiều kỹ thuật mới ra đời, nhiều mô hình thiết kế ứng dụng để tăng tính động của website. Có nhiều mô hình mà bạn có thể đã nghe tới như MVC, MVVM, MVP… Nhưng nổi bật nhất và cũng là ra đời lâu đời nhất chính là MVC. Mình tin chắc rằng, khi bạn đi phỏng vấn kiểu gì cũng gặp phải câu hỏi mô hình MVC là gì? Tại sao phải dùng MVC? Dù chủ đề về MVC không phải là mới, và cũng có rất nhiều bài viết về nó. 
Giải thích dễ hiểu về MVC – Mô hình MVC là gì?

MVC là gì? MVC có thực sự quan trọng đáng để học không?

Ở thời điểm hiện tại, câu trả lời chắc chắn là: CÓ

MVC thực sự rất quan trọng. Bởi nó là mô hình cơ bản mà hầu hết các ứng dụng web sử dụng. Kể cả các ứng dụng di động, ứng dụng desktop… cũng sử dụng mô hình MVC này.

Khi bạn hiểu được mô hình MVC, bạn sẽ dễ dàng học và tìm hiểu các mô hình hiện đại hơn. Cũng giống như việc khi học lập trình, mọi người đều khuyên bạn nên học ngôn ngữ C/C++  trước. Khi đã nắm cơ bản ngôn ngữ lập trình C/C++, việc học thêm các ngôn ngữ lập trình khác như JAVA, Python, Ruby… trở nên dễ dàng hơn rất nhiều.

Có rất nhiều biến thể xung quanh ý tưởng cơ bản của MVC. Khái niệm ban đầu được tạo ra vào khoảng năm 1978 bởi Trygve Reenskaug. Nó ra đời nhằm giúp người cuối có thể thao tác và điều khiển một hệ thống máy tính cơ bản theo cách trực quan hơn.

Tư tưởng chính của MVC

Mình sẽ không sử dụng các thuật ngữ chuyên ngành để giải thích về mô hình MVC.  Thay vào đó, mình lấy một ví dụ từ cuộc sống.

Hãy thử tưởng tượng, bạn đi vào cửa hàng bán trà sữa, bạn thấy menu như sau:

Ví dụ minh họa mô hình MVC
Ví dụ menu trà sữa – hình ảnh mang tính chất minh họa cho bài viết

Chà! nhìn nhiều món hấp dẫn quá. Bạn quyết định chọn loại Trà sữa truyền thống và báo cho nhân viên cửa hàng.

Nhân viên tiếp nhận yêu cầu. Tất nhiên là anh ta hiểu phải làm gì, phải pha chế loại vị mà bạn chọn ra sao. Anh ta sẽ sử dụng máy pha trà sữa để kết hợp các nguyên liệu pha chế ra cốc trà sữa đúng với yêu cầu của bạn. Sau khi hoàn thành thì bàn giao cho bạn thưởng thức.

🙆 Có ích cho bạn: Dịch vụ tạo web miễn phí – tạo website bán hàng FREE

Trong ví dụ trên, chúng ta thấy được 3 đối tượng riêng biệt, đại diện cho một phần của mô hình MVC:

  • Máy pha trà sữa (MODEL)
  • Cốc trà sữa mà bạn nhận được (VIEW)
  • Nhân viên phục vụ (CONTROLLER)
Giái thích về mô hình MVC
Giái thích về mô hình MVC

Giải thích ví dụ MVC

Khi bạn đặt một cốc trà sữa truyền thống, trong đầu bạn đã hình dung ra mình sẽ nhận được cốc trà với vị như nào, màu sắc ra sao…

Điều này cũng giống như khi bạn trên trang web vậy. Ví dụ, bạn mở Facebook, nhấn nút “Bạn bè” để xem danh sách bạn bè của mình. Bạn cũng mong đợi một danh sách bạn bè hiện ra và tất nhiên là bạn cũng phần nào hình dung ra danh sách đó.

Khi bạn nhấn nút “Bạn bè”, tức là bạn yêu cầu máy chủ Facebook xử lý và trả về cho bạn danh sách, giống như bạn yêu cầu nhân viên (Controller) cửa hàng trà sữa vậy.

Khi nhận yêu cầu, máy chủ Facebook sẽ lấy tất cả bạn bè trong cơ sở dữ liệu, giống như máy pha trà sữa (Model) sử dụng các nguyên liệu để làm trà sữa.

Cuối cùng, sau khi hoàn thành thì máy chủ Facebook trả về cho bạn một danh sách bạn bè.

Đến đây bạn đã hiểu MVC là gì rồi đúng không? Đã hiểu vai trò của từng thành phần trong MVC.

Tóm lại MVC là gì?

MVC là viết tắt của Model – View – Controller. Trong đó:

  • M là Model: là nơi tương tác với cơ sơ dữ liệu gồm Đọc – Ghi – Cập nhật – Xóa (CRUD).
  • V là View: Hiển thị kết quả người dùng theo cách dễ hiểu dựa trên hành động của người dùng.
  • C là Controller: Nhận yêu cầu từ người dùng, gửi yêu cầu đến cho Model để xử lý dữ liệu, trả kết quả đến View để cập nhập giao diện hiển thị.
MVC là gì
MVC là gì? Cơ chế hoạt động của MVC

Mô hình MVC trong Web framework

Controller
Controller là nơi xử lý các request tới. Trong một số web framework, Controller có thể tích hợp luôn phần router, tức là nơi định nghĩa các URL cụ thể để ánh xạ tới các chức năng tương ứng cho mỗi request.

  • Ví dụ URLs:
  • website.com/profile/ --> returns your profile
  • website.com/friends/ --> returns list of friends
  • website.com/friend={userName}/ --> returns specific friend

Model
Đây là nơi bạn tương tác và làm việc với cơ sở dữ liệu. Tại model, bạn có thể lấy dữ liệu từ local, hoặc request tới nơi khác để lấy dữ liệu.

  • User:- userName- firstName- lastName- friends

View
Đây là các HTML được trả về sau khi xử lý xong yêu cầu của bạn. Nếu xử lý thành công, bạn sẽ nhận được một trang có danh sách bạn bè. Còn nếu bị lỗi, bạn sẽ nhận được một trang báo lỗi, ví dụ 404 “Not found” chẳng hạn.

    • > >Friend 1: {friendList[0].userName}
>Friend 2: {friendList[1].userName}>Friend 3: {friendList[2].userName} ...

Tạm kết

Tóm lại, MVC là mô hình thiết kế ứng dụng web vô cùng phổ biến. Nó giúp bạn tách biệt phần logic business với phần View, nhờ đó dễ Unit Test hơn.

 

Mong bài viết giúp ích được các bạn phần nào trong thiết kế Web. Hãy nhấn nút để mọi người cùng học hỏi kiến thức mới nhé. Cảm ơn các bạn đã quan tâm Forum.