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服务器