2012-11-19 72 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

令人惊叹的,谢谢你! –