codingapi / springboot-framework

springboot领域驱动开发
Apache License 2.0
123 stars 43 forks source link

面向领域驱动设计 —— Domain Driver Design #14

Open xlorne opened 2 years ago

xlorne commented 2 years ago

业务分类:

  1. 主动业务,业务由自己可控,例如自己有一个订单对象,你通过订单对象可以完成对订单的创建与变更。
  2. 被动业务,业务的控制是由其他资源控制的,例如同样是订单的操作,但是你需要调用其他服务的api实现,而不是由自己的业务来实现。

PS: 针对这两种业务,是都可以实现业务模型的自控的。这里主要讨论的是被动业务模式,在这种情况下开发的过程中,容易被第三方的提供能力所束缚,例如受限于他提供的接口顺序与字段要求,容易让自己的业务模型变成了调用服务的工具类,从而失去了模型的意义。对应这样的场景,提供两个建议:
1,我们可以把第三方服务看做成数据库服务,这样你的业务模型与第三方服务交互的过程就变成了是由Repository完成的持久化过程了。
2,为了应对第三方服务层面的设计(如接口顺序、字段限制)问题影响到业务模型,可以在第三方服务的基础设施上做适配器,不要让第三方服务的设计问题腐蚀到你的业务模型。

xlorne commented 2 years ago

关于事件与事务之间的关系说明:

xlorne commented 1 year ago

关于Event与Trigger的差异说明:
Trigger与Event差异是,Event是消息驱动性,而Trigger是订阅驱动性。
两者的差异在于,Event是确定了消息而不确定订阅方,而Trigger则是确定了订阅在等待消息触发。

bestHAI commented 1 year ago

👍👍👍