Điều này giống như hỏi sự khác biệt giữa một quả táo và lõi táo. Hai kiến trúc này không thay thế cho nhau. Tôi nghĩ rằng một cái nhìn chính xác hơn là kiến trúc 3 tầng tăng cường MVC.
Kiến trúc MVC
Mô hình: Chúng đại diện cho "công cụ" trong ứng dụng của bạn. Lớp này đã trở nên hơi mờ trong những năm gần đây, như tôi sẽ giải thích sau.
Lượt xem: Giao diện người dùng. Điều người dùng tương tác với.
Bộ điều khiển: Mã lập trình đáp ứng người dùng và thay đổi trong lớp mô hình
Kiến trúc 3 tầng
Với kiến trúc 3 tầng, bạn có các lớp với các trách nhiệm khác nhau.
Dịch vụ người dùng: (hoặc "dịch vụ" nói chung) Lớp này liên quan nhiều hơn đến việc phối hợp truy xuất và sửa đổi của lớp "mô hình". Các hành động phức tạp, gồm nhiều bước được thực hiện tại đây
Lớp nghiệp vụ: Điều này thể hiện các quy tắc kinh doanh được khắc vào mã lập trình. Những gì "Doanh nghiệp" muốn được thực thi trong lớp này.
Lớp truy cập dữ liệu: Một hoặc nhiều lớp chịu trách nhiệm truy cập kho lưu trữ dữ liệu liên tục.
Phần duy nhất của kiến trúc 3 tầng giao với MVC là "Lớp nghiệp vụ". Các "Mô hình" trong MVC và "Lớp nghiệp vụ" trong kiến trúc 3 tầng đang cố gắng đạt được cùng một mục tiêu.
Chữ "M" trong MVC đã bị mờ
Lớp "mô hình" trong MVC đã mở rộng trong những năm gần đây. Từ những gì tôi đã thấy, có hai, có thể ba loại mô hình:
Mô hình miền: Chúng đại diện cho "những thứ" mà "Doanh nghiệp" quan tâm - Miền doanh nghiệp. Các lớp này chứa dữ liệu và tất cả các quy trình hoạt động trên dữ liệu đó để thực thi các quy tắc kinh doanh. Các mô hình miền thường xuyên được gắn với các bảng trong cơ sở dữ liệu. Điều này có vẻ phù hợp với "Lớp nghiệp vụ" của kiến trúc 3 tầng.
Mô hình xem: Đây là các lớp được sử dụng để xoa bóp dữ liệu từ các mô hình miền thành một cái gì đó hợp lý hơn với khung nhìn. Điều này không phù hợp với bất kỳ nơi nào trong kiến trúc 3 tầng vì các mô hình xem không triển khai logic nghiệp vụ cũng như không cung cấp bất kỳ loại dịch vụ hoặc quyền truy cập dữ liệu nào.
Mô hình kinh doanh: Trong các ứng dụng phức tạp, nhu cầu tách rời Mô hình miền khỏi Logic nghiệp vụ phát sinh. Mô hình nghiệp vụ chứa dữ liệu và quy trình hoạt động trên dữ liệu đó để thực hiện các quy tắc kinh doanh và Mô hình miền được chuyển thành "Túi tài sản" - các đối tượng chỉ giữ dữ liệu nhưng không chứa hành vi. Mô hình miền trở thành một dạng khác của Đối tượng truyền dữ liệu giữa cơ sở dữ liệu và ứng dụng.
Không nơi nào trong MVC là truy cập dữ liệu được đề cập. Trong một số trường hợp, bạn sẽ thấy quyền truy cập dữ liệu thuộc về lớp "mô hình" của MVC, như chúng ta đã thấy không phải là lớp cắt rõ ràng nữa. Thực sự tôi thấy kiến trúc 3 tầng được ghép nối với MVC để tạo toàn bộ ứng dụng. Một sự gia tăng hoặc cải thiện cái khác:
- Mô hình
- Mô hình miền (MVC / 3-tier)
- Xem mô hình (MVC)
- (tùy chọn) Mô hình kinh doanh (MVC / 3 tầng)
- Lượt xem (MVC)
- Bộ điều khiển (MVC)
- Truy cập dữ liệu (3 tầng)
- Dịch vụ (3 tầng)
Có một số giao điểm, nhưng chúng phần lớn tách biệt, và cùng nhau được sử dụng để tách rời và cô lập các thành phần khác nhau của một hệ thống lớn hơn.