DDD对象创建设计

时间:2013-03-31 23:39:37

标签: wcf architecture dns domain-driven-design

我正在开发基于DDD的服务器端应用程序。

我的应用程序服务(wcf层)有一个从客户端接收XML的方法。 需要处理此XML并最终转换为对象。

在这种情况下,哪里是放置数据转换逻辑的最佳位置? 在域模型中?

示例:

void OnRequestArrived(string xml)
{
   ItemRequest request = ItemRequest.New(xml);
}

或在单独的域名服务中?

void OnRequestArrived(string xml)
{
  ItemRequest request = _mappingService.Map(xml);
}

ItemRequest对象是业务流的主域模型。

由于

1 个答案:

答案 0 :(得分:0)

此职责属于WCF服务。在DDD术语中,这是反腐败层 - 它将外部模型映射到手头的域模型。应尽可能保护域模型免受外部服务的影响。

有时将单个WCF服务分解为两个是一种方便的方法 - 一个应用程序服务和一个特定于WCF的adapter,它将应用程序服务调整到WCF框架。这基于Hexagonal architecture。应用程序服务对WCF或序列化格式一无所知。 WCF适配器服务处理此问题和其他序列化问题。这可能有两个原因。首先,它使您的应用程序服务保持清洁并专注于其职责 - 域对象,存储库和其他服务的编排以实现域用例。其次,它允许从不同的适配器调用相同的应用程序服务。