服务应该是自主的.令人困惑的词语

本文关键字:词语 服务 | 更新日期: 2023-09-27 18:24:49

想知道是否有人能澄清"服务应该是自主的",我看过stackoverflow和谷歌,我得到了很多理论,但没有实践的例子。

这似乎更像是一个目标,而不是一个可以实现的目标。

让我给你举个例子:

我有客户WCF服务,所以我做

  • 我的公司服务客户合同(dll)

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

    CustomerWcfService   
    CustomerDomain  
    CustomerRepository
    

为了保持它的自主性,而不是为域和存储库提供另一个dll,我将它们都放在CustomerService(dll)中,因此它是真正的自主/

在过去,我曾经有以下dlls

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

并将所有实体组合在一起所有域组合在一起,

然而,我突然想到,无论它多么简单,它都打破了SOA 的原则

关于如何构建wcf项目,有什么建议吗?

非常感谢

服务应该是自主的.令人困惑的词语

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

例如,如果该服务允许保存客户数据——为了实现自主性,该服务必须封装业务规则和验证,以断言客户在提交之前是有效的,而不是依赖客户来处理它

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

最后一点,您的模式建议在您的服务代码外部建立一个数据存储。如果反对分离的理由是你失去了自主权,那么对存储层的依赖,或者实际上对底层框架或操作系统的依赖,肯定也会阻止自主权。