【问题标题】:Should I design an accounting system with domain events or not?我是否应该设计一个包含领域事件的会计系统?
【发布时间】:2013-07-16 16:05:48
【问题描述】:

我目前正在为一个基于 Java-Web 堆栈(Spring、Hibernate、HTML5..)的项目工作,它使用Domain-Driven-Design 原则的方法进行设计和开发。

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

  • domain events 是用于此目的的正确方法吗?
  • 如果是,与在我们的项目中实施新的事件机制相比,有什么好处?

非常感谢您的帮助。

【问题讨论】:

    标签: java events design-patterns domain-driven-design accounting


    【解决方案1】:

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

    Udi 描述的领域事件基础架构是否是正确的方法取决于您当前的系统是什么样的。 Udi 描述的是一个直接从领域实体发布领域事件的框架。如果这是您的首选方法,那就去吧。您应该考虑的是 1) 所描述的框架并非微不足道 - 您必须处理线程问题以及事务,2) 它解决了单个进程中的发布事件以及您是否需要发布到其他系统您将需要实现一个调度程序。

    重要的一点是领域事件本身的概念——表明领域中发生了一些“有趣”的事情。事件驱动的建模方法是从其他方法的范式转变。它们的发布方式不太重要。

    【讨论】:

    • 非常感谢您的回答。您是说 Udi 的方法并非微不足道。你知道更容易实现的领域事件系统吗?此外,对于会计等下游有界上下文,这种事件驱动的建模方法的真正好处是什么?
    • 对于一个更简单但封装较少的替代方案,您可以让应用程序服务发布事件而不是域对象。事件驱动方法的好处是它可以更好地反映现实。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多