Chính quá trình hợp nhất là nơi tôi cần làm nhiều nhất.
Vì vậy, bạn có nghĩa là quá trình tạo dữ liệu trong hệ thống của bạn là nơi các đối tượng miền nhất sẽ được tạo?
Điều đó có ý nghĩa và phù hợp với hầu hết các ứng dụng.
Điều tôi không hiểu chính xác là nơi logic hợp nhất này sẽ kết thúc ở đâu?
Logic hợp nhất sẽ được cung cấp bởi một hoặc nhiều thành phần dịch vụ, có khả năng sử dụng một hoặc nhiều thành phần repository và một hoặc nhiều thành phần unit of work. Dịch vụ đó sẽ được tạo thành trong thư mục gốc, như mọi kho lưu trữ/đơn vị công việc mà bạn tạo ra.
Dữ liệu tự động hoàn toàn. Bạn không thể cấu trúc ứng dụng của mình để biết sơ đồ bố trí của dữ liệu một cách tĩnh, do đó bạn không thể soạn nó trong thư mục gốc của bạn. Bạn cũng không nên cố gắng.Thay vào đó, mã của bạn có thể sử dụng ORM để xác định hoặc ánh xạ tới lược đồ quan hệ giữa các đối tượng dữ liệu miền của bạn.
Sau đó, bạn có thể sử dụng kho/đơn vị công việc để truy xuất dữ liệu từ bộ nhớ. Bạn cũng sử dụng giao diện người dùng/dịch vụ của mình để tạo dữ liệu mới bằng cách sử dụng new
- không có sự xấu hổ trong đó đối với các đối tượng miền thuần túy là dữ liệu và được đảm bảo không có phụ thuộc. Kéo dài dữ liệu mới hoặc sửa đổi vào kho/đơn vị công việc.
Nếu điều này làm cho bạn bị rạn nứt, bạn luôn có thể sử dụng mẫu nhà máy được tiêm từ gốc thành phần để tạo các đối tượng đó. Nhưng nếu bạn đã cấu trúc các đối tượng miền cấp thấp của mình là DTOs, điều này sẽ không mua cho bạn nhiều, nếu có.
Vì vậy, bạn không phải sử dụng Unity để cung cấp mọi thứ, và bạn không phải tạo ra hoàn toàn mọi đối tượng trong hệ thống của bạn trong thư mục gốc. Nhưng bạn nên cố gắng soạn các phần tĩnh của hệ thống của bạn hoặc thậm chí các phần động có thể cấu hình tĩnh của hệ thống của bạn trong thư mục gốc. Bản đồ này rất tốt cho các thùng chứa DI như Unity.
Nguồn
2011-11-04 17:37:59
Cảm ơn câu trả lời của bạn. Tôi có một câu hỏi dựa trên những gì bạn đã nói ở trên ... tôi có nên luôn luôn sử dụng một cuộc gọi một dịch vụ mà lần lượt sử dụng một kho lưu trữ như trái ngược với việc sử dụng bất kỳ kho lưu trữ trực tiếp? – inthegarden
@inthegarden: Bạn không thể hiển thị trực tiếp kho lưu trữ trên da của dịch vụ và bạn không thể trả lại các thực thể trực tiếp cho giao diện người dùng. Vì vậy, ở cấp cao nhất của ứng dụng của bạn, bạn sẽ cần * một số * loại lớp. Nếu điều này hoàn toàn ánh xạ tới một lớp dịch vụ bên ngoài, điều đó thật tuyệt. Nhưng tôi sẽ không chèn tất cả các móc dịch vụ vào tất cả mọi thứ ở lớp đó * trừ khi * Tôi muốn hiển thị mọi phần chức năng trên giao diện người dùng cho người gọi dịch vụ web. Dịch vụ này là một bộ yêu cầu riêng biệt từ giao diện người dùng, do đó, đừng quá hăng hái khi làm mọi thứ đi qua nó. –