Có một sự khác biệt lớn giữa lớp ứng dụng và lớp trình bày từ quan điểm DDD.
Mặc dù DDD tập trung vào cách mô hình hóa miền bằng cách sử dụng các khối và khái niệm xây dựng DDD như bối cảnh bị ràng buộc, ngôn ngữ Ubiquitous và do đó, điều quan trọng là phải xác định rõ ràng và tách biệt các lớp khác nhau trong ứng dụng của bạn.
Kiến trúc đóng một vai trò lớn trong việc thực hiện một ứng dụng DDD thành công. Một kiến trúc nổi tiếng đã đạt được rất nhiều sự cường điệu gần đây là kiến trúc củ hành:
Trong thiết kế này, lớp UI / Presentation và lớp ứng dụng được phân tách rõ ràng. Hợp nhất cả hai lại với nhau giới thiệu sự kết hợp chặt chẽ giữa 2 lớp có mối quan tâm và trách nhiệm riêng biệt rõ ràng.
Lớp trình bày chỉ nên trình bày logic nhà. Tránh các UI thông minh biết quá nhiều. Điều này chủ yếu chứa các Bộ điều khiển và khung nhìn của MVC ngoài CSS, JS, các mẫu, biểu mẫu và mọi thứ liên quan đến các đối tượng phản hồi và yêu cầu.
Các hành động được ban hành thông qua trình bày được ủy quyền cho lớp ứng dụng thông qua các lệnh. Lớp ứng dụng chứa logic ứng dụng. Nó thường ánh xạ đến một trường hợp sử dụng. Nó chứa những gì hệ thống nên làm để đáp ứng trường hợp sử dụng. Một dịch vụ ứng dụng thông thường sẽ yêu cầu một kho lưu trữ trả về một tổng hợp sau đó gọi một hành động trên tổng hợp đó.
Hãy xem dự án mẫu từ IDD của Vaughn Vernon