服务应该是自主的。会话语

时间:2014-09-27 10:25:18

标签: c# wcf design-patterns architecture

想知道是否有人可以澄清“服务应该是自主的”, 我已经查看了stackoverflow和谷歌,我得到了很多理论但不是实际的例子。

似乎更有目标,而不是可以实现的目标。

让我举个例子:

我有客户WCF服务,所以

  • MyCompany.Services.CustomerContract(dll)

    ICustomerContract
    CustomerDto
    ICustomerRepository
    
  • MyCompany.Services.CustomerService(DLL)

    CustomerWcfService   
    CustomerDomain  
    CustomerRepository
    

为了保持自治,而不是为域和存储库设置另一个dll,我在CustomerService(dll)中拥有所有这些dll,因此它是真正的自治/

过去我曾经有过以下的dll

  • MyCompany.Core(DLL)
  • MyCompany.Entities(DLL)
  • MyCompany.Domain(DLL)
  • MyCompany.Services(dll)
  • MyCompany.Repository(dll)

将所有实体组合在一起,

然而,它让我觉得它更简单,它打破了SOA的原则

关于如何构建wcf项目的任何建议?

非常感谢

1 个答案:

答案 0 :(得分:0)

我一直认为这意味着服务不依赖于外部逻辑。

例如,如果此服务允许保存客户数据 - 要自治,服务必须封装业务规则和验证,确认客户在提交之前是有效的,而不是依靠客户端来处理它。

在我看来,不需要将整个服务封装在自己的DLL中。您的模式为您提供的分离是一个理想的功能,并且提供的功能仅由您的wcf服务提供,它不会出现任何问题,实际上更适合依赖注入,重用,单元测试和模拟。

最后一点,您的模式建议在服务代码外部使用数据存储。如果反对分离的论点是你失去了自主权 - 那么肯定依赖于存储层或实际上是基础框架或操作系统也会妨碍自治。