Tôi lần đầu tiên bị chân với DDD (trong. Net) lần đầu tiên, vì tôi đang kiến trúc lại một số thành phần cốt lõi của ứng dụng doanh nghiệp cũ.DDD và thực hiện sự bền bỉ
Điều tôi muốn làm rõ là, làm cách nào để chúng tôi triển khai sự kiên trì trong kiến trúc DDD phù hợp?
Tôi nhận ra rằng bản thân các tên miền đều không biết gì, và nên được thiết kế bằng cách sử dụng "ngôn ngữ phổ biến" và chắc chắn không bị ép buộc vào DAC của tháng hoặc thậm chí cơ sở dữ liệu vật lý.
Tôi có đúng là Giao diện kho lưu trữ nằm trong hội đồng miền hay không, nhưng việc triển khai lại có tồn tại trong lớp kiên trì không? Lớp persistence chứa tham chiếu đến lớp Domain, không bao giờ ngược lại?
Phương thức lưu trữ thực tế của tôi (CRUD) được gọi từ đâu?
Tôi đồng ý với mọi thứ mà Dmitry đã nói ở đây, điều duy nhất tôi muốn thêm là tôi khuyên bạn nên tham khảo dự án khách hàng/UI của bạn một lớp 'Ứng dụng dịch vụ', yêu cầu các phương thức trên miền (tổng hợp miền hoặc miền) dịch vụ) và gọi các kho lưu trữ từ đây. Bằng cách này tất cả các logic được chứa trong dịch vụ ứng dụng này, và bạn có thể thay đổi/thêm các giao diện người dùng với ít nỗ lực. –
Tôi sẽ chỉ thêm một lớp dịch vụ khi nó có lợi ích rõ ràng cho ứng dụng, không chỉ vì lợi ích của nó. Một lớp dịch vụ là một lớp trừu tượng bổ sung mà trong nhiều trường hợp bạn có thể làm mà không cần. –
@RobinvanderKnaap, điều đó không đúng, lớp Dịch vụ ứng dụng được yêu cầu mọi lúc, trong tình huống phát triển phần mềm trong thế giới thực. Nếu bạn giao cho nhóm phát triển UI lớp miền, có thể a) không biết cách sử dụng nó, b) có thể lạm dụng nó. Bạn cần phải rõ ràng về những gì giao diện người dùng có thể làm với API doanh nghiệp của bạn (Lớp miền). –