Kiến trúc MVC

Tổng quan

Mô hình MVC.

MVC (Model – View – Controller) – MVC Pattern Design là một mô hình kiến trúc phần mềm được tạo ra với mục đích quản lí và xây dựng dự án phần mềm có hệ thống hơn, nói cụ thể thì nó là một mẫu thiết kế nhằm chia tách phần giao diện và phần code của ứng dụng để dễ dàng quản lí, bảo trì và phát triển. MVC được áp dụng trên hầu hết các ngôn ngữ lập trình hướng đối tượng hiện nay như C++, C#, Java, PHP, …

MVC chia ứng dụng phần mềm ra thành 3 phần có tương tác với nhau:

  • Model: thường là các class chứa thông tin đối tượng (dữ liệu), tương tác truy xuất database.
  • View: là nơi nhận dữ liệu từ model, database và sắp xếp chúng chính xác nhờ yêu cầu từ controller và truyền về client.
  • Controller: Đóng vai trò trung gian giữa Model và View, nó có nhiệm vụ nhận yêu cầu từ client sau đó xử lý request, load model và gửi data qua view tương ứng với nhau rồi trả kết quả về cho client.

Xử lý của web theo mô hình MVC như sau:

  1. User gọi yêu cầu xử lí từ trang chủ.
  2. Controller nhận yêu cầu 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ật hoặc phục vụ yêu cầu trang web, với Model thì để biểu đạt logic (Nếu lệnh yêu cầu có logic).
  3. Model thực thi phần logic và lấy cơ sở dữ liệu rồi gửi trả lại phản hồi dựa trên hướng dẫn của Controller.
  4. Controller truyền dữ liệu cho View để cập nhận giao diện hiển thị cho người dùng.

Ưu, nhược điểm của mô hình MVC

Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các thành phần. Phải có kiến thức vững và chuẩn, để tránh bị nhầm lẫn về các mô hình.

Ngược lại, nếu bạn nắm bắt tốt thì MVC mang lại ưu điểm vô cùng lớn: Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì..

Người ta chia MVC làm 2 loại là MVC model1 & MVC model2 như sau.

Mô hình MVC1 – Ưu, nhược điểm.

Như bạn thấy trong hình trên là kiến trúc mô hình 1 như sau:

  1. Trình duyệt gửi yêu cầu cho trang JSP.
    1. JSP truy cập Java Bean và gọi sang business logic.
    2. Java bean kết nối với cơ sở dữ liệu, nhận và lưu dữ liệu.
    3. Response được gửi lại cho user bởi JSP.

Nhược điểm:

  • Navigation control is decentralized  bởi vì mỗi trang đều chứa các logic để xác định trang tiếp theo. Nếu tên trang .JSP được thay đổi mà nó được gọi bởi các trang khác, chúng ta cần phải thay đổi nó trong tất cả các trang dẫn đến vấn đề maintenance (bảo trì).
  • Time consuming Bạn cần phải dành nhiều thời gian để phát triển JSP tags. Vì vậy mà chúng ta không cần phải sử dụng scriptlet tag.
  • Hard to extend Nó khá ổn cho các ứng dụng nhỏ nhưng cho các ứng dụng lớn sẽ có vấn đề.

Ưu điểm: 

  • Dễ dàng và nhanh chóng để phát triển ứng dụng web.

Mô hình MVC2 – Ưu, nhược điểm.

  1. Web Browser gửi request đến server thông qua các control trên form HTML hay JSP, hay query string url hay qua cookies.
  2. Servlet – Controller đón nhận request và xác định Model tương ứng để tạo ra instance của JavaBean để đón nhận các giá trị nhập từ request để lưu trữ và xử lý.
  3. Model thực hiện xử lý, kết nối dữ liệu vật lý dưới DBMS (nếu có) và trả kết quả trả về cho Controller.
  4. Kết quả xử lý được truyền vào Servlet – Controller, Servlet Controller thực hiện tạo hay lựa chọn View để từ đó đưa kết quả xử lý hay dữ liệu lấy từ Model để cập nhật lại trang kết quả View.
  5. Controller gửi View qua  response cho người dùng để browser có thể trình bày dữ liệu trong Web Browser. 

Ưu điểm:

  • Navigation control is centralized: Now only controller contains the logic to determine the next page.
  • Easy to maintain.
  • Easy to extend.
  • Easy to test.
  • Better separation of concerns.

Nhược điểm:

Chúng ta cần phải viết mã controller. Nếu chúng ta thay đổi mã controller thì cần phải biên dịch lại và redeploy lại các application.

Sự khác, giống nhau, ưu, nhược điểm của MVC1 & MVC2.

  • Trong MVC1, controller và view đều là Jsp. MVC1 là thế hệ đầu tiên sử dụng JSP/ JavaBeans để thực hiện mô hình MVC, yêu cầu từ phía client sẽ được gửi tới trang JSP ban đầu được coi là controller xử lý, sau đó truyền lệnh thực thi đến các JavaBeans, các JavaBeans lấy dữ liệu từ database trả về cho trang JSP ban đầu theo yêu cầu phía client.
  • MVC2 là một mô hình mô tả kiến trúc MVC trên nền web do Sun phát minh, khác với MVC1 trong MVC2 các Controller là các Servlet còn Model là các class của Java, view là các trang JSP. Ở MVC2 ta thấy các logic phức tạp được viết trong Controller (Hard working), các servlet nhận yêu cầu từ client qua sử lý được gửi cho Model và View để tương tác trả kết quả cho client.
  • Ta thấy MVC2 không kế thừa từ MVC1 nhưng làm việc hiệu quả và logic hơn.
  • MVC2 tốt cho các dự án lớn nhưng MVC1 thì không.
  • Với thành được phân chia theo chức năng, MVC2 có thể dễ dàng tái sử dụng.

Cũng chính vậy mà MVC2 phức tạp hơn MVC1.

Leave a Reply

Your email address will not be published.