我目前正在为一个基于 Java-Web 堆栈(Spring、Hibernate、HTML5..)的项目工作,它使用领域驱动设计原则的方法进行设计和开发。
我们的团队被要求实施一个会计系统,该系统将通过创建和存储会计条目来响应业务事件(例如向客户请求付款或接收付款)。Martin Fowler 的会计模式似乎提倡使用基于事件的系统。所以我的问题如下:
- 领域事件是用于此目的的正确方法吗?
- 如果是,与在我们的项目中实施新的事件机制相比,有什么好处?
非常感谢您的帮助。
我目前正在为一个基于 Java-Web 堆栈(Spring、Hibernate、HTML5..)的项目工作,它使用领域驱动设计原则的方法进行设计和开发。
我们的团队被要求实施一个会计系统,该系统将通过创建和存储会计条目来响应业务事件(例如向客户请求付款或接收付款)。Martin Fowler 的会计模式似乎提倡使用基于事件的系统。所以我的问题如下:
非常感谢您的帮助。
会计通常是 DDD 用语中的下游有界上下文。这意味着会计操作是为了响应来自其他系统的事件而创建的。正如您所指出的,Martin Fowler 的会计模式也反映了这一点。
Udi 描述的领域事件基础设施是否是正确的方法取决于您当前系统的外观。Udi 描述的是一个直接从领域实体发布领域事件的框架。如果这是您的首选方法,那就去吧。您应该考虑的是 1) 所描述的框架并非微不足道 - 您必须处理线程问题以及事务,2) 它解决了单个进程中的发布事件以及您是否需要发布到其他系统您将需要实现一个调度程序。
重要的一点是领域事件本身的概念——表明领域中发生了一些“有趣”的事情。事件驱动的建模方法是从其他方法的范式转变。它们如何出版并不重要。