写点什么

API 后端服务前端的模式介绍

  • 2015-12-31
  • 本文字数:1152 字

    阅读完需:约 4 分钟

屏幕更小、有限的数据计划和需要更少请求的移动设备的 web 体验与桌面浏览器有诸多不同。移动设备需要更少往往也是不同的数据,并且可能提供其它交互,比如通过条形码扫描器。这意味着我们需要在 API 后端添加额外的功能,实现对移动设备的支持, Sam Newman 在他的博客文章中如此解释,并描述了 API 后端模式,用于处理不同类型用户体验设备之间的不匹配。

Thoughtworks 的开发者 Newman 描述了一种解决方案,构建一个通用的 API 后端,用于所有类型的用户接口。由于非常不同的需求,虽然在实践中这意味着向后端增加功能和复杂性。但是它也可能成为瓶颈,因为需要对支持的所有设备部署所需的所有变更,它会减慢部署过程。当从事通用后端开发时,有时需要创建一个特殊团队,尤其是后端团队,在 Newman 看来,这会增加问题,现在前端团队需要与一个独立的团队进行沟通,同时这个团队还必须优先考虑来自其他团队的需求。

另一种 Newman 已经看到在使用的解决方案是为每个用户体验开发一个 API 后端。从概念上来讲,一个面向用户的应用由两部分组成,一个在客户端,一个在服务端,也就是服务于前端的后端(BFF 这一术语是由 SoundCloud 的 Phil Calçado 创造的)。

BFF 通常紧密耦合到一个特定的用户接口,二者均由同一个团队维护。当在不同的平台上处理相同类型的用户接口时,比如 Android 和 iOS,Newman 描述了两种方法,一种每个平台一个 BFF,另一种是每种类型的接口一个 BFF。

Newman 更倾向每个平台一个 BFF 这种严格的模型,比如一个用于 Android 和一个用于 iOS。其中值得关注的是这种方法有在 BFF 之间产生大量重复工作而结束的风险,比如相同类型的聚合或者为下游服务接口而产生的相似代码,但是他一点也不担忧这种重复工作,因为它是跨进程壁垒。合并成一个通用的聚焦边缘 API 服务(a general-purpose aggregating Edge API service)是他极力警告和反对的,并指出这种模型已经被一次又一次的证明会导致高度臃肿的代码。

为每个类型的客户端使用一个 BFF,即 Android 和 iOS 共同使用一个 BFF,这种方法他看到 SoundCloud 已经在使用。他对这种方法的顾虑是,随着越来越多类型的客户端,增加了 BFF 臃肿的风险。

同样为 Thoughtworks 工作的 Lukasz Plotnicki 最近写了一篇博客文章,从一体性 Rails 应用转向使用微服务期间 SoundCloud 所做的 BFF 工作

在 Thoughtworks 最新的技术雷达上, BFF 被作为一项值得追求的技术而被提及。

查看英文原文 A Pattern for API Backends Serving Frontends


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-31 18:008272
用户头像

发布了 92 篇内容, 共 25.8 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

喜讯!云起无垠成为国家信息安全漏洞库(CNNVD)技术支撑单位

云起无垠

我干嘛要去学Python???!!!

代码生成器研究

为什么 Mac 适合编程?

代码生成器研究

淘宝商品详情API接口文档(API SDK)

tbapi

淘宝商品详情数据接口 淘宝API接口 淘宝商品详情页面数据 淘宝商品详情数据采集方法 天猫数据接口

核药供应链创新:远大医药策略与明道云实践

明道云

Puppeteer是什么?如何使用Puppeteer实现浏览器自动化

爱写字的阿城

自动化 批量 puppeteer

【腾讯云云上实验室】用向量数据库——实现高效文本检索功能

熬夜磕代码、

数据库、

百度大模型安全解决方案获WitAwards 2023 年度大奖

百度安全

安全 大模型安全

SQL 通配符:用于模糊搜索和匹配的 SQL 关键技巧

小万哥

MySQL 数据库 程序员 sql 后端开发

PolarDB 物理复制刷脏约束问题和解决

ba0tiao

innodb MySQL 数据库 polarDB

GPT-4 API全面开放使用

Geek_ccdd7f

花见Live Wallpaper 4K Pro for mac(4k视频壁纸)

展初云

Mac 动态壁纸软件 Mac视频壁纸

好用的图片处理工具 JixiPix Pastello Pro激活最新版

mac大玩家j

Mac软件 图像处理工具 图像编辑器

拼多多商品详情数据接口应用在哪些场景?

tbapi

拼多多 拼多多商品详情接口 拼多多API接口

智能汽车的山海之盾

脑极体

智能汽车

为什么chatGPT中文版不需要梯子🪜翻墙,在中国是合法合规的??

Geek_ccdd7f

一文搞懂Go gRPC服务Handler单元测试

Tony Bai

Go golang gRPC 单元测试 微服务、

硬盘监测和系统优化工具推荐Sensei 注册激活版

胖墩儿不胖y

Mac软件 优化软件 系统清理工具

软件测试/人工智能|一文教你如何配置自己的AutoGPT

霍格沃兹测试开发学社

12 月 3 日北京,时序数据管理前沿技术+行业应用尽在 IoTDB 用户大会!

Apache IoTDB

超级应用平台(HAP)起航

明道云

Sensei for Mac(系统优化工具)

展初云

Mac Mac软件 系统优化工具

3D建模软件Rhino 8 for Mac(犀牛)

展初云

Mac 建模软件 Rhino 8 犀牛

云HIS医院信息化管理系统源码:集团化管理,多租户机制,满足医院业务需求

源码星辰

源码 Java’ 云计算,

如何系统、科学地自学编程知识?

代码生成器研究

LED驱动控制专用电路

芯动大师

铭文聚合交易平台 Scorpio:铭文赛道狂潮的新引领者

股市老人

全链协同,链接未来|端点科技联合IDC重磅发布新一代ERP白皮书

科技热闻

2023年datafun随手记(1)

Hua

大数据 AI GPT LLM

API后端服务前端的模式介绍_架构_Jan Stenberg_InfoQ精选文章