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

时间:2015-10-22 10:27:05

标签: wcf architecture domain-driven-design soa

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

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

  1. 更改电话和地址Customer.Relocate(Phone, Address)
  2. 将销售经理分配给客户Customer.Assign(SalesManager)
  3. 向客户Customer.Make(Discount)
  4. 进行折扣

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

    1. CustomerService.Relocate(CustomerID, PhoneDTO, AddressDTO)
    2. CustomerService.Assign(CustomerID, SalesManagerID)
    3. CustomerService.MakeDiscount(DiscountDTO)
    4. 这些方法验证参数,请求域对象和调用域对象方法以应用业务逻辑。

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

      1. 当WCF / SOA与DDD一起使用时,是否总会发生此方法重复?
      2. 有没有办法让这个瘦WCF服务层自动从域层构建?
      3. 还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

这是设计的。 使用DDD,域逻辑应用程序逻辑分开。因此,没有代码重复,因为这两个层有不同的职责。

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

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