Phân biệt mô hình 3 layer (3 lớp) và MVC (Model-View-Controller)

3 Layer và MVC là 2 mô hình phổ biến trong lập trình và có nhiều điểm giống nhau, mà không phải lập trình viên nào cũng phân biệt chúng một cách rõ ràng. Vậy thì hôm nay chúng ta sẽ cùng nhau tìm hiểu về sự giống và khác nhau giữa 2 mô hình này.

I. Mô hình 3 Layer

Trước khi phân biệt chúng thì tôi và các bạn hãy tìm hiểu về chúng trước đã nhé. I. Mô hình 3 layer ( tiếng Việt gọi nôm na là 3 lớp, cần phân biệt với 3 Tier, nhiều khi bị nhầm lẫn nghiêm trọng, các bạn có thể tìm hiểu thêm ngoài phạm vi bài này 😄 ). Mô hình 3 layer được cấu thành như hình minh họa dưới đây.

Như bạn thấy thì 3 layer gồm có 3 thành phần: Presentation Layers, Business Logic Layers, và Data Access Layers.




Presentation Layers: Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng.

Busines Logic Layers: Đây là layer xử lý chính các dữ liệu trước khi được đưa lên hiển thị trên màn hình hoặc xử lý các dữ liệu trước khi chuyển xuống Data Access Layer để lưu dữ liệu xuống cơ sở dữ liệu. Đây cũng là nơi đê kiểm tra ràng buộc, các yêu cầu nghiệp vụ, tính toán, xử lý các yêu cầu và lựa chọn kết quả trả về cho Presentation Layers.

Data Access Layers: Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng như đọc, lưu, cập nhật cơ sở dữ liệu.

Cách thức vận hành như sau:

Đầu tiên User giao tiếp với Presentation Layers (GUI) để gửi đi thông tin và yêu cầu. Tại layer này, các thông tin sẽ được kiểm tra, nếu OK chúng sẽ được chuyển xuống Business Logic Layer (BLL).

Tại BLL, các thông tin sẽ được nhào nặn, tính toán theo đúng yêu cầu đã gửi, nếu không cần đến Database thì BLL sẽ gửi trả kết quả về GUI, ngược lại nó sẽ đẩy dữ liệu (thông tin đã xử lý) xuống Data Access Layer (DAL).

DAL sẽ thao tác với Database và trả kết quả về cho BLL, BLL kiểm tra và gửi nó lên GUI để hiển thị cho người dùng.

Một khi gặp lỗi (các trường hợp không đúng dữ liệu) thì đang ở layer nào thì quăng lên trên layer cao hơn nó 1 bậc cho tới GUI thì sẽ quăng ra cho người dùng biết – Các dữ liệu được trung chuyển giữa các Layer thông qua một đối tượng gọi là Data Transfer Object (DTO), đơn giản đây chỉ là các Class đại diện cho các đối tượng được lưu trữ trong Database.

Tổ chức mô hình 3 layer:

Có rất nhiều cách đặt tên cho các thành phần của 3 lớp như:

Cách 1: GUI, BUS, DAL

Cách 2: GUI, BLL, DAO, DTO

Cách 3: Presentation, BLL, DAL

II. Mô hình MVC, Mô hình MVC là gì?

