Thứ Tư, 28 tháng 9, 2016

WEBENT - Buổi 2: Mô hình MVC

MVC (Model - View - Controller) là gì? Một mẫu thiết kế nhằm mục tiêu chia tách phần Giao diện và Code để dễ quản lý, phát triển và bảo trì.
Trong đó:
 - Model: Lớp chứa thông tin đối tượng (dữ liệu), tương tác với Database. Chịu trách nhiệm chính trong mô hình hóa này.
 - View: Giao diện của hệ thống tương tác trực tiếp với người dùng.
 - Controller: Nhận yêu cầu từ người dùng và sử dụng Model, View để xử lý và trả kết quả cho người dùng.

Vì sao cần có MVC? Sự nhập nhằng giữa Giao diện và Code trong các ngôn ngữ lập trình Scripting như JSP, PHP, ASP làm cho Code chương trình khó hiểu, khó bảo trì, khó hình dung trong quá trình cài đặt hệ thống. MVC ra đời với mục tiêu khắc phục những vấn đề đó. Điều này, bạn sẽ thấy rõ ràng hơn trong các phần tiếp theo khi chúng ta tiến hành áp dụng MVC để xây dựng ứng dụng.

Sự khác biệt giữa MVC 1 và MVC 2:
 * MVC 1:
 - Khi người sử dụng dùng các nút bấm, menu hoặc link … trên trình duyệt Web (Web browser) để thực hiện một thao tác, một lệnh (có thể kèm theo các tham số) được gửi tới một trang JSP tương ứng. 
 - Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cần thiết), truyền các lệnh cần thi hành tới Java Bean. Chú ý rằng đây là các Java Bean thông thường, chứ không phải Enterprise Java Bean (EJB).
 - Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhật dữ liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean (JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để bảo đảm việc tách rời phần trình bày và logic của chương trình, trang JSP nhận request chỉ đóng vai trò Điều khiển (Controller).
 - Có một nhược điểm là phần logic điều khiển được viết trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của chương trình càng cao, thì trang JSP càng khó bảo trì. Hơn nữa trong các dự án phần mềm phức tạp, thì phẩn hiển thị của trang JSP thường được làm bởi người thiết kế Web, giỏi về HTML và đồ họa, còn phần chương trình Java được viết bởi lập trình viên chuyên về lập trình. Trong các dự án phức tạp, dùng JSP làm phần điều khiển sẽ làm lẫn lộn việc phân chia ranh giới trách nhiệm giữa nhóm thiết kế đồ họa và nhóm lập trình, đôi khi dẫn đến việc bảo trì và phát triển trở nên rất khó khăn, gần như không thể làm được.
 * MVC 2:
 - Trong MVC model 2, một hoặc nhiều servlet (thường là một) đóng vai trò Điều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị.
 - Các logic phức tạp của chương trình được viết hoàn toàn trong các servlet, là các chương trình Java. Phần hiển thị chỉ gồm các trang JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp, vì thế hoàn toàn có thể được tạo ra bằng những người thiết kế Web.
 - Các yêu cầu của người dùng được gửi từ trình duyệt Web tới servlet. Servlet sẽ khởi tạo Java Bean (nếu cần thiết), ra lệnh thu thập, cập nhật thông tin. Khi Java Bean hoàn thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong Java Bean cho người dùng.
 - Đây chính là một cách sử dụng MVC rất  hiệu quả trong Java. Tất nhiên là sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần Điều khiển chỉ dùng servlet, phần Hiển thị chỉ dùng JSP sẽ dẫn đến một vài trường hợp kém hiệu quả, nhất là khi có các request từ trình duyệt Web chỉ đòi hỏi việc hiển thị thông tin.

Không có nhận xét nào:

Đăng nhận xét