Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否应该设计一个包含域事件的记帐系统?_Java_Events_Design Patterns_Domain Driven Design_Accounting - Fatal编程技术网

Java 我是否应该设计一个包含域事件的记帐系统?

Java 我是否应该设计一个包含域事件的记帐系统?,java,events,design-patterns,domain-driven-design,accounting,Java,Events,Design Patterns,Domain Driven Design,Accounting,我目前正在为一个Java Web堆栈(Spring、Hibernate、HTML5..)工作并基于该堆栈,该项目使用的是设计和开发原则方法 我们的团队被要求实施一个会计系统,该系统将通过创建和存储会计分录来响应业务事件(如向客户请求付款或收到付款)。Martin Fowler的团队似乎提倡使用基于事件的系统。因此,我的问题如下: 是否为此目的使用了正确的方法 如果是,与在我们的项目中实施新的事件机制相比,有什么好处 非常感谢您的帮助。在DDD术语中,会计通常是一个下游有界的上下文。这意味着创

我目前正在为一个Java Web堆栈(Spring、Hibernate、HTML5..)工作并基于该堆栈,该项目使用的是设计和开发原则方法

我们的团队被要求实施一个会计系统,该系统将通过创建和存储会计分录来响应业务事件(如向客户请求付款或收到付款)。Martin Fowler的团队似乎提倡使用基于事件的系统。因此,我的问题如下:

  • 是否为此目的使用了正确的方法
  • 如果是,与在我们的项目中实施新的事件机制相比,有什么好处

非常感谢您的帮助。

在DDD术语中,会计通常是一个下游有界的上下文。这意味着创建记帐操作是为了响应来自其他系统的事件。正如您所指出的,Martin Fowler的会计模式也反映了这一点

Udi所描述的域事件基础设施是否是正确的方法取决于当前系统的外观。Udi描述的是一个直接从域实体发布域事件的框架。如果这是你的首选方法,那就去做吧。您应该考虑的是:1)所描述的框架并不简单——您必须处理线程问题和事务;2)它在单个进程中处理发布事件;如果您需要发布到其他系统,则需要实现一个调度程序


重要的收获是域事件本身的概念——表示域中发生了一些“有趣”的事情。事件驱动的建模方法是从其他方法到范式的转变。它们是如何出版的并不重要。

非常感谢您的回答。你是说Udi的方法不是微不足道的。您知道更容易实现的域事件系统吗?此外,对于下游有界上下文(如记帐),这种事件驱动的建模方法的真正好处是什么?对于更简单但封装较少的替代方案,您可以让应用程序服务发布事件,而不是域对象。事件驱动方法的好处在于它更好地反映了现实。