中间层
目前我发现的最大的改良架构的通解 就是增加中间层。
比方说 前后端分离,使用 node 来做BFF(backend for frontend),实际上就是在传统前后端 增加了 node这一层,通过此有两点好处,一个是前端彻底接管了 view 层,后端渲染也开始全部由前端掌控,另一个就是 接口层 增加了一层。
BFF 的前端接口层
我称之为前端接口层,众所周知,后端接口返回的数据往往是不适合前端使用,因为后端的数据是来自于领域建模,而前端作为数据的消费者,所想要的数据其实是 ui数据,无论是数据的含义、还是需要的数据种类、数据结构都往往有巨大的改变,所以我们需要做 数据转换。
service 层
如果把这些数据转换 集中式处理的时候,通常会称之为 service 层。在有 node 之前 这个 service层实际上是在前端完成的,这有时候会导致严重的性能问题,
性能上
比方用户的一个点击事件,我们需要三种数据源,并且数据源之间互相依赖,这时候,我们必须异步串行的请求数据,一个交互事件所需的等待耗时大大加剧。
其次,复用和缓存 很难做,比方说跨页面的 相同service 需求。
在 node 端 实现的 BFF 的前端接口层实际上还是 service 层,只不过 service 层 是在服务器上运行的,缓存就很好利用起来了,比方说,A 需要 一种service,B 也需要相同的 service ,又恰好 A、B 的输入 key 相同,则这个 service的结果可以缓存起来,并且被复用。
开发上
BFF 的 service 层,可以很容易做到应用级别的复用。
还有很重要的一点是,解耦。
假如没有 service层,我们可以想象,当后端数据源发生了改变,那么前端页面也需要改变,当然,我们通常会要求后端数据源不变,但是总有万一,一旦数据源发生改变,由于前端页面是紧密耦合到数据接口的,所以需要改动的地方非常之多。但是在这种情况下,如果我们有数据转换这一层,实际上在这一层改改,保证前端消费的数据格式不变,即可应对这次数据源的变化。
缓存
上面提到了缓存,其实,缓存也是中间层的一个显著代表,它就是 数据源 和 数据消费者 中间的一层。只不过它的用途不是 fordev 而是 for performance。
缓存的思想在计算机领域被广泛应用,cpu、内存、外存、web 后端开发、web 前端开发,实际上我们也可以理解成 中间层在计算机领域被广泛利用,最著名的还包括 计算机网络 五层模型。
总结
以上只是我罗列的几点,实际上我觉得,基本上中间层的意义 就在于 开发上的复用和解耦、性能上的提升(其实缓存也就是在复用)。
版权属于:
emer
文章声明:
本文版权内容属于《快乐小窝》转载请标明出处
评论一下?