2010-09-21 25 views

Trả lời

4

Để chèn phụ thuộc vào các dịch vụ WCF, tôi phải triển khai nhà máy lưu trữ dịch vụ.

Tôi đã tìm thấy hướng dẫn từng bước here.

Về cơ bản bạn phải:

  1. Thực hiện một IInstanceProvider để tạo ra các dịch vụ sử dụng container
  2. Thực hiện một IServiceBehavior để thiết lập các nhà cung cấp ví dụ trong dispatcher endpoint
  3. Mở rộng ServiceHost thêm hành vi dịch vụ mới
  4. Mở rộng ServiceHostFactory để tạo máy chủ dịch vụ mới
+0

Đó có phải là tốt nhất? Tôi đã xem xét nó, và có vẻ phức tạp. Bất cứ điều gì đơn giản hơn thế ?? – SVI

+0

Đây hiện là liên kết đã chết. –

+1

@BrianGideon Tôi đã sửa liên kết, cảm ơn bạn – onof

5

This answer đưa ra một ví dụ về cách bật DI trong WCF với Castle Windsor.

Chỉ cần thay thế IWindsorContainer với một IUnityContainer trong ví dụ này và bạn sẽ có tất cả các thiết lập, mặc dù bạn cũng có thể muốn thay đổi tên lớp từ WindsorXyz để UnityXyz :)

2

Tôi về để cung cấp cho một cố gắng để Thư viện Unity.Wcf (https://github.com/ViceIce/unity.wcf), ngay từ cái nhìn đầu tiên trông khá tốt. Tôi đã đọc trong this article này:

Nếu bạn đang lưu trữ dịch vụ WCF của bạn trong vòng một dịch vụ Windows sử dụng một ServiceHost, thay thế các dụ ServiceHost với tùy chỉnh Unity.Wcf.UnityServiceHost. Bạn sẽ thấy rằng UnityServiceHost có trong một container Unity làm tham số đầu tiên của nó nhưng nếu không giống với ServiceHost mặc định.

Vì nó là trường hợp của tôi tôi sẽ làm được điều này ...

class Program 
{ 
    static void Main(string[] args) 
    { 
     // 1st Initialize the Host (Configures Container and Factories) 
     ServiceHostController.Initialize(); 

     // 2nd Create a URI to serve as the base address. 
     var baseAddress = new Uri("http://localhost:54321/BlaBlaBla/"); 

     // 3rd Create a UnityServiceHost instance 
     var myService = new UnityServiceHost(ServiceHostController.UnityContainer, typeof(MyService), baseAddress); 

     try 
     { //etcetera... 

Và nó làm việc cho tôi, tôi vẫn phải cấu trúc lại một số điều và thêm các tính năng và phương pháp nhưng điểm khởi đầu hoạt động như một sự quyến rũ.

Tôi hy vọng điều đó sẽ hữu ích.

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