Khi học lập trình web thế nào bạn cũng sẽ phải bắt buộc tiếp cận với mô hình MVC. Vậy MVC là gì? Ứng dụng của mô hình MVC trong lập trình ra sao? Nếu bạn chưa biết MVC là gì hay chỉ là một người mới bắt đầu làm quen, bài viết này rất cần thiết với bạn.
MVC là gì?
MVC là viết tắt của 3 từ Model – View – Controller, đây là một mô hình thiết kế sử dụng trong kĩ thuật phần mềm (lập trình). Mỗi một từ là mỗi một mô hình riêng nhưng cả ba tạo thành 1 mô hình lớn.
Giải thích ngắn gọn:
- M là Model: một cấu trúc dữ liệu chắc chắn, Model có chức năng chuẩn bị dữ liệu để cung cấp cho Controller.
- V là View: nơi hiển thị dữ liệu cho người dùng theo cách người dùng có thể dễ dàng hiểu và dễ dàng tương tác được.
- C là Controller: nhận lệnh từ người dùng, sau đó Controller gửi lệnh đến Model cập nhật dữ liệu, lệnh sẽ tiếp tục được truyền đến View để cập nhật giao diện hiển thị cho đúng với dữ liệu đã cập nhật trong Model cho người dùng thấy.
Sau đây, TinoHost sẽ nói rõ hơn về từng mô hình trong MVC.
Model
Model là thành phần chính đảm nhận nhiệm vụ lưu trữ dữ liệu và các bộ phận logic liên quan của toàn bộ ứng dụng đó, là cầu nối giữa View và Controller. Model chịu trách nhiệm cho các thao tác giữa Controller hoặc bất kì logic nghiệp vụ nào khác liên quan đến dữ liệu như: Xem dữ liệu, truy xuất dữ liệu,..
Ví dụ: Controller lấy dữ liệu thông tin về sản phẩm từ cơ sở dữ liệu, thì Model sẽ thực hiện cấc thao tác với dữ liệu (CSDL) và gửi lại cho CSDL hoặc cấp quyền cho View sử dụng.
View
View là giao diện dành cho phía người sử dụng, và người dùng có thể thấy được thông tin dữ liệu của MVC qua các thao tác tìm kiếm. View được tạo thành bởi dữ liệu thu thập từ dữ liệu mô hình, và giúp người dùng có cái nhìn trực quan nhất về ứng dụng, trang web.
Controller
Đây là bộ phận đảm trách xử lý các thao tác của người dùng với ứng dụng, trang web. Controller xử lí dữ liệu từ bàn phím và chuột của người dùng, sau đó thông báo tới View và Model.
Controller có thể gửi lệnh tới Model và View để thực hiện thay đổi trạng thái (Model) hoặc giao diện (View).
Một ví dụ cụ thể, khi bạn đăng một bài lên website:
- View hiển thị ra những phần để nhập tiêu đề bài viết và nội dung bài viết.
- Controller lấy dữ liệu từ 2 trường vừa mới nhập vào và gửi đến Model.
- Model nhận dữ liệu từ Controller để lưu trữ trong cơ sở dữ liệu.
Luồng đi trong MVC
Bạn có thể hình dung như sau:
- Khi có một yêu cầu từ máy trạm gửi tới server, Controller sẽ tiếp nhận và xử lý yêu cầu. Trong trường hợp cần thiết, nó sẽ liên hệ với Model để hỗ trợ làm việc với database.
- Khi xử lý xong Controller sẽ trả kết quả lại cho View. View sẽ tạo mã HTML để biến thành giao diện trực quan với người dùng và hiển thị trên trình duyệt.
Giải thích chuyên về lập trình thế này sẽ làm khó với các bạn mới lần đầu tiếp cận. Vậy ta sẽ lấy ví dụ ngay từ việc đi uống cam vắt nhé!
Ví dụ trực quan cách vận hành mô hình MVC với ly cam vắt
Bạn đang chờ bus dưới cái nắng cháy da ở bến xe Hàm Nghi, bạn tấp quán cóc gần đó, bạn “order” với cô bán nước: “Cô ơi cho con một ly cam vắt”.
Cô chủ gánh gật đầu và thực hiện quy trình tạo ra cam vắt mát lạnh bổ dưỡng cho bạn:
- Vắt cam
- Đổ nước cam vừa vắt vào ly
- Bỏ thêm đường
- Khuấy đều
- Thêm đá
- Đưa ly cho bạn
- Thanh toán
Vậy là bộ não của cô bán nước là một Controller, khi nhận được yêu cầu từ bạn, cô ấy hiểu yêu cầu và bắt đầu công việc. Những thứ như: Tay của cô ấy, các loại nguyên liệu, nước đá và ly đựng chính là Model.
Sau những bước trên ly cam vắt bổ dưỡng mát lạnh tới tay của bạn. Ly cam vắt đó chính là View, thứ được làm ra từ những nguyên liệu trong Model, được giao tận tay cho bạn thông qua Controller điều khiển đó là não cô chủ gánh.
Mối quan hệ giữa View và Controller
Ví dụ, nếu bạn vừa uống xong, bạn gái của bạn đến và muốn uống, bạn có thể “thương lượng” với ly nước cam (View) để tự đầy lên được hay không? Tất nhiên là không rồi. Bạn phải nhờ đến (Controller) cô chủ gánh làm thêm một ly nữa.
Dù cho bạn có “order” thêm một miếng bò khô hay gì đó đi chăng nữa, View – miếng bò khô sẽ không tự nhảy lên được mà bạn phải nói với cô chủ gánh – Controller để cô ấy lấy cho bạn.
Sau khi nhận được “order” có bao giờ cô chủ gánh đưa luôn cả nguyên liệu cho bạn làm hay không? Nếu có, bạn có làm hay không? Chứ mình với cương vị là khách hàng, TinoHost sẽ không làm. Không ai lại đem hết thao tác đưa lên View xử lý cả. Phần lớn các thao tác xử lý phải nằm ở Model để tối giản được View, sẽ làm cho khách hàng cảm giác được tôn trọng hơn và lần sau họ lại tiếp tục mua.
Ưu điểm và nhược điểm của MVC
Quay lại với vấn đề Website, ta sẽ nói về ưu và nhược điểm của mô hình MVC.
Ưu điểm:
- Mô hình MVC nhẹ, tiết kiệm được tối đa băng thông rộng: Người dùng có thể sử dụng ứng dụng trên web khi cần tương tác và gửi – nhận dữ liệu liên tục. Do đó website sẽ hoạt động ổn định hơn.
- Dễ dàng kiểm tra và rà soát lỗi: điều này sẽ giúp cho sản phẩm của bạn đến tay người tiêu dùng sẽ đảm bảo được chất lượng từ đó uy tín của bạn trong lòng khách hàng cũng cao hơn.
- Chức năng control: HTML, CSS và JavaScript tạo nên một nền tảng vững chắc. MVC sẽ giúp bạn control ưu việt hơn trên nền tảng các ngôn ngữ mới với nhiều hình thức khác nhau.
- Khả năng phân tách các thành phần như Model, View, Data và những thứ khác với nhau.
- Khả năng kết hợp khi sử dụng MVC bạn có thể thoải mái viết code trên nền tảng web, từ đó server cũng sẽ được giảm tải khá nhiều.
- Sự đơn giản làm bạn không cần có quá nhiều chuyên môn cũng có thể thực hiện và sử dụng được.
Nhược điểm:
Mô hình MVC thường được sử dụng trong những dự án lớn. Khi đem vào những dự án nhỏ sẽ tạo ra sự cồng kềnh, gây tiêu tốn thời gian trong quá trình phát triển, cũng như thời gian trung chuyển dữ liệu.
- Mô hình này được ứng dụng trong rất nhiều ngôn ngữ lập trình khác nhau và phổ biến nhất trong số đó là ASP.NET và PHP.
- Hệ thống MVC được phát triển bài bản sẽ giúp cho frond end, back end có thể thực hiện cũng lúc mà không bị xung đột với nhau trên cùng hệ thống.
- Chỉ cần bạn nắm rõ, hiểu được quy trình vận hành và chức năng của từng bộ phận việc triển khai tương đối dễ dàng.
TinoHost hi vọng bài viết đã cung cấp được cho bạn những kiến thức bổ ích nhất về mô hình MVC, giúp bạn phần nào đó phục vụ được công việc học tập lập trình của mình.
Những câu hỏi thường gặp
Tôi cần có những kĩ năng gì để sử dụng tốt mô hình MVC?
MVC không phải là một ứng dụng hoàn chỉnh, mà nó thường yêu cầu các lớp dịch vụ trung gian, lớp truy cập dữ liệu hoặc lớp logic. Vì thế có hiểu biết về lập trình sẽ là một lợi thế rất lớn, việc lập trình và viết dựa trên các ngôn ngữ như: PHP, Java, C#,… Sẽ rất tốt cho việc sử dụng mô hình MVC.
Tại sao chúng ta nên sử dụng mô hình MVC?
Lý do quan trọng nhất đó chính là phần View được tách biệt khỏi Model và Controller. Nó giú phân tách phần hiển thị và phần dữ liệu, cho phép sửa đổi dữ liệu mà không ảnh hưởng đến các dữ liệu khác.
Ai cần học mô hình MVC?
Mô hình MVC được áp dụng trong hầu hết các nền tảng lập trình và đối tượng phù hợp nhất để học đó chính là những lập trình viên, dù là lập trình web, lập trình ứng dụng đếu nên học.
Có thể nói rằng bất kì lập trình viên nào cũng phải học về mô hình MVC.
Theo quan điểm cá nhân của người viết thì những bạn ở ngành khác chỉ cần xem qua để biết về mô hình MVC là gì.
Có những mô hình nào khác để phát triển phần mềm không?
Ngoài MVC ra còn có mô hình MVP và MVVC. Bạn có thể tham khảo bài viết: MVC, MVP, MVVM là gì?