后端RPC总结

后端总结:
1、RPC框架有:pandora boot、HSF、acl、buc、schedulerx,sofaboot.
2、面向Rest、RPC接口的返回值和异常处理规范。(Result VS Exception)
场景:在常见的场景当中,接口的返回值比较多样性,有些直接返回DTO甚至DO,另外返回Result。
接口层的核心价值是对外,所以如果只返回DTO或DO会不可避免的面临异常和错误栈泄漏到使用方的情况,包括错误栈被序列化反序列化的消耗,因此提出了一个规范。
规范:Interface层的HTTP和RPC接口,返回值为Result,捕捉所有异常。
规范:Application层的所有接口返回值为DTO,不负责处理异常。
Command Query Event
语意 “希望”能触发的操作 各种条件的查询 已经发生过的事情
读/写 写 只读 通常是写
返回值 DTO或Boolean DTO或Collection Void
3、CQE规范:
Application Service的接口入参只能是Command、Query或Event对象,CQE对象需要能代表当前方法的语意。唯一可以的例外是单一ID查询的情况,可以省略掉一个Query对象的创建。
这个规范的好处是:提升了接口的稳定性、降低低级的重复,并且让接口入参更加语意化。

4、CQE VS DTO 区别:
CQE:CQE对象是ApplicationService的输入,是有明确的“意图”的,所以这个对象必须保证其“正确性”。
DTO:DTO对象只是数据容器,只是为了和外部交互,所以本身不包含任何逻辑,只是贫血对象。
但可能最重要的一点:因为CQE是“意图”,所以CQE对象在理论上可以有“无限”个,每个代表不同的意图;但是DTO作为模型数据容器,和模型一一对应,所以是有限的。

5、校验规则:CQE的校验应该前置,避免在ApplicationService里面做校验,可以通过JSR303/308和Spring的validation来实现。

6、判断是否业务流程的几个点:
1、不要有if/else分支逻辑、
2、不要有任何计算、
3、一些数据转换可以交给其他对象来做、

7、ApplicationService应该返回DTO还是Event,这里做出了规范。
ApplicationService应该永远返回DTO而不是Event。

观察者对象(observer)
观察者对象定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值