Nếu bạn từng đi uống nước mía, thì mô hình MVC rất dễ hiểu.
Bước vào trong căn phòng đầy những lập trình viên, bạn sẽ bị dội bom về các framework “Ruby on Rails”, “Angular” hay Django.
Nhìn chung, logic của mô hình MVC có thể được dùng miêu tả quá trình làm web bằng các ngôn ngữ như PHP, Ruby, Python hay JavaScript.
Nhiều lập trình viên Web nhìn thế giới rộng lớn theo kiểu nhìn đời qua kẽ lá. Khi một lập trình viên khác nhìn vào code của họ, thì họ sẽ cho bạn một bài thuyết trình dài kéo theo những lý thuyết giáo điều quen thuộc.
Cách đó không tồn tại trong cuộc sống thực! Thực tế, mô hình MVC của web ngày nay có thể được giải thích dễ dàng bằng hình thức nước mía trà đá vỉa hè. Vậy nên nếu bạn từng đi uống nước mía thì bạn có thể hiểu được cấu trúc chung của các ứng dụng web hiện đại.
Mô hình MVC là gì?
M là Model: cấu trúc dữ liệu theo cách tin cậy và chuẩn bị dữ liệu theo lệnh của controller
V là View: Hiển thị dữ liệu cho 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 lệnh từ người dùng, gửi lệnh đến cho Model để cập nhập dữ liệu, truyền lệnh đến View để cập nhập giao diện hiển thị.
Bla bla bla bla...toàn lý thuyết, giờ đến thực tiễn nào:
Chàng lập trình viên đi giao lưu với bạn bè vào tối thứ sáu, ra góc trà đá vỉa hè gọi đồ. Trà đá tối mùa hè nóng nực đông hơn bình thường, chàng len lỏi luồn qua đám đông cho đến khi thấy chị chủ, rồi hét to: “Một nước mía em ơi”.
Chàng là “người dùng”, và đồ uống chàng gọi là “yêu cầu người dùng”. Với chàng, nước mía là đồ uống ưa thích, mát lạnh và ngọt ngào cho buổi tối nóng nực.
Chị chủ gật đầu cười trìu mến. Với chị chủ, nước mía không chỉ là món đồ uống ngọt lịm mà là qui trình các bước:
Gọt mía
Cho mía vào máy xay
Lấy cốc
Thêm chút đường
Đổ đá vào cốc
Chắt nước mía vào cốc
Đưa đồ và thanh toán.
Não của chị chủ đóng vai trò “Controller”. Ngay khi từ “nước mía” ập đến bằng tiếng Việt, chị hiểu và bắt đầu công việc. Pha nước mía bản chất cũng giống pha nước chanh, nước sấu nhưng nguyên liệu thì hoàn toàn khác biệt nhau. Chị chủ quán chỉ có thể sử dụng công cụ và nguyên liệu của quán chị. Những công cụ của chị chủ trà đá đóng vai trò “Model” bao gồm:
Đôi tay chị chủ
Nguyên liệu pha chế
Máy xay mía
Đá lạnh
Bia, nước ngọt, đồ uống đóng chai…
Chanh, sấu, gừng…
Cuối cùng, cốc nước mía mà chàng lập trình viên cầm và uống đóng vai trò “View”. Phần “View” được làm nên từ những công cụ trong phần “Model”, chế biến và giao đồ thông qua phần “Controller” (chính là não của chị bán nước mía).
Bài học thực tiễn:
Muốn gọi thêm cốc nước mía nữa? Hãy thử hét to vào cốc nước mía đã hết- phần “View” xem, chắc chắn công cốc. Bạn phải gọi chị chủ quán “Controller”.
Thời gian từ lúc chị nghe thấy yêu cầu cho đến khi làm xong đồ uống phải tối thiểu nhất có thể. Đây chính là thuật ngữ “skinny controller” - được hiểu là “Controller” nên chứa tối thiểu lượng logic xử lí, được ủy quyền ngang mức “Model”. Một người chủ quán tận tụy không chỉ nhớ chính xác cách làm, mà còn chuẩn bị đầy đủ nguyên liệu và công cụ thường xuyên để không mất nhiều thời gian tìm kiếm và chế biến đồ uống.
Liệu chị chủ quán ném thẳng tất cả nguyên liệu vào miệng khách và yêu cầu khách hàng tự pha nước mía? Cũng có thể lắm. Bạn cần để việc xử lí logic cho phía “Model” nhiều nhất có thể thay vì phần “View”. Nói các khác, được phục vụ vẫn thích hơn là tự ta phải đi pha.
Nếu chàng lập trình viên gọi Coca-cola, chị chủ hầu như không phải làm gì, chỉ việc bật nắp chai rồi đưa anh ta uống. Nhưng dù thế nào, chàng lập trình viên vẫn phải gọi chị chủ. Lon coca-cola không thể tự nhiên xuất hiện trước mặt được.
Quay trở lại với phần kĩ thuật
Qui trình xử lí chung của web hiện đại thường như sau:
Người dùng gọi yêu cầu xử lí tại trang chủ.
“Controller” nhận yêu cầu này và đưa lệnh xử lí yêu cầu đó. Các lệnh thực thi với phần “View” thì cập nhập hoặc phục vụ yêu cầu trang web, với “Model” thì để trình diễn logic. Ta giả sử lệnh yêu cầu có yếu tố logic.
“Model” thực thi phần logic được lấy từ cơ sở dữ liệu và gửi trả lại phản hồi dựa trên hướng dẫn của “Controller”.
“Controller” truyền dữ liệu ra phần “View”, cập nhận giao diện hiển thị cho người dùng.
Với bất kì yêu cầu nào đều phải đi qua “Controller” trước khi chuyển hóa thành lệnh thực thi cho “View” hoặc “Model”. Bài viết về Ruby on Rails trên wikipedia giải thích khá rõ về điều này.
Nếu phải học framework lập trình web, khá chắn chắn là bạn sẽ gặp mô hình MVC.
Nói ngắn gọn - một khi bạn đã lập trình dựa trên MVC thì không phải ngán bất kì framework mới nào cả.
Nguồn: freecodecamp
/* Bài viết đã được sửa chỉnh để hợp với góc nhìn của người Việt Nam */
Bình luận