Tôi đã nghiên cứu kiến trúc hành tây trong một vài ngày. Tôi hiểu rằng các phụ thuộc nên luôn đi về phía trung tâm và cách sử dụng tiêm phụ thuộc để thực hiện điều này. Nhưng tôi có một vài câu hỏi mà tôi vẫn không thể hiểu được.cách triển khai dịch vụ và kho lưu trữ trên kiến trúc hành tây?
Mô hình (hoặc tổ chức) có thể tham chiếu giao diện lưu trữ hoặc giao diện dịch vụ không?
Ví dụ: một thực thể
Order
có một mối quan hệDeliveryCity
thiết lập thông quaOder.DeliveryZip
bất động sản, đó là không một chìa khóa nước ngoài, nhưng là duy nhất. Để có được thành phố cho một zip, tôi phải gọiICityRepository.FindByZip(zip)
Tôi có đoạn mã sau vào mô hình của tôi
class Order { . . . [Inject] public ICityRepository CityRepository { get; set; } private City _dCity; public City DeliveryCity { get { if (_dCity == null) _dCity = this.CityRepository.FindByZip(this.DeliveryZip); return _dCity; } } . . . }
Điều gì sẽ là những vấn đề của các mã trên? Có nên sử dụng dịch vụ miền thay thế không?
Việc triển khai dịch vụ miền có được xác định bên trong lõi hay ở lớp cơ sở hạ tầng không?
Nó có ý nghĩa hoàn hảo! Tôi tự hỏi mình "làm thế nào tôi có thể bỏ lỡ điều đó?" Cảm ơn! – svallory
Đây là một sai lầm. Nhà máy DDD không chịu trách nhiệm cho việc hoàn nguyên. Reconitution là cuộc sống trung lưu của một đối tượng, Nhà máy chỉ quan tâm đến sự khởi đầu của cuộc sống. Vui lòng xem câu trả lời này: http://stackoverflow.com/a/10264669/625332 – Dmitry
Tôi không đồng ý. Các nhà máy được sử dụng để tạo ra các cá thể của một đối tượng. Chúng có thể là lúc bắt đầu vòng đời của một vật thể hoặc được sử dụng để pha chế. Họ có thể cùng lớp với hai phương pháp hoặc hai lớp khác nhau. Dù bằng cách nào, tôi đồng ý rằng có sự khác biệt về cách thức hoạt động của nhà máy trong từng trường hợp. Tôi thường có nhà máy tái tạo như một sự phụ thuộc của kho lưu trữ mà đại diện cho nhà máy để tạo và reconstitute trường hợp mới với dữ liệu được lấy từ kho dữ liệu. Để biết thêm thông tin, xem Evans pg 145: "Reconstituting Stored Objects" – SonOfPirate