侧边栏壁纸
  • 累计撰写 197 篇文章
  • 累计收到 496 条评论

BFF中间层

2019-12-9 / 0 评论 / 39 阅读

中间层



目前我发现的最大的改良架构的通解 就是增加中间层



比方说 前后端分离,使用 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 前端开发,实际上我们也可以理解成 中间层在计算机领域被广泛利用,最著名的还包括 计算机网络 五层模型。



 总结



以上只是我罗列的几点,实际上我觉得,基本上中间层的意义 就在于 开发上的复用和解耦、性能上的提升(其实缓存也就是在复用)。

评论一下?

OωO
取消