Đọc tài liệu của DDD tôi đã đưa ra các lớp sau:
ApplicationThế 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 servicesnê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 Servicekhoản hoàn trả, nên được thu thập từ Domain Servicesvà / 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 Servicecó 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 chungResultObjectchỉ có một vài phương thức nhưgetResultvàhasErrorrshoặcgetMessages?Làm thế nào nên trả lại
DomainServicedữ 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ọiDomainServicesvì chúng là một phần của quy tắc kinh doanh.