2012-11-19 74 views
2

我在這裏提出了一些建議,所以我選擇了正確的方向。WCF多重服務的服務體系結構

我有一個服務,這做了我所有的業務功能於一體的服務,如:

TestingService 
     GetProducts() 
     GetPeople() 

現在,我覺得,因爲我的系統越來越多,我想拆這些了,所以:

ProductService 
    GetProducts() 
PeopleService 
    GetPeople() 

是最好的辦法了這個有兩個.SVC文件放在同一個項目,並分別給他們打電話每?我已經實現了一個很好運行的存儲庫模式,現在有IProductService和IPeopleService。如果我是這樣做的,我用我的控制器兩個構造 - 我會得到這樣的事情:

public TestController(IProductService productService, IPeopleService service) 

而不是

public TestController(ITestService service) 

,我本來有。

如果我在單個控制器中使用5個服務,這可能會變得很難處理嗎?這是什麼Factory類用作服務級別的包裝?

回答

3

我想你會想讓你的服務在倉庫類而不是控制器。事情是這樣的:

public TestRepository(IProductService productService) {} 

如果你選擇的是你提到的更細粒度的方法,你必須而不是一個大一個許多服務 - 好主意。另外,如果您的控制器/存儲庫/服務之間有1對1關係,那麼您將擁有良好且可維護的結構。

但是,如果你的關係是1對多,那麼工廠方法肯定是一種選擇。也許沿着這些線:

// Factory 
    public class ServiceFactory : IServiceFactory 
     { 
     public IProductService GetProductService() 
      { 
       return new ProductService(); 
      } 
     public IPeopleService GetPeopleService() 
      { 
       return new PeopleService(); 
      } 
      } 

// Repository 
    public class ProductRepository 
     { 
     public void DoSomething() 
     { 
      // use dependecy injection to avoid this tight coupling 
      var factory = new ServiceFactory(); 
      var service = factory.GetProductService(); 
      service.DoMyStuff(); 
     } 

} 
+0

令人驚歎的,謝謝你! –