N Layer-Architecture là việc phân chia code của ứng dụng dựa theo các layer có chức năng chuyên môn hóa riêng biệt của ứng dụng là một kỹ thuật được chấp nhận rộng rãi để giúp giảm độ phức tạp và cải thiện khả năng tái sử dụng mã. Để đạt được kiến trúc phân lớp, đặc biệt là ASP.NET thường tuân theo các nguyên tắc của Domain Driven Design.
Các lớp Domain Driven Design Layered
Có bốn lớp cơ bản trong Domain Driven Design (DDD):
Presentation Layer: Cung cấp giao diện cho người dùng. Sử dụng Application Layer để đạt được các tương tác của người dùng.
Application Layer: Dàn xếp giữa Presentation Layer và Domain. Điều phối các đối tượng nghiệp vụ để thực hiện các tác vụ ứng dụng cụ thể.
Domain Layer: Bao gồm các đối tượng kinh doanh và các quy tắc của chúng. Đây là trung tâm của ứng dụng.
Infrastructure Layer: Cung cấp các khả năng kỹ thuật chung hỗ trợ các lớp cao hơn chủ yếu sử dụng thư viện của bên thứ ba.
Mô hình kiến trúc ứng dụng Nlayer trong ASP.NET Boilerplate
Ngoài DDD, còn có các lớp vật lý và logic khác trong một ứng dụng được kiến trúc hiện đại. Mô hình dưới đây được đề xuất và triển khai cho các ứng dụng ASP.NET Boilerplate. ASP.NET Boilerplate không chỉ làm cho việc triển khai mô hình này dễ dàng hơn bằng cách cung cấp các lớp và dịch vụ cơ sở mà còn cung cấp các mẫu khởi động để bắt đầu trực tiếp với mô hình này.
Client Layer
Đây là những ứng dụng khách từ xa sử dụng ứng dụng như một dịch vụ thông qua API HTTP (Bộ điều khiển API, Bộ điều khiển OData, thậm chí có thể là một điểm cuối GraphQL). Khách hàng từ xa có thể là SPA (Ứng dụng trang đơn), ứng dụng di động hoặc người tiêu dùng bên thứ ba. Bản địa hóa và Điều hướng có thể được thực hiện bên trong ứng dụng này.
Presentation Layer
ASP.NET [Core] MVC (Model-View-Controller) có thể được coi là Presentation Layer. Nó có thể là một lớp vật lý (sử dụng ứng dụng thông qua các API HTTP) hoặc một lớp logic (trực tiếp đưa và sử dụng các dịch vụ ứng dụng). Trong cả hai trường hợp, nó có thể bao gồm Bản địa hóa, Điều hướng, Ánh xạ đối tượng, Bộ nhớ đệm, Quản lý cấu hình, Ghi nhật ký kiểm tra, v.v. Nó cũng đề cập đến Cấp quyền, Phiên, Tính năng (cho các ứng dụng nhiều người thuê) và Xử lý Ngoại lệ.
Distributed Service Layer
Lớp này được sử dụng để phục vụ chức năng của ứng dụng / miền thông qua các API từ xa như REST, OData, GraphQL … Chúng không chứa logic nghiệp vụ mà chỉ dịch các yêu cầu HTTP sang các tương tác miền, hoặc có thể sử dụng các dịch vụ ứng dụng để ủy quyền hoạt động. Lớp này thường bao gồm Ủy quyền, Bộ nhớ đệm, Ghi nhật ký Kiểm tra, Ánh xạ Đối tượng, Xử lý Ngoại lệ, Phiên, v.v.
Application Layer
Application Layer chủ yếu bao gồm các sử dụng các dịch vụ của Domain layer và các đối tượng Domain như(Domain service, Entity …) để thực hiện yêu cầu của Presentation layer yêu cầu. Nó sử dụng Đối tượng truyền dữ liệu để lấy dữ liệu từ và trả dữ liệu đến Presentation Layer hoặc dịch vụ phân tán. Nó cũng có thể xử lý Ủy quyền, Bộ nhớ đệm, Ghi nhật ký Kiểm tra, Ánh xạ Đối tượng, Phiên, v.v.
Domain Layer
Đây là lớp chính thực hiện logic miền của chúng tôi. Nó bao gồm các Đối tượng, Đối tượng Giá trị và Dịch vụ Miền để thực hiện logic nghiệp vụ / miền. Nó cũng có thể bao gồm Thông số kỹ thuật và kích hoạt Sự kiện miền. Nó định nghĩa các Giao diện Kho lưu trữ để đọc và duy trì các thực thể từ nguồn dữ liệu (thường là DBMS).
Infrastructure Layer
Infrastructure Layer làm cho các lớp khác hoạt động: Nó triển khai các giao diện kho lưu trữ (sử dụng Entity Framework Core chẳng hạn) để thực sự hoạt động với cơ sở dữ liệu thực. Nó cũng có thể bao gồm tích hợp với nhà cung cấp để gửi email, v.v. Đây không phải là một lớp nghiêm ngặt bên dưới tất cả các lớp, nhưng thực sự hỗ trợ các lớp khác bằng cách triển khai các khái niệm trừu tượng của chúng.