c# - .NET:DDD 和 ASMX,避免在代理类上使用多个命名空间

标签 c# .net web-services domain-driven-design asmx

我是 DDD 的新手,目前我正在尝试将项目重构为领域驱动架构。该项目有一个客户端和一个服务器端(ASMX 网络服务)。现在我创建了一个名为“Domain”的类库,它被客户端应用程序和服务器引用。

现在我希望我的 SOAP 通信基于我的域模型。但是正如您所知,一旦建立 Web 引用,ASMX Web 服务就会在客户端中创建某种代理类库。
这导致在不同的命名空间下有两次域实体和值对象

  1. 是否可以直接使用域模型进行通信,避免生成 ASMX 代理类

  2. 如何在 DDD 中使用 DTO?如您所知,某些领域部分可能无法序列化(例如 NHibernate/IList 用法),因此过去我经常创建实体类的更简单的 DTO 版本。 在域内定义 DTO 实体是一种常见的做法吗

最佳答案

如果您要使用 WCF,则可以在客户端和服务器都引用的共享程序集 中拥有服务接口(interface)和 DTO 类。将您的项目转换为使用 WCF 可能并不难,但在您开始之前需要学习很多东西。

如果您希望客户端和服务器紧密结合,共享接口(interface)组件只是一个很好的理想选择,因此除非双方都属于同一个团队.

经常尝试在服务器和客户端上使用相同的类来设计问题,但是在适合设计的情况下共享类可以节省大量工作。

(抱歉,我认为您不能将共享程序集与 asmx 一起使用,它更多是 .net 历史远程处理方面的概念)

关于c# - .NET:DDD 和 ASMX,避免在代理类上使用多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593898/

相关文章:

javascript - 如何从 JavaScript 调用 REST Web 服务 API?

c# - NET Core 2 MVC - 为 GET 方法存储对象

c# - 如何引用某些 Windows 元素(滚动条、插入式选项按钮等)使用的 BG 颜色?

.net - 编写使用 .NET 的语言的优点、缺点和困难

c# - 两个功能几乎相同的不同库的"using"

c# - 如何从 Web API 调用中获取响应

c# - 繁重页面中的所有元素(如图像)一起加载到浏览器中

c# - ASCIIEncoding 在 Windows 8 Store 应用程序中不支持

c# - 签署证书

.net - Visual Studio : Best way to use multiple programming languages for a single application