我正在开发基于DDD的服务器端应用程序。
我的应用程序服务(wcf层)有一个从客户端接收XML的方法。 需要处理此XML并最终转换为对象。
在这种情况下,哪里是放置数据转换逻辑的最佳位置? 在域模型中?
示例:
void OnRequestArrived(string xml)
{
ItemRequest request = ItemRequest.New(xml);
}
或在单独的域名服务中?
void OnRequestArrived(string xml)
{
ItemRequest request = _mappingService.Map(xml);
}
ItemRequest对象是业务流的主域模型。
由于
答案 0 :(得分:0)
此职责属于WCF服务。在DDD术语中,这是反腐败层 - 它将外部模型映射到手头的域模型。应尽可能保护域模型免受外部服务的影响。
有时将单个WCF服务分解为两个是一种方便的方法 - 一个应用程序服务和一个特定于WCF的adapter,它将将应用程序服务调整到WCF框架。这基于Hexagonal architecture。应用程序服务对WCF或序列化格式一无所知。 WCF适配器服务处理此问题和其他序列化问题。这可能有两个原因。首先,它使您的应用程序服务保持清洁并专注于其职责 - 域对象,存储库和其他服务的编排以实现域用例。其次,它允许从不同的适配器调用相同的应用程序服务。