通讯协议-1

1.API架构风格

  SOAP:简单对象访问协议是一种基于 XML 的消息传递协议,用于在网络上进行交互式通信。它通常用于在分布式环境中的应用程序之间进行通信,允许不同的应用程序使用标准化的协议进行交互。

  RESTful:遵循 REST 架构风格设计的 Web 服务,具有一些特定的设计原则和约束条件。

    RESTful 服务是无状态的,每个请求都包含了客户端所需的所有信息,服务器不会保留关于客户端状态的任何信息。这使得 RESTful 服务易于扩展和管理。

    1. 无状态性:RESTful 服务是无状态的,每个请求都包含了客户端所需的所有信息,服务器不会保留关于客户端状态的任何信息。这使得 RESTful 服务易于扩展和管理。

    2. 资源导向:RESTful 服务将数据和功能抽象为资源,每个资源都有一个唯一的标识符。客户端通过 URI 定位资源,并使用 HTTP 方法(如 GET、POST、PUT、DELETE)对资源进行操作。

    3. 统一接口:RESTful 服务通过统一的接口定义了资源的访问方式,包括使用标准的 HTTP 方法、使用标准的媒体类型(如 JSON、XML)和遵循 HATEOAS 原则(Hypermedia as the Engine of Application State)。

    4. 可缓存性:RESTful 服务可以利用 HTTP 协议的缓存机制来提高性能和可伸缩性。服务器可以使用适当的缓存策略来标记响应是否可以被缓存以及可以被缓存的时间。

    5. 按需编码:RESTful 服务应该以最小的信息传输来响应客户端请求。客户端和服务器之间传输的数据应该以最小的表示形式进行交换,以提高性能和减少网络开销。

  GraphQL:用于 API 的查询和数据操纵。它提供了一种灵活的方式来描述数据的结构和查询数据,允许客户端精确地请求需要的数据,从而减少了不必要的数据传输。

    1. 灵活的查询语言:GraphQL 允许客户端定义自己需要的数据结构,从而消除了传统 RESTful API 中由服务端定义的固定数据结构的限制。

    2. 单一端点:GraphQL 通常只有一个端点,客户端可以通过查询来获取所需的数据,而不需要多个不同的端点来获取不同类型的数据。

    3. 精确定义的响应:客户端可以精确地定义希望从服务器获取的数据字段,从而避免了过度获取或未能获取足够数据的问题。

    4. 强大的类型系统:GraphQL 提供了强大的类型系统,用于定义数据的结构和关系。这使得客户端可以清晰地了解服务器上可用数据的结构。

    5. 解析器:GraphQL 服务器使用解析器来解析客户端发送的查询,并构造对应的响应。这些解析器将客户端请求映射到后端数据源,并返回客户端所需的数据结果。

  grpc:由 Google 开发的高性能、通用的开源 RPC 框架,用于构建跨平台的分布式应用程序和服务。

    1. 基于 HTTP/2:gRPC 建立在 HTTP/2 协议之上,从而可以利用 HTTP/2 的许多优势,如多路复用、流控制、头部压缩和服务器推送等,提高通信的效率和性能。

    2. 多语言支持:gRPC 支持多种编程语言,包括 C++、Java、Python、Go、Node.js、C# 等,使得开发人员可以使用自己喜欢的语言构建跨平台的分布式应用程序。

    3. IDL 接口定义语言:gRPC 使用 Protocol Buffers 作为接口定义语言(IDL),它提供了一种简单的语言来定义服务接口和消息格式。通过 Protocol Buffers,开发人员可以定义复杂的数据结构和服务接口,而无需担心不同语言之间的兼容性问题。

    4. 双向流和流控制:gRPC 支持双向流和流控制,允许客户端和服务器之间同时发送和接收数据流,从而提高了通信的灵活性和效率。

    5. 认证和安全:gRPC 支持基于 SSL/TLS 的认证和加密,确保通信的安全性和保密性。它还提供了各种认证机制,如基于令牌的认证和基于 JWT 的认证等。

  WebSocket:是一种在单个 TCP 连接上实现全双工通信的协议,它允许客户端和服务器之间进行实时的双向通信。一旦 WebSocket 连接建立起来,它会保持持久性连接状态,直到任一端明确地关闭连接。WebSocket 通过减少请求和响应之间的交互次数,可以实现低延迟的实时通信。WebSocket 支持跨域通信,允许客户端与不同域的服务器进行实时通信,而不受同源策略的限制。

  Webhook:是一种 Web 回调或 HTTP 回调,它是一种自动化的方式,通过 HTTP 协议将实时事件或数据传送给指定的URL。它通常用于实时通知和事件传递,允许应用程序之间进行实时数据传输和通信。

2.GraphQL VS RESTful

  GraphQL提供了 API 中数据的完整描述,并让客户能够准确询问他们需要的内容。

  GraphQL 可以将多个 REST 请求聚合到一个查询中。GraphQL 服务器以图表形式组织资源。

  GraphQL 服务器可以整合多种数据源、服务或第三方 API,从而提供更灵活的数据查询和处理能力。

  GraphQL 支持查询、突变(对资源应用数据修改)和订阅(接收有关架构修改的通知)。

 

 

 

  

posted @ 2023-10-25 21:32  花都八达鸟  阅读(17)  评论(0)    收藏  举报