Tôi đang đi sâu vào Thiết kế hướng tên miền và một số khái niệm tôi đang tìm thấy rất có ý nghĩa trên bề mặt, nhưng khi tôi nghĩ về chúng nhiều hơn, tôi phải tự hỏi liệu đó có thực sự là một ý tưởng hay không.
Ví dụ, khái niệm về Uẩn có ý nghĩa. Bạn tạo các miền sở hữu nhỏ để bạn không phải đối phó với toàn bộ mô hình miền.
Tuy nhiên, khi tôi nghĩ về điều này trong ngữ cảnh của một ứng dụng web, chúng tôi thường xuyên nhấn vào cơ sở dữ liệu để lấy lại các tập hợp dữ liệu nhỏ. Chẳng hạn, một trang chỉ có thể liệt kê số lượng đơn đặt hàng, với các liên kết để nhấp vào để mở đơn hàng và xem id đơn hàng của nó.
Nếu tôi Uẩn chánh kiến, tôi thường sẽ sử dụng mô hình kho để trả lại một OrderAggregate rằng sẽ chứa các thành viên GetAll
, GetByID
, Delete
, và Save
. Được, nghe tuyệt đấy. Nhưng...
Nếu tôi gọi GetAll để liệt kê tất cả các đơn đặt hàng của tôi, thì dường như mẫu này sẽ yêu cầu toàn bộ danh sách thông tin tổng hợp được trả về, hoàn thành đơn hàng, dòng đơn hàng, v.v ... Khi tôi chỉ cần một tập hợp nhỏ thông tin đó (chỉ cần thông tin tiêu đề).
Tui bỏ lỡ điều gì vậy? Hoặc có một số mức độ tối ưu hóa bạn sẽ sử dụng ở đây? Tôi không thể tưởng tượng rằng bất cứ ai sẽ ủng hộ việc trả lại toàn bộ thông tin khi bạn không cần.
Chắc chắn, người ta có thể tạo các phương thức trên kho lưu trữ của bạn như thế nào GetOrderHeaders
, nhưng điều đó dường như đánh bại mục đích sử dụng một mẫu giống như kho lưu trữ ở nơi đầu tiên.
Bất cứ ai có thể làm rõ điều này cho tôi?
CHỈNH SỬA:
Sau nhiều nghiên cứu hơn, tôi nghĩ rằng việc ngắt kết nối ở đây là một mẫu Kho lưu trữ thuần túy khác với những gì hầu hết mọi người nghĩ về Kho lưu trữ.
Fowler định nghĩa một kho lưu trữ là một kho lưu trữ dữ liệu sử dụng ngữ nghĩa của bộ sưu tập và thường được lưu trong bộ nhớ. Điều này có nghĩa là tạo ra một biểu đồ toàn bộ đối tượng.
Evans thay đổi Kho lưu trữ để bao gồm Rễ tổng hợp, và do đó, kho lưu trữ bị cắt bỏ để chỉ hỗ trợ các đối tượng trong Tổng hợp.
Hầu hết mọi người dường như nghĩ về các kho lưu trữ như là Đối tượng truy cập dữ liệu được tôn vinh, nơi bạn chỉ cần tạo các phương thức để lấy bất kỳ dữ liệu nào bạn muốn. Đó dường như không phải là mục đích như được mô tả trong Mô hình kiến trúc ứng dụng doanh nghiệp của Fowler.
Vẫn còn những người khác nghĩ về một kho lưu trữ như một sự trừu tượng đơn giản được sử dụng chủ yếu để làm cho việc kiểm tra và chế nhạo dễ dàng hơn, hoặc để tách rời sự kiên trì từ phần còn lại của hệ thống.
Tôi đoán câu trả lời là đây là một khái niệm phức tạp hơn nhiều so với lần đầu tiên tôi nghĩ.