2011-11-22 33 views
8

Tôi có một C# ứng dụng thiết lập như sau:Trong đó lắp ráp nên một mô-đun Autofac tùy chỉnh cư trú?

[Assembly-ConsoleApp] --References--> [Assembly-Domain] 
              /
[Assembly-FileAccess] --References-->---------/ 

Về cơ bản, hầu hết các giao diện của tôi và một vài lớp bê tông được tìm thấy trong lắp ráp tên miền, với nhiều triển khai cụ thể được tìm thấy trong lắp ráp FileAccess. Việc lắp ráp ConsoleApp làm cho việc sử dụng các hội đồng tên miền không có tham chiếu đến các tập tin FileAccess.

Tôi đã tạo một mô-đun FileAccess tự động để kết nối các triển khai FileAccess với giao diện Domain, cùng với bất kỳ lớp cụ thể nào trực tiếp bên trong miền Domain. Câu hỏi của tôi là đặt module này ở đâu. Từ quan điểm thực hành tốt nhất, nên mô-đun nằm trong hội nghị FileAccess (yêu cầu tôi thêm tham chiếu/phụ thuộc vào cụm tự động) hoặc nó sẽ được đưa vào bảng điều khiển ConsoleApp (sử dụng mô-đun và đã có phụ thuộc autofac)? Hoặc sẽ là một hội đồng hoàn toàn riêng biệt mà chỉ có các mô-đun nhất định có ý nghĩa?

Cảm ơn

Trả lời

8

Một container chỉ nên được tham khảo từ các ứng dụng của Composition Root, mà trong trường hợp của bạn có nghĩa là lắp ráp ConsoleApp.

Điều này đảm bảo rằng các hội đồng có chứa logic ứng dụng được giữ miễn phí bất kỳ sự phụ thuộc nào vào bất kỳ vùng chứa DI cụ thể nào.

Bạn thể cũng thực hiện các mô-đun trong một hội đồng riêng biệt và tải mà từ gốc Thành phần, nhưng kể từ khi lắp ráp đó (ConsoleApp) vẫn cần một tham chiếu đến Autofac, không nhiều thu được từ làm điều đó. Nó phụ thuộc một chút vào kịch bản được đề cập, nhưng trừ khi bạn đang tạo một ứng dụng ISV đóng vai trò như một phần mềm (hầu như) bị thu hẹp đối với nhiều khách hàng không được kiểm soát, nó hiếm khi đáng để nỗ lực.

+0

Cảm ơn Mark! Đó là những gì tôi nghĩ là con đường để đi, nhưng tôi chỉ muốn chắc chắn. Tôi vẫn còn rất mới để sử dụng container (và sử dụng ** tiêm ** phụ thuộc đúng đắn cho vấn đề đó). –

Các vấn đề liên quan