Skip to content

CkTools.Nova

王学懿 edited this page May 24, 2024 · 1 revision

业务中间件化

这个库主要的目的是降低业务复杂度,提高可读性。使用中间件思想、链式、建造者模式制作一些基础结构,然后在结构之上去编写开发业务代码。

对比和适用场景

方式 代表 特点 适用场景
业务中间件化 Step特性 顺序可配、需要IOC 单一目的,但过程复杂
比如:更新用户名,需要通知N个子模块,甚至需要先更新A模块后拿到某个token后去更新B模块
方法执行器 ActionExecuter 轻量化 中小型需求均可,适用性广
比如:将某份数据同步到B系统,数据存在时不更新,数据不同时按某种方式更新

相同之处

  1. 框架将业务逻辑做为它的处理对象,也就是玩委托
  2. 将业务代码拆成一块一块,像搭积木的方式一点点拼出要的效果。
  3. 修改其中的一块拼图时,不影响其它代码,影响范围很小
  4. 理论上0副作用,同一个实例执行多次后效果一样
  5. 调用方式与传统的均不同:
  • 业务中间件化在编码时非常像开发http中间件;调用时,需要先从DI中获取第1个实例,然后执行;
  • ActionExecuter在遍码时,需要在构造方法中配置调用顺序;调用时,需要先实例化一个对应执行器实例出来,调用Execute方法执行,再取出结果。

不同之处

适用场景:

  • 业务中间件化:侧重于大型、超大型复杂情况(300行代码+),构建它的过程和开发http中间件很相似。每个中间件内部可以使用方法执行器来继续编写,也可以使用传统方式。
  • 方法执行器:侧重于中小型复杂情况,使用时最好懂一点点链式、函数式思想(不会也行),可以帮助你更好梳理逻辑

环境依赖:

  • 业务中间件化:需要IOC环境才能自动计算执行顺序
  • 方法执行器:IOC环境或直接new均可,更灵活

与传统写代码的区别

  • 传统:代码行1234...去执行,所有的逻辑可以从上向下一直看。好处是所有人理论上可以看懂代码,坏处是修改代码时你得阅读完所有的代码才能确定影响范围
  • 新式:编码时搭积木,调试阅读时需要找到配置顺序的地方,然后再跳转到具体的代码。好处是代码清晰、业务清晰、修改代码影响范围小,坏处时看代码多一步去看顺序,需要适应一下。