API 流行架构风格 6 + 1

120 阅读4分钟

gRPC

grpc.gif

  • gRPC是“Google Remote Procedure Call” 首字母缩写,是一个高性能的RPC框架。
  • 它与语言无关,这意味着它支持多种编程语言,使其适用于多语言微服务架构。
  • gRPC 使用协议缓冲区 (protobufs) 进行高效的数据序列化,从而减小消息大小并加快通信速度。
  • 它支持各种身份验证机制和功能,例如负载平衡、重试和构建可靠分布式系统的截止时间。
  • gRPC 通常用于构建微服务,可用于client-server的通讯与server-server通信。

SOAP

soap.gif

  • SOAP 是“Simple Object Access Protocol”的缩写,是在 WebService 中交换结构化信息的协议。
  • 它依靠XML作为消息格式,使其具有高度结构化和自描述性(WSDL & RDF)。
  • SOAP 具有严格的标准和严格的消息格式,与其他 Web 服务协议相比,这可能使其灵活性降低。
  • 它支持各种通信协议,包括HTTP,SMTP等。
  • 基于 SOAP 的 WebService 以其可靠性、安全功能和对复杂事务的支持而闻名。

REST

rest.gif

  • REST(Representational State Transfer)是一种用于设计网络应用程序的体系结构样式。
  • 它使用标准的HTTP方法(GET,POST,PUT,DELETE)来操作表示为URL的资源。
  • REST 促进无状态的 Client-Server交互,其中从客户端到服务器的每个请求都必须包含所有必要的信息,并且服务器不存储客户端状态。
  • 由于其简单性、可扩展性以及与现有 Web 基础架构的兼容性,它被广泛用于构建 API。

Webhook

webhook.gif

  • Webhook 是一种用于应用程序或系统之间实时通信的机制。
  • 它的工作原理是一个应用程序将 HTTP POST 请求发送到预定义的 URL(通常由另一个应用程序提供)以通知或触发操作。
  • Webhook 通常用于事件驱动的体系结构,例如发送通知、更新或触发自动化流程。
  • 它们对于集成不同的服务和实现实时数据同步至关重要。

WebSocket

websocket.gif

  • WebSocket 是一种协议,它支持通过单个长期连接在客户端和服务器之间进行双向实时通信。
  • 它非常适合需要低延迟更新的应用程序,例如聊天应用程序、在线游戏和金融交易平台。
  • WebSocket 允许客户端和服务器随时发送消息,而无需持续轮询。
  • 与实时应用程序的传统基础 HTTP 的通信相比,它旨在减少开销和延迟。

GraphQL

graphql.gif

  • GraphQL 是一种用于 API 的查询语言和运行时,它允许客户端准确请求所需的数据,从而减少数据的过度获取和获取不足。
  • 与端点是固定的 REST 不同,GraphQL 为所有查询和突变提供单个端点,允许客户端调整响应。
  • 它支持自描述,这意味着客户端可以查询架构以发现可用的类型和操作。
  • GraphQL 适用于构建灵活高效的 API,尤其是对于具有动态数据要求的应用程序,如移动应用程序。

tRPC

image.png

  • tRPC是“typed Remote Procedure Call”的缩写。它是一种从另一台计算机(Client)调用一台计算机(Server)上的函数的方法。
  • tRPC与语言无关,这也就意味着 tRPC 允许不同编程语言实现的服务之间进行通信,这为构建复杂的分布式系统提供了更大的灵活性和可扩展性。
  • tRPC的 “t” 意味着数据之间传递的类型是可预测的,减少由于数据不匹配而导致的错误。
  • 相对于其他 RPC 框架,tRPC 提供了更简单且易于使用的接口,使开发人员能够更快地构建和部署分布式系统。
  • 使用接口描述语言(IDL),可以明确定义服务之间的接口和通信协议,从而确保不同实现之间的兼容性和一致性。
  • tRPC 框架通常针对性能进行了优化,可以提供高效的数据传输和通信方式,减少了因为通信开销而导致的延迟问题。

总结:

介绍了七种API调用的风格,老夫斗胆,对这几种风格的接口,做个预判。SOAP 出现的相对较早,由于传输过程信息体积过大慢慢的退出历史舞台。Rest,graphql 彼此是竞争关系,但是会逐渐被tRpc取代,但不会完全被取代,gRPC 使用的场景会不断增多。