MVC là gì?
MVC là một mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính, mô hình này đã được tạo có có lịch sử từ rất lâu và bản thân nó cũng đã xuất hiện nhiều biến thể khác nhau và nhiều mô hình khác cũng được ra đời như MVP, MVVM…Nhưng mô hình MVC vẫn được sử dụng cho nhiều ứng dụng nhiều framework có thể kể đến là Framework Laravel.
Mô hình MVC(MVC Parttern) thường được dùng để phát triển giao diện người dùng, mô hình này cung cấp các thành phần cơ bản để thiết kế một chương trình cho máy tính hoặc điện thoại di động và các ứng dụng, trang web.
Cách hoạt động của mô hình MVC.
MVC là viết tắt của Model - View - Controller mỗi thành phần đều có nhiệm vụ riêng và độc lập với nhau, trong đó:
- Model chính là tầng xử lý dữ liệu và tương tác với CSDL, có chức năng lưu trữ dữ liệu của ứng dụng và là cầu nối giữa View và Controller. Model có thể là cơ sở dữ liệu Mysql, MongoDB hoặc file xml…
- Controller là lớp xử lý logic, sau khi controller nhận được một yêu cầu nào đó từ người dùng thông qua view nó sẽ xử lý yêu cầu tại controller đó hoặc gọi đến Model để lấy dữ liệu (nếu cần thiết) và cuối cùng là trả kết quả đã xử lý về lại cho người dùng.
- View là phần hiển thị giao diện và tiếp nhận các yêu cầu (request) từ người dùng và trả về kết quả sau khi xử lý.
Lịch sử hình thành của mô hình MVC
MVC được tiến sĩ Trygve Reenskaug đưa vào ngôn ngữ lập trình Smarlltalk-76 khi ông đến trung tâm nghiên cứu xerox Palo Alto (PARC) vào giữa năm 1970 của thế kỷ 20. Sau đó việc triển khai trở nên phồ biến trong các phiên bản khác của Small-Talk-80.
Ưu và nhược điểm của mô hình MVC
Ưu điểm của mô hình MVC.
- Dung lượng nhẹ tiết kiệm băng thông(Bandwidth) vì không sử dụng viewstate nên khá tiết kiệm băng thông. Việc giảm băng thông giúp website hoạt động ổn định hơn.
- Kiểm tra lỗi dễ dàng giúp viết unit và test case nhanh chóng.
- Các thành phần tách biệt vì thế giúp dễ dàng trong quá trình phát triển ứng dụng. Giúp phân chia công việc cho nhiều người cùng phát triển mà không ảnh hưởng đến ứng dụng.
Nhược điểm của mô hình MVC.
- MVC đa phần phù hợp với công ty chuyên về website hoặc các dự án lớn thì mô hình này phù hợp hơn so với với các dự án nhỏ, lẻ vì khá là cồng kềnh và mất thời gian. Tốn thời gian trung chuyển dữ liệu của các thành phần.
Vì sao nên sử dụng mô hình MVC
Quy trình phát triển nhanh hơn: MVC giúp phát triển ứng dụng, phần mềm một cách nhanh chóng và song song. Mô hình MVC khi được dùng để phát triển bất kỳ ứng dụng website, một lập trình viên có thể làm việc trên View và một người khác có thể làm việc với Controller để tạo logic nghiệp vụ cho website đó mà không bị chồng chéo hay xung đột lẫn nhau.
Vì mô hình MVC có các Model-Controller-View tách biệt vì thế giúp cho quá trình code trở nên dễ dàng hơn cấu trúc dự án dễ đọc và sửa lỗi hơn. Vì thế khi áp dụng mô hình MVC vào một dự án thiết kế website sẽ giúp cho thời gian triển khai nhanh hơn gấp 3 lần so với bình thường.
Khả năng cung cấp nhiều chế độ view: Trong mô hình MVC, bạn có thể tạo nhiều View với chỉ một mô hình. Ngày nay, nhu cầu có thêm nhiều cách mới để truy cập ứng dụng và đang ngày càng tăng cao. Do đó, việc sử dụng MVC để phát triển ứng dụng, website chắc chắn là một giải pháp tuyệt vời. Hơn nữa, với phương pháp này, việc nhân bản code rất hạn chế. Vì nó tách biệt dữ liệu và logic nghiệp vụ khỏi màn hình.
Các sửa đổi không ảnh hưởng đến toàn bộ mô hình: Trong một dự án thực tế thì việc thay đổi thường xuyên là điều không thể tránh khỏi, ví dụ như khi thiết kế website bán hàng cứ mỗi dịp lễ lớn thì hay có sản phẩm giảm giá, lúc này sếp bạn yêu cầu thay đổi lại background, logo, hoặc thay lại toàn bộ giao diện trang chủ website cho phù hợp thì lúc này bạn sẽ làm như thế nào ? Nếu bạn đang sử dụng mô hình MVC thì bạn không có vấn đề gì phải lo lắng vì bạn có thể thoải mái thay đổi giao diện mà không ảnh hưởng gì đến business logic phía dưới.
MVC Model trả về dữ liệu mà không cần định dạng: MVC pattern có thể trả về dữ liệu mà không cần áp dụng bất kỳ định dạng nào khác. Do đó, các thành phần giống nhau có thể được sử dụng với những giao diện khác nhau. Ví dụ: tất cả loại dữ liệu đều có thể được định dạng bằng HTML. Ngoài ra, nó cũng có thể được định dạng bằng Macromedia Flash hay Dream Viewer.
Hỗ trợ kỹ thuật Asynchronous: Kiến trúc MVC có thể được tích hợp với cả JavaScript Framework. Có nghĩa là, các ứng dụng MVC có thể hoạt động ngay cả với các file PDF, trình duyệt riêng cho web hay các widget trên desktop. Ngoài ra, MVC cũng hỗ trợ kỹ thuật Asynchronous, giúp các developer phát triển các ứng dụng có thể load rất nhanh.
Nền tảng MVC thân thiện với SEO: Nền tảng MVC hỗ trợ phát triển các trang web thân thiện với SEO. Bằng nền tảng này, bạn có thể dễ dàng phát triển các URL thân thiện với SEO để tạo ra nhiều lượt truy cập hơn.
Ứng dụng mô hình MVC trong Laravel Framework
Laravel là một PHP Framework mã nguồn mở miễn phí, được phát triển bởi Taylor Otwell với phiên bản đầu tiên được ra mắt vào tháng 6 năm 2011. Laravel ra đời nhằm mục đích hỗ trợ phát triển các ứng dụng web, dựa trên mô hình PHP MVC (Model – View – Controller).
Xem thêm: Laravel là gì?
Controller trong Laravel: Theo mặc định Laravel đã hỗ trợ sẵn Controller trong source code bạn có thể tìm thấy các file chức controller theo đường dẫn app/http/controller. Ngoài ra bạn cũng có thể tự mình tổ chức lại các controller cho phù hợp với từng dự án.
View trong Laravel: View trong Laravel là nơi hiển thị, trình bày dữ liệu (code html, css, js..). Các file view được đặt trong folder ressources/views. Đặc biệt trong Laravel có 2 dạng view: view bình thường và view dạng blade.
Route trong Laravel: Ngoài các thành phần Model View Controller thì trong Laravel có 1 thứ rất quan trọng: route. Route trong Laravel được sử dụng để khai báo các đường dẫn, dẫn người dùng đến các chức năng trong Laravel. Các đường route trong Laravel được định nghĩa trong file routes/web.php, và thành routes/ api.php
Model trong laravel: Ở những phiên bản Laravel trước thì laravel không có thư mục Model. Nếu bạn muốn có thư mục model thì bạn có thể tự tạo ra. Nhưng từ phiên bản laravel 9 thì mọi việc đã khác.