Bạn có thể muốn hiển thị mức tồn kho trên trang web hoặc bạn có thể muốn hiển thị số phiên bản của kho trong kho (hãy tưởng tượng kho của bạn là sách, tạp chí, v.v.). Thông tin này đến từ miền Hàng tồn kho.
Điều chính cần chú ý ở điểm này là bạn đang nói về một quan điểm, nghĩa là sử dụng dữ liệu cũ là chấp nhận được.
Điều đó đang được nói, bạn không cần phải tương tác với các tập hợp (chịu trách nhiệm ngăn chặn các thay đổi vi phạm bất biến kinh doanh), nhưng với sự thể hiện của một bản sao gần đây của trạng thái tổng hợp.
Vì vậy, những gì tôi thường mong đợi là một truy vấn chạy đối với Danh mục sản phẩm và một truy vấn khác đối với Kho lưu trữ và một cái gì đó để kết hợp cả hai vào DTO mà bạn cần để hỗ trợ chế độ xem.
Tải cả miền Sản phẩm và miền Tổng hợp hàng tồn kho?
Vì vậy, gần như vậy . Chúng tôi không cần tải tổng hợp, vì chúng tôi sẽ không thay đổi bất cứ điều gì. Nhưng chúng ta cần nhà nước của họ; vì vậy chúng tôi có thể tải nó. Điều đó nói rằng, tôi thường mong đợi hai tên miền sẽ chạy trong các quy trình khác nhau. Do đó, chúng tôi sẽ gọi cả hai, không tải cả hai.
Bạn có giữ một số thuộc tính trên thực thể miền Sản phẩm của mình để lấy số trong kho và phiên bản trong kho, sau đó sử dụng Sự kiện Miền để cập nhật các thuộc tính này khi thực thể Hàng tồn kho được cập nhật không?
"Đừng băng qua suối. Nó sẽ rất tệ."
Sử dụng các sự kiện để phối hợp thông tin trên các bối cảnh tên miền: ý tưởng tuyệt vời . Đẩy các khái niệm thuộc về một lĩnh vực này sang một lĩnh vực khác: ngược lại với một ý tưởng tuyệt vời, ngoại trừ nhiều hơn thế.
Bạn muốn giữ cho tên miền sạch sẽ. Các ứng dụng tương tác với các miền, nó không quá quan trọng. Vì vậy, ví dụ, ứng dụng Inventory gọi một dịch vụ trong ứng dụng sản phẩm là truy vấn một số khái niệm cụ thể của sản phẩm để thêm vào chế độ xem. Hoặc ngược lại.
Tôi không biết bất kỳ lý do nào mà một ứng dụng cần phải được giới hạn trong một tên miền. Miễn là có một nguồn sự thật duy nhất, bạn có thể phân phối các giao dịch theo bất kỳ cách nào bạn muốn.
Nhưng chỉ cần nghĩ đến điều này, trong ví dụ trên, chúng ta sẽ có 2 bảng DB tiềm năng cho danh mục sản phẩm và hàng tồn kho sản phẩm. Bây giờ, chúng ta có sử dụng cùng một mã định danh trong đó là cùng một sản phẩm không.
Đó sẽ là cách dễ dàng. Theo nghĩa lớn hơn, bạn sử dụng cùng một mã định danh vì thực thể trong thế giới thực là như nhau; hai bối cảnh giới hạn khác nhau mô hình thực thể khác nhau, nhưng mô hình không phải là thực thể thế giới thực.
Khi điều đó không hoạt động, sau đó bạn sẽ cần một số truy vấn để sử dụng để thu hẹp khoảng cách. Tôi nghĩ rằng biến thể phổ biến nhất của điều này là thực thể mới hơn bảo tồn id của thực thể cũ hơn. Bạn cũng sẽ thấy điều này trong một BC duy nhất: ứng viên, khi được chấp thuận, sẽ trở thành khách hàng. Đó là một tổng hợp khác nhau (trạng thái liên quan đến khách hàng phải chịu một bất biến khác với trạng thái của người nộp đơn); vì vậy nếu lớp kiên trì của bạn đang sử dụng các luồng sự kiện, luồng cho tổng hợp mới sẽ cần một mã định danh khác. Vì vậy, sẽ có một chút trạng thái ở đâu đó nói rằng "ứng viên này đã trở thành khách hàng này".
Hoặc, chúng ta có thể sử dụng 1 bảng và 1 hàng bảng cho dữ liệu và chỉ cần ánh xạ dữ liệu có liên quan lên các thuộc tính tổng hợp không?
YIKES! Không, đừng làm vậy. Bạn đang thêm tranh chấp giao dịch mà không có bất kỳ lý do kinh doanh nào để làm như vậy.