Mô hình MVC (Model – View – Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

Các thành phần của MVC:

Model: Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

View: Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images…Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML

Controller: Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng… Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model. Đây là hình ảnh minh họa:



MVC làm việc như thế nào?

Đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC: – User tương tác với View, bằng cách click vào button, user gửi yêu cầu đi. – Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở Model. – Model nhận thông tin và thực thi các yêu cầu. – Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị lại cho người dùng.

Ưu điểm và nhược điểm của MVC:


1. Ưu điểm 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ì..

2. Nhược điểm Đố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.

Sau khi đã tìm hiểu về 2 mô hình trên, chúng ta nhận thấy được điểm giống và khác nhau giữa 2 mô hình trên như sau: Điểm giống nhau:

Cả hai đều là mô hình kiến trúc áp dụng trong lập trình được tách thành 3 thành phần.
Tách biệt sự phụ thuộc giữa ngôn ngữ lập trình, môi trường phát triển, xử lý logic.
Các thành phần ở mỗi mô hình có nhiều điểm tương đồng như Presentation Layer và View…

Điểm khác biệt:

Khác biệt rõ nhất là cách xử lý yêu cầu (workflow) của 2 mô hình (Tham khảo cách làm việc của 2 mô hình). Ở MVC, thành phần Model giữ chức năng của cả lớp Business và Data Access trong mô hình 3 Layer.

Vậy khi nào nên sử dụng 3-Layer, còn khi nào nên sử dụng MVC?

3 Layer thường được sử dụng trong lập trình ứng dụng. Trong khi đó, MVC được ưu chuộng nhiều trong lập trình website vì tính linh hoạt và không bắt buộc các DTO như 3-Layer .

Bài viết được đánh dấu

HỌC CÔNG NGHỆ THÔNG TIN RA LÀM GÌ? CƠ HỘI NGHỀ NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN

Khi nhắc đến Công nghệ thông tin, chúng ta không cần phải bàn cãi quá nhiều về mức độ “hot” và xu hướng nhận được nhiều sự quan tâm của ngành nghề này, đặc biệt là trong những năm trở lại đây. Một trong những câu hỏi đặt ra nhiều nhất bởi các bạn học sinh và sinh viên là “Học Công nghệ thông tin ra làm gì?”.

Chi tiết
CÔNG NGHỆ TRÍ TUỆ NHÂN TẠO (AI)

Công nghệ Trí tuệ nhân tạo (Artificial Intelligence - AI) đang trở thành một trong những xu hướng công nghệ phát triển nhanh nhất trong thời đại hiện tại. AI là lĩnh vực khoa học máy tính liên quan đến việc phát triển các hệ thống có khả năng tự động học hỏi và thực hiện các tác vụ thông minh.

Chi tiết
TẦM QUAN TRỌNG CỦA NGÀNH CÔNG NGHỆ THÔNG TIN TRONG CUỘC SỐNG HIỆN NAY

Ngành công nghệ thông tin (CNTT) là lĩnh vực đang phát triển mạnh mẽ và ngày càng trở nên quan trọng trong cuộc sống hiện đại. CNTT liên quan đến sự phát triển, thiết kế, triển khai và bảo trì các hệ thống máy tính, phần mềm và ứng dụng điện tử. Ngành này đã ảnh hưởng đến hầu hết các lĩnh vực của đời sống, bao gồm cả kinh tế, giáo dục, y tế, giải trí và nhiều lĩnh vực khác.

Chi tiết
SỰ CẦN THIẾT CỦA NGÀNH THIẾT KẾ ĐỒ HỌA TRONG GIAI ĐOẠN HIỆN NAY

Ngành thiết kế đồ họa là một trong những lĩnh vực đang phát triển mạnh mẽ trong thời đại công nghệ số hiện nay. Với sự bùng nổ của Internet và các nền tảng trực tuyến, thiết kế đồ họa đã trở thành một phần quan trọng trong việc quảng bá và phát triển thương hiệu của các công ty, tổ chức và cá nhân.

Chi tiết
Phương pháp học lập trình hiệu quả nhất

Để học lập trình đạt kết quả tốt và trở thành một lập trình viên giỏi thì người học cần phương pháp học hiệu quả. Sau đây là phương pháp học lập trình hiệu quả nhất cho các bạn theo học lập trình. Ngoài việc nắm vững các nguyên tắc cơ bản, các bạn cần thường xuyên luyện tập thực hành cái bài tập lập trình và tránh đi quá nhanh. Hãy tạo cho mình cách học tốt với Phương pháp học lập trình hiệu quả nhất.

Chi tiết

Bài viết liên quan

HỌC CÔNG NGHỆ THÔNG TIN RA LÀM GÌ? CƠ HỘI NGHỀ NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN

Khi nhắc đến Công nghệ thông tin, chúng ta không cần phải bàn cãi quá nhiều về mức độ “hot” và xu hướng nhận được nhiều sự quan tâm của ngành nghề này, đặc biệt là trong những năm trở lại đây. Một trong những câu hỏi đặt ra nhiều nhất bởi các bạn học sinh và sinh viên là “Học Công nghệ thông tin ra làm gì?”.

Chi tiết
NHỮNG MÔN HỌC CẦN THIẾT TRONG NGÀNH THIẾT KẾ ĐỒ HỌA

Ngành Thiết kế đồ họa yêu cầu nhiều kỹ năng và kiến thức đa dạng. Dưới đây là một số môn học cơ bản mà bạn có thể cần phải học trong quá trình đào tạo để trở thành một nhà thiết kế đồ họa chuyên nghiệp.

Chi tiết
CÔNG NGHỆ TRÍ TUỆ NHÂN TẠO (AI)

Công nghệ Trí tuệ nhân tạo (Artificial Intelligence - AI) đang trở thành một trong những xu hướng công nghệ phát triển nhanh nhất trong thời đại hiện tại. AI là lĩnh vực khoa học máy tính liên quan đến việc phát triển các hệ thống có khả năng tự động học hỏi và thực hiện các tác vụ thông minh.

Chi tiết
TẦM QUAN TRỌNG CỦA NGÀNH CÔNG NGHỆ THÔNG TIN TRONG CUỘC SỐNG HIỆN NAY

Ngành công nghệ thông tin (CNTT) là lĩnh vực đang phát triển mạnh mẽ và ngày càng trở nên quan trọng trong cuộc sống hiện đại. CNTT liên quan đến sự phát triển, thiết kế, triển khai và bảo trì các hệ thống máy tính, phần mềm và ứng dụng điện tử. Ngành này đã ảnh hưởng đến hầu hết các lĩnh vực của đời sống, bao gồm cả kinh tế, giáo dục, y tế, giải trí và nhiều lĩnh vực khác.

Chi tiết
SỰ CẦN THIẾT CỦA NGÀNH THIẾT KẾ ĐỒ HỌA TRONG GIAI ĐOẠN HIỆN NAY

Ngành thiết kế đồ họa là một trong những lĩnh vực đang phát triển mạnh mẽ trong thời đại công nghệ số hiện nay. Với sự bùng nổ của Internet và các nền tảng trực tuyến, thiết kế đồ họa đã trở thành một phần quan trọng trong việc quảng bá và phát triển thương hiệu của các công ty, tổ chức và cá nhân.

Chi tiết

Copyright © 05/2018 KHOA CÔNG NGHỆ THÔNG TIN | CTIM

Developed by: Quang Sáng