我是 DDD 的新手,目前我正在尝试将项目重构为领域驱动架构。该项目有一个客户端和一个服务器端(ASMX 网络服务)。现在我创建了一个名为“Domain”的类库,它被客户端应用程序和服务器引用。
现在我希望我的 SOAP 通信基于我的域模型。但是正如您所知,一旦建立 Web 引用,ASMX Web 服务就会在客户端中创建某种代理类库。
这导致在不同的命名空间下有两次域实体和值对象。
是否可以直接使用域模型进行通信,避免生成 ASMX 代理类?
如何在 DDD 中使用 DTO?如您所知,某些领域部分可能无法序列化(例如 NHibernate/IList 用法),因此过去我经常创建实体类的更简单的 DTO 版本。 在域内定义 DTO 实体是一种常见的做法吗?
最佳答案
如果您要使用 WCF,则可以在客户端和服务器都引用的共享程序集 中拥有服务接口(interface)和 DTO 类。将您的项目转换为使用 WCF 可能并不难,但在您开始之前需要学习很多东西。
如果您希望客户端和服务器紧密结合,共享接口(interface)组件只是一个很好的理想选择,因此除非双方都属于同一个团队.
经常尝试在服务器和客户端上使用相同的类来设计问题,但是在适合设计的情况下共享类可以节省大量工作。
(抱歉,我认为您不能将共享程序集与 asmx 一起使用,它更多是 .net 历史远程处理方面的概念)
关于c# - .NET:DDD 和 ASMX,避免在代理类上使用多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593898/