领域驱动设计思考(Service与Domain分工)

POST事件

        由谁来处理

如果domain之间有调用不通过service,那么service无法感知到所有时间,这些消息通知只能有domain来处理。但这个通知要在持久化之后么?这样又和持久化谁处理相影响

        有谁来发送

一般来说在save完成后发送message,那么这样来看发送消息就是service的责任,这样做还有一个好处就是可以决定是否发送

权限

本着简单处理事务一致性的原因,操作一旦开始就不能中止。权限的检查应当由controller里作为入口的方法在调用domain和其他service方法之前检查(包括状态等其他业务上先决条件)

领域驱动设计思考(锁)

对应关系

一个领域对象可否能在多个service调用,还是要有一个专属的代理service

如果从未来微服务角度考虑,允许拆分。那么都走service最稳妥,但这样是否放弃了事务?

有的时候一个请求有多个影响时可以

A调用B,A调用C

B调用A,B调用C

以上两种方法体现出来的业务上的差异未必明确。单纯从URL上来看A和B都可以把自己的id放到URL上。那么这时就看要返回的VO是哪个了。

不过这样Service也就分为两类

调用别人的Service

不调用别人的Service,那么这种Service可否调用两个Domain呢?显然是可以的,因为Service就是要起到聚合作用,另外还可以控制事务。

理想的情况下外界请求直接发送到决定该操作是否成功的微服务,该服务完成后执行保存并发送消息。

批处理

如果要save多个domain(这里面又分为两种情况,这些domain相同类型或不同类型),如果希望使用数据库的transaction那么就由Service调用repository的方法来实现。

总结

service用来处理多个domain之间的入口。如果实体之间有关联

1    异步消息

      数据存储

      同步调用?

2    domain调用domain

    2.1    本地调用

    2.2    异步调用service

3    domain调用service

    主要是创建另一个domain

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值