BFF中间层

    选择打赏方式

中间层

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

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

 总结

以上只是我罗列的几点,实际上我觉得,基本上中间层的意义 就在于 **开发上的复用和解耦、性能上的提升**(其实缓存也就是在复用)。
版权声明:若无特殊注明,本文皆为《 张宇童 》原创,转载请保留文章出处。
本文链接:BFF中间层 https://www.zyt8.cn/h/251.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!