浅谈6种API架构模式

在摸鱼刷X时,看到一张非常棒的图,是关于不同API架构的,下面学习记录一下。

在这里插入图片描述
(摘自网络)

1、gRPC

gRPC是一种高性能、跨语言、易扩展的远程过程调用(RPC)框架,可用于分布式系统之间的通信。gRPC被广泛地应用于微服务体系结构中。

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
在这里插入图片描述

具体参考gRPC 官方文档中文版,地址如下:http://doc.oschina.net/grpc?t=58008

2、SOAP

SOAP是一种比较古老的数据交换方式,常用于在Web服务实现中交换结构化信息的协议,以其严格的标准和基于XML的消息格式而闻名,不过现在新系统的应用已经不多了。
SOAP(Simple Object Access Protocol,即简单对象访问协议) ,是一个轻量级协议,用于在分散的分布式环境中使用XML在对等体之间交换结构化和类型化的信息。或者更简单地说:SOAP是一个基于XML的通信协议
(SOAP被认为是第二代XML协议,第一代具有代表性的技术叫XML-RPC)
SOAP使用XML数据格式,以描述调用的远程接口、参数、返回值和出错信息等等。它可以基于多种传输协议来传递消息(HTTP/HTTPS、SMTP、TCP、UDP等)。
SOAP本身没有定义任何应用程序的语义,如编程模型或特定的实现语义。相反,它通过提供一个模块化的包装模型和编码机制来表达应用程序语义的简单机制,用于在模块中编码数据。这使得SOAP可以被用于从消息系统到RPC的大量系统中。
具体参考大佬相关博客。

3、GraphQL

GraphQL是Facebook开源的一种新颖的架构模式,允许客户端只请求他们需要的数据,可以有效地减少数据的过度获取等问题。
GraphQL是一种用于API的查询语言,是由Facebook公司于2012年开发的一种新型的API架构方式。GraphQL旨在提高客户端应用程序的数据获取效率,通过定义数据的类型和结构使得API更加灵活和可扩展。与传统的API不同,GraphQL允许客户端指定需要哪些数据,从而减少了不必要的数据传输和处理,提高了API的效率和可用性。
GraphQL的核心思想是用一个API来代替多个API,通过GraphQL API,客户端可以获取所需的所有数据,而不需要调用多个API或者进行多次请求。GraphQL还支持实时数据查询和订阅,使得客户端可以实时获取数据更新,从而更好地支持实时应用程序。

具体参考官网,地址如下:https://graphql.org/

4、WebHook

WebHook是一种被动式的实时通信机制,其中应用程序向预定义的URL发送HTTP POST请求以通知并触发另一个系统中的操作。
Webhook 是一个 HTTP 请求,由源系统中的事件触发并发送到目标系统,通常带有数据负载。 Webhook 是自动化的,换句话说,当它们的事件在源系统中被触发时,它们会自动发送出去。
这为一个系统(源)在事件发生时与另一个系统(目标)“对话”(HTTP 请求)提供了一种方式,并共享有关已发生事件的信息(请求有效负载)。
在这里插入图片描述

具体参考地址:https://developer.kookapp.cn/doc/webhook

5、REST

REST是一种用于设计网络应用程序的架构风格,使用标准的HTTP方法(GET、POST、PUT、DELETE)来操作资源。
REST采用无状态的客户端-服务器模型,并使用缓存来减少网络延迟和带宽消耗。REST服务通常使用JSON或其它轻量级的数据格式来交换数据。
在当前的web应用中用来进行数据通信是非常广泛的,也非常主流。

具体参考如下:https://www.runoob.com/w3cnote/restful-architecture.html?_=1492917708

6、WebSocket

WebSocket是一种支持客户端和服务器之间通过单一、长期连接方式进行的双向实时通信协议,非常适合需要低延迟更新的应用程序,如:实时聊天、主动推送、游戏等领域。
在 WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在当前的web应用中也是非常广泛和主流的一种通信技术方式。

具体参考:https://geek-docs.com/websocket/websocket-tutorials/websockets-overview.html

猜你喜欢

转载自blog.csdn.net/leijie0322/article/details/132852063