粉丝3381获赞10.0万




b f f 是什么?有人开玩笑说应该是 best friend forever。 其实 b f f 是 backinged for front end 手字母的缩写,也就是前端的后端。 b f f 通过网络协议连接到后端服务, 在微服务架构环境下也可以是一个微服务。 bf f 的技术实现可以多种多样,如 note, gs, jumper、 python, golden。 bf f 承担什么职责?一、聚合,通过聚合后端多个接口的数据,为前端提供所需要的完整数据。二、裁剪过滤掉对于前端应用无用的数据,比如去掉一些前端用不到的自断,我们要时刻不忘遵守 最少数据原则,客户端不需要的数据不要提供。三、是配,根据端的不同提供端特有的数据,如根据移动端系统或应用的差别生成不同的分享或跳转链接。 四、验权,负责前端身份与权限认证、绘画状态保持等。五、安全,提供应用层,安全层,防止非法请求,保证数据安全,如用户身份认证,防止 csrf 攻击等。 六、结偶,关注点分离 separation of concerns。 b f f 关注前端用户体验,后端 apr 关注业务领域模型,不应当包含特定或核心的业务 逻辑,不应当保存核心业务数据。七、附用有助于避免重复开发带来的工作量,也可以节约运为成本。 b f f 一个重要作用就是聚合不同前端应用的重复代码。当你发现相同业务的不同前端应用,通过 ap2 获取到数据后,请求多个接口 或转换或过滤了一些响应数据,或都进行了相同的基于结果数据的进一步计算。此时 你需要考虑把这些代码迁移到 b f f。 八、控制 b f f 应当有能力根据前端应用的性质不同,控制哪些数据,应当或不应该提供给哪个应用。九、统一 b f f 可以承担后盾 到前端数据传输过程中协议不一致,统一协议的角色如有的是 https, 有的是。二、 pc。 十、题效 可以避免一个业务后台对接多个前端应用的困境,也可以避免一个前端应用需要对接多个业务后台的麻烦。 十、一、分流可以用于分散用户端的并发请求。弄清了 bf f 的概念,你可能会有以下疑问,一、一个完整的 bf f 应当是什么样的? 除了实现 ux 需要的基本业务功能、数据和操作接口外,一个完整的 bf f 微服务也应当有监控、降级、熔断、调用链跟踪、 ab 发布等等能力。 二、 b f f 应当包含数据库的访问吗?前面已经说了, b f f 是后端的前端,既然它不是处于整个系统的底层,它有自己的后端,所以一般 b f f 不应当包含数据库的操作。 三、对于缓存的操作可以有吗?我觉得是可以有的,这就要看是否需要在 bf f 层缓存数据。 四、可以包含消息队列的操作吗?我觉得需要尽量避免,理由是 bf f 应当尽量轻量化, 消息对列的操作大多是与核心业务相关的,而核心业务应当后至到更底层。五、 bf f 如何划分一种前端应用?应当对接 一个 b f f, 一个 b f f 可以对接多个前端应用,取决于前端应用需求的相似度。如相同业务、不同平台、 android、 ios 的 app 划分的基本原则是 us 的差异, 一个前端应用尽量对接一个 b f f 六 b f f 应当是前端团队的工作还是应当是后端团队的工作? 这个问题应当遵循效率的原则。试问一下,我们为什么要切分 bf f? 一定是为了结偶和提效,我觉得可能放在同一个团队,尤其是同一个业务团队,应变能力更快,效率最高。那 bf f 的缺点又有哪些呢?我觉 主要有以下两点,一由于在调用电路上又增加了一层,所以会有网络延迟上的增加二会增加微服务应用的数量,增加鱼尾的难度。最后再给你两个思考问题, 一,什么技术更适合实现 b f f? 二 b f f 可以包含 h t m l 页面吗?