在这篇文章中,我们将讨论以下话题:
- API 架构风格
- Git 命令如何工作
- Levels.fyi 如何扩展到数百万用户
- MVC、MVP、MVVM、MVVM-C 和 VIPER 架构模式
API 架构风格
下图显示了常见的 API 架构风格。
REST
2000 年提出,REST 是最常用的风格。它通常用于前端客户端和后端服务之间。它符合 6 个架构约束。负载格式可以是 JSON、XML、HTML 或纯文本。
GraphQL
GraphQL 由 Meta 于 2015 年提出。它提供了模式和类型系统,适用于实体关系是图状的复杂系统。例如,在下图中,GraphQL 可以在一次调用中检索用户和订单信息,而在 REST 中这需要多次调用。GraphQL 不是 REST 的替代品。它可以建立在现有 REST 服务之上。
WebSocket
WebSocket 是一个协议,在 TCP 上提供全双工通信。客户端建立 WebSocket 以从后端服务接收实时更新。与总是”拉取”数据的 REST 不同,WebSocket 使数据能够被”推送”。
Webhook
Webhook 通常用于第三方异步 API 调用。在下图中,例如,我们使用 Stripe 或 Paypal 作为支付渠道并注册一个 webhook 用于支付结果。当第三方支付服务完成时,它会通知支付服务支付是否成功或失败。Webhook 调用通常是系统状态机的一部分。
gRPC
gRPC 于 2016 年发布,用于微服务之间的通信。gRPC 库处理编码/解码和数据传输。
SOAP
SOAP 代表简单对象访问协议。它的负载仅为 XML,适用于内部系统之间的通信。
问题:你使用过哪些 API 架构风格?
Git 命令如何工作
几乎每个软件工程师都使用过 Git,但只有少数人知道它是如何工作的 :)
首先,重要的是识别我们的代码存储在哪里。通常的假设是只有两个位置——一个在像 Github 这样的远程服务器上,另一个在我们的本地机器上。然而,这并不完全准确。Git 在我们的机器上维护三个本地存储,这意味着我们的代码可以在四个地方找到:
- 工作目录:我们编辑文件的地方
- 暂存区:一个临时位置,文件为下次提交而保存
- 本地仓库:包含已提交的代码
- 远程仓库:存储代码的远程服务器
大多数 Git 命令主要在这四个位置之间移动文件。
问题:你知道”git tag”命令在哪个存储位置操作吗?这个命令可以给提交添加注释。
Levels.fyi 扩展案例
我今天读到了令人难以置信的事情:Levels.fyi 使用 Google Sheets 作为后端扩展到数百万用户!
他们从 Google Forms 和 Sheets 开始,这帮助他们达到了数百万月活跃用户,然后才切换到合适的后端。
公平地说,他们确实使用无服务器计算,但使用 Google Sheets 作为数据库是一个有趣的选择。
为什么他们使用 Google Sheets 作为后端?用他们自己的话说:“对于一个流量如此大的网站来说,没有后端或任何花哨的基础设施似乎是一个相当反直觉的想法,但我们构建产品的理念一直是,从简单开始并迭代。这使我们能够快速行动并专注于重要的事情”。
应用架构模式
这些架构模式是应用开发中最常用的,无论是在 iOS 还是 Android 平台上。开发人员引入它们是为了克服早期模式的限制。那么,它们有何不同?
- MVC:最老的模式,可以追溯到近 50 年前
- 每个模式都有一个”视图”(V)负责显示内容和接收用户输入
- 大多数模式包括一个”模型”(M)来管理业务数据
- “控制器”、“呈现器”和”视图模型”是视图和模型之间的翻译器(VIPER 模式中的”实体”)
- 这些翻译器可能非常复杂,所以提出了各种模式使它们更易维护
问题:请记住,这不是架构模式的详尽列表。其他值得注意的模式包括 Flux 和 Redux。它们与这里提到的模式相比如何?
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP49: API Architectural Styles。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。