Đọc tài liệu của DDD tôi đã đưa ra các lớp sau:
Application
Thế giới bên ngoài (Bộ điều khiển, Crons, v.v.)Application Services
(hoặc UseCase) - nơi phối hợp nhiều Dịch vụ miền hoặc Dịch vụ cơ sở hạ tầng. Họ được gọi từOutside World
. Họ biết những gì phải được thực hiệnDomain Services
- trong đó có cách mọi thứ được thực hiện (dựa trên giao diện kho lưu trữ)
Câu hỏi : Có cách thực hành tốt nhất nào để giao tiếp giữa các lớp không?
Những gì tôi biết: - Application services
nên trả lại "dữ liệu mong muốn" và một số "thành công" của giao dịch (cảnh báo, lỗi, thông tin) - Dữ liệu mà một Application Service
khoản hoàn trả, nên được thu thập từ Domain Services
và / hoặc tổng hợp Infrastructure Services
.
Controller <-> Application Service <-> Domain Service
<-> Infrastructure Service
Đây là một số suy nghĩ mơ hồ của tôi:
Tất cả các phương thức trên
Application Service
có một DTO cụ thể có chứa "yêu cầu" làm tham số không? Giống nhưAddItemToCardCommandDto
(đóng gói tất cả các dữ liệu cần thiết). Làm thế nào về một chung chungResultObject
chỉ có một vài phương thức nhưgetResult
vàhasErrorrs
hoặcgetMessages
?Làm thế nào nên trả lại
DomainService
dữ liệu và lỗi? Họ có nên trả lại lỗi bằng ngoại lệ? Điều đó có vẻ kỳ lạ bởi vì đối với tôi, Xác thực doanh nghiệp nên được gọiDomainServices
vì chúng là một phần của quy tắc kinh doanh.