~ TLDR: Tôi đang triển khai giải pháp CQRS + DDD cho một trong các dự án lớn hơn của mình, và tôi tự hỏi có lý do thực sự nào không. các đối tượng lệnh cho tập hợp của tôi, trong một số ít các trường hợp, nơi đối tượng lệnh là dữ liệu phong phú? Tôi không thể tìm thấy bất kỳ lý do cụ thể tại sao điều này sẽ được bất kỳ loại của một mô hình chống, và tôi không thể tìm thấy bất kỳ ý kiến mà đi vào chi tiết tuyệt vời về loại thiết kế.Truyền lệnh CQRS trực tiếp tới các đối tượng miền
Bối cảnh: Tôi đã triển khai các hệ thống CQRS trước đây và tôi đã triển khai các ứng dụng DDD, nhưng không bao giờ CQRS + DDD trong một ứng dụng định hướng theo phong cách miền Eric Evans phù hợp. Vì vậy, tôi hỏi vì tôi không muốn lạm dụng Tổng hợp của tôi, và làm tổn thương ứng dụng của tôi trong thời gian dài.
Ví dụ về đối tượng lệnh của tôi có khá nhiều dữ liệu sẽ là lệnh đăng ký có trên 8 trường (tên, họ, tên ưa thích, dob, tiêu đề, tên người dùng, mật khẩu, bộ phận, v.v.). Nó cảm thấy rất khó xử khi tạo một phương thức trên Tổng hợp của tôi có 8 tham số và giải pháp thay thế bằng cách sử dụng một số loại dto và xử lý lệnh của tôi cho lệnh dto - hoặc tự động sử dụng automapper, hoặc inline - có vẻ như không cần thiết và không thêm giá trị trừu tượng.
Tôi cũng có thể thấy các trường hợp sử dụng trong tương lai nơi các lệnh có thể là dữ liệu phong phú (nó sẽ không phải là một tỷ lệ lớn lệnh, nhưng vẫn có một vài lệnh). từ lúc bắt đầu.
Theo như tôi nhớ, DDD không nói chính xác cách triển khai Mô hình miền nhưng CQRS thực hiện. Không có xung đột ở đây. Về đối tượng lệnh đơn giản, làm thế nào bạn vượt qua chúng để tổng hợp? Tôi đoán bạn có một giao diện trừu tượng mà cả hai phụ thuộc vào. – neleus
Tôi chuyển dữ liệu lệnh (không phải đối tượng lệnh thực) đến tổng hợp thông qua các tham số. Lệnh này được nhận bởi một trình xử lý tải lên tổng hợp, và chỉ cần truyền nó theo những gì nó cần thông qua một phương thức được thiết kế phù hợp. Thông thường nó chỉ là một hoặc một vài thông số, đó là cách tôi thích nó, như tôi tin rằng một tập hợp được thiết kế tốt nên có phương pháp đòi hỏi rất ít tham số. Nếu không nó có thể vi phạm SRP bằng cách nào đó. Tuy nhiên, có một số trường hợp cạnh có nhiều tham số có thể được yêu cầu. – AaronHS
Bạn có xem xét chuyển toàn bộ đối tượng lệnh đến Tổng hợp không? Nó trông đơn giản, không có khuyết điểm ở đây. – neleus