API架构对比-Rest,GraphQL,WebRTC,gRPC,SOAP,WebSocket,WebHook

研发玩点艰辛事 2024-03-05 14:18:13
1)首先我们直观的了解下几种常见架构风格的交互效果

Api架构风格交互对比(动图)

2)其次,我们从各个维度对比7种常见的Api架构风格,帮助我们做方案决策

最全面的7种Api架构风格对比--Rest,GraphQL,gRPC,WebRTC,WebSocket,SOAP,WebHook

a)SOAP

是什么:简单对象访问协议,继承XML-RPC的很多特性.

特征:支持有状态和无状态消息,SOAP 逻辑是用WSDL编写,该描述语言定义后端并描述可执行的流程.

通信协议:Http/SMTP

数据格式:Xml

适用场景:金融机构,或可信伙伴之间

优点:内置错误处理,大量安全扩展,语言及平台无关性

缺点:较复杂,xml文件复杂而大,专业性高。

b)Restful Api

是什么:轻量web服务实现式,基于资源的设计理念

特征:HttpMethod等定义了不同的操作

通信协议:Http

数据格式:Json/Xml/Other

适用场景:传统Web Api开发

优点:简单,可伸缩,可移植,独立性

缺点:语义限制,复杂查询聚合多次查询,前后约定

c)GraphQL

是什么:用于Api的查询语言,实现灵活高效按需查询

特征:Queries/查询,Mutations-突变/修改

Subscriptions-订阅/获取更新

通信协议:Http,AMQP,MQTT

数据格式:Json

适用场景:灵活的,动态,按需查询数据

优点:按需返回,单一入口,类型强大,订阅,推送

缺点:较复杂,缺标准,缓存难,缺无状态特性

d)gRpc

是什么:高性能,通用的远程过程调用,实现高效通信

特征:客户端和服务器通信之前要有合约,使用选定的语言为客户端和服务器生成 兼 容的代码。

通信协议:Http/2,TCP

数据格式:Protobuf/Json

适用场景:分布式系统,微服务通信,即时通信,物联网

优点:高效,强类型,全双工,流式,服务发现,拦截

缺点:较复杂,公网受防火墙等限制,配置依赖多

e)WebSocket

是什么:是在单个TCP连接上进行全双工通信的网络通讯协议

特征:建立在 TCP 协议之上,它和HTTP 协议有着良好的兼容性

通信协议:Http,Tcp

数据格式:Text,Binary

适用场景:要双向通信的实时应用,例如chat等,但数据量小

优点:设置和维护简单

缺点:性能不如gRpc或者WebRTC

f)WebHook

是什么:一种回调机制,通过HTTP回调将事件推送给客户端

特征:主动通知-不需要客户端进行轮询

通信协议:Http

数据格式:Xml/Json

适用场景:应用程序集成和异步通知场景

优点:Webhook 允许准实时的更新,避免轮询的资源开销

缺点:需要客户端具备处理回调请求的能力

g)WebRTC

是什么:提供实时通信,支持对等点间发送视频、语音和通用数据

特征:标准化如何简单实现媒体(如音频和视频)在线路进行通信

通信协议:UDP,RTP/SRTP,RTCP/SRTCP,DTLS,SCTP

数据格式:视频流,音频流等

适用场景:浏览器和设备间低延迟实时通信,如浏览器相机,麦克风

优点:在浏览器和设备间实时传输,无需接触服务器,低延迟

缺点:网路设置复杂,无内置信令,要维护STUN ,TURN服务器

0 阅读:0

研发玩点艰辛事

简介:感谢大家的关注