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

Tổng quan và cơ hội việc làm của ngành Công nghệ thông tin trong giai đoạn hiện nay

Công nghệ thông tin là một ngành học được đào tạo để sử dụng máy tính và các phần mềm máy tính để phân phối và xử lý các dữ liệu thông tin, đồng thời dùng để trao đổi, lưu trữ và chuyển đổi các dữ liệu thông tin dưới nhiều hình thức khác nhau.

Chi tiết
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.

Chi tiết
Sự khác nhau giữa Coder, Programmer và Developer

Người ta thường sử dụng ba thuật ngữ: “Developer”, “Programmer”, “Coder” để gọi những người làm việc trong ngành công nghệ phát triển phần mềm. Nhưng đã bao giờ chúng ta thắc mắc tự hỏi họ khác nhau như thế nào? Và làm cách nào để phân biệt được các chức danh Developer , Programer hay Coder này chưa?

Chi tiết

Bài viết liên quan

Tổng quan và cơ hội việc làm của ngành Công nghệ thông tin trong giai đoạn hiện nay

Công nghệ thông tin là một ngành học được đào tạo để sử dụng máy tính và các phần mềm máy tính để phân phối và xử lý các dữ liệu thông tin, đồng thời dùng để trao đổi, lưu trữ và chuyển đổi các dữ liệu thông tin dưới nhiều hình thức khác nhau.

Chi tiết
Website là gì? Tổng quan về một dự án web

Ngày nay, Website không còn là công cụ xa lạ của các doanh nghiệp, các tổ chức hay thậm chí là các cá nhân bởi hầu hết với sự phát triển của internet mỗi đối tượng đều sở hữu cho mình một website. Có rất nhiều định nghĩa về Website, khi bạn search trên google sẽ có hàng tỷ các kết quả về từ khóa Website.

Chi tiết
Marketing Online là gì trong kỷ nguyên số 4.0?

Nền kinh tế hiện nay ngày càng chứng kiến sự vươn lên mạnh mẽ của các phương tiện kỹ thuật số. Khi mà kỷ nguyên công nghệ 4.0 phát triển mạnh mẽ như vũ bão thì cũng là lúc ta thấy sức mạnh của Marketing Online ảnh hưởng rất lớn tới doanh thu và lợi nhuận của các doanh nghiệp. Vậy Marketing Online là gì? Chúng ta sẽ cùng tìm hiểu ở bài viết dưới đây.

Chi tiết
Sự khác nhau giữa Coder, Programmer và Developer

Người ta thường sử dụng ba thuật ngữ: “Developer”, “Programmer”, “Coder” để gọi những người làm việc trong ngành công nghệ phát triển phần mềm. Nhưng đã bao giờ chúng ta thắc mắc tự hỏi họ khác nhau như thế nào? Và làm cách nào để phân biệt được các chức danh Developer , Programer hay Coder này chưa?

Chi tiết
Những tố chất cần có để học ngành Công nghệ thông tin

Những tố chất cần có để học ngành Công nghệ thông tin: Đam mê công nghệ, Sáng tạo, Tính chính xác, Khả năng ngoại ngữ, Ham học hỏi, trau dồi kiến thức.

Chi tiết

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

Developed by: Quang Sáng