首页 文章

当SOA / WCF与DDD一起使用时,方法重复是不可避免的吗?

提问于
浏览
1

有一个客户端服务应用程序使用WCF构建面向服务的体系结构,DDD用于在服务内部构建域层 .

在域层中有一个域对象 Customer ,其方法如下:

  • 更改电话和地址 Customer.Relocate(Phone, Address)

  • 将销售经理分配给客户 Customer.Assign(SalesManager)

  • 向客户打折 Customer.Make(Discount)

由于此域层在WCF服务中使用,因此使用服务方法创建 CustomerService

  • CustomerService.Relocate(CustomerID, PhoneDTO, AddressDTO)

  • CustomerService.Assign(CustomerID, SalesManagerID)

  • CustomerService.MakeDiscount(DiscountDTO)

这些方法验证参数,请求域对象和调用域对象方法以应用业务逻辑 .

问题是它看起来像巨大的代码重复,因为WCF服务方法几乎(90%)与带有参数的域层方法相同,用ID和DTO表示 .

  • 当WCF / SOA与DDD一起使用时,是否总会发生此方法重复?

  • 有没有办法让这个瘦WCF服务层自动从域层构建?

  • 还有其他想法吗?

1 回答

  • 2

    这是设计的 . With DDD, domain logic is separated from application logic. 因此,没有代码重复,因为这两个层有不同的职责 .

    可能重复的代码是验证规则:它们通常在域层中用于强制不变量,在服务层中用于执行输入验证 . 如果您的应用程序出现这种情况,则应重构代码以删除重复并使验证规则可重用 . 另见this answer .

    如果您的软件解决的问题非常简单,以上仍然感觉像重复工作,DDD可能不是正确的方法 .

相关问题