Eric trong cuốn sách của mình chạm vào chủ đề của Mô-đun rất ít. Ông cũng không nói về mối quan hệ của cấu trúc của các mô-đun với các bối cảnh bị ràng buộc với các ví dụ. Các bối cảnh bị ràng buộc có chứa các mô-đun hoặc mô-đun có chứa các bối cảnh bị ràng buộc không? Khi một ứng dụng có DDD, bạn có thể mở rộng dễ dàng như thế nào?Extensibiliy với DDD: Mô-đun Vs Bounded Bối cảnh trong DDD với MEF
Cấu trúc của ứng dụng là rất quan trọng khi chúng tôi thiết kế các ứng dụng có thể mở rộng. Khung công tác MEF của Microsoft có thể tự động khám phá các mô-đun/thành phần từ một dll.
Chúng ta hãy lấy một ví dụ. Trong ứng dụng thương mại điện tử, chúng tôi có thể có ngữ cảnh bị ràng buộc cho Xử lý thanh toán. Việc xử lý thanh toán có thể được trừu tượng, vì vậy sau này tôi có thể mở rộng ứng dụng với nhiều bộ xử lý thanh toán như Paypal hoặc Payflow hơn. Hiện tại tôi chỉ có Paypal, và vài tháng sau tôi muốn tích hợp Payflow. Để tích hợp Payflow, tôi có thể lắp ráp (dll) thực hiện giao diện của Xử lý thanh toán. Tôi có thể thả dll đó trong ứng dụng, và MEF sẽ tự động phát hiện ra nó.
Thách thức ở đây là, dll được tạo cho xử lý thanh toán PayFlow là một mô-đun, không phải là Ngữ cảnh bị ràng buộc (BC). Nếu tôi tạo nó làm BC, chúng tôi có hai BC cho Xử lý thanh toán. (BC tạo ra cho Paypal và BC cho Payflow). Nếu chúng ta cấu trúc ứng dụng với các mô-đun bên trong Bounded Context và Bounded Context như một assembly (dll), các module có thể nằm trong BC như các thư mục chứ không phải assembly (bạn có thể coi nó như một thư viện C# được tạo trong Visual Studio).
Làm cách nào chúng tôi có thể xử lý vấn đề mở rộng này với DDD? Có phải là Xử lý thanh toán, BC và các thư mục khác bên dưới nó dưới dạng mô-đun, một cho Paypal vv ... Hay chúng ta cần phụ BC trong một BC khác?
Câu trả lời tuyệt vời @eulerfx! – Bern