0

有一个域的目的是在相当多的公司之间进行协调过程。该过程通过请求和通知消息进行通信,每个消息都通过 Web 服务 (SOAP) 请求传输。每个公司都必须提供自己的 SOAP 端点才能接收请求消息,并且他们必须以 Web 服务客户端的角色发送通知。

手头的规范描述了该过程,并且有描述接口的 XSD 和 WSDL 文件。

我设计参与实现的首选方法是查看域,制定一种普遍存在的语言(基于规范)并创建一个域模型。我想在基础设施/技术方面尽可能地实现该域,请阅读:在以 Java EE、JPA 为目标时,我想将基础设施依赖项/库排除在核心域的代码之外。

当我应用这种方法时,我可以实现一个与规范语言非常一致的域模型。目前,我什至相信它对于规格中相当模糊的细节确实很有表现力。然而,域模型与 XSD 描述的 web 服务模型有很大不同,这是一个事实。

请注意:系统的未来用户和操作员(假设是领域专家并分散在所有参与的公司中)很可能会针对 SOAP 接口上的请求和消息进行辩论。因此,这两种模型之间的转换将一直存在需求,例如,当我的系统用户与开发人员交谈时,当有人直接查看数据库时,......

第二种可行的方法可能是强制 Web 服务、域模型和持久性之间的硬对齐。可以使用 HyperJAXB3 将 XSD 生成的类映射到持久层。由于我在我的手工模型中适当地使用了@Embedded,并且我简化和统一了一些模型元素,因此生成的数据库表的数量存在很大差异,大约是 5 倍。这使得基于 XSD 的数据库模式更难掌握。

所以我的“简单”问题是:我应该努力在这个域中的web 服务、域模型和持久性之间保持一致,因为通信是核心还是我应该继续我的(首选)解决方案来手工制作一个更具表现力的域模型?

欢迎参考。

4

1 回答 1

1

One of the most relevant thing to evaluate during the decision process about using or not DDD, is domain model complexity.

If it is "enough" complex and it needs to be maintained over the time, then DDD can be an option.

Similarities of your domain model with concepts (requests, notifications, messages, ecc.) already modeled by existing frameworks are not relevant, in my opinion: they only give you the possibility to build up your solution simply and faster, if you decide not to use DDD.

I suggest you to read also this

于 2013-11-07T08:43:53.897 回答