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