除了REST/JSON有什么其他交互方式

概览

目前大家平常业务开发所用用到的方法大多是采用restful风格的,也就是通过POST/GET/PUT/DELETE/PATCH等方法对于指定URL进行请求。但技术永远是变化的,从更大的尺度上来讲前后端交换还有不少的其他的方式。

HTTP方式

前后台或客户端主要通过HTTP来通讯。

restful

本来不想将RestFUL接口的,但还是忍不住要顺带提一句,restful接口是基于HTTP标准协议的基础的再封装,通过将后端服务已一种资源的角度来看待,通过标准的POST/ GET /PUT /DELETE /PATCH 等方法来访问后端的服务实现业务的驱动。

PS:关于restful接口使用分级(鄙视链), 具体请参考下面这篇文章

https://thoughts.teambition.com/workspaces/5cfde8427cc27200013f5419/docs/5d2fe033a8c304000113c154

GraphQL

“GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。"

GraphQL是跟传统的restful接口相比由很大的不同,尤其是其能够根据请求的字段自动只返回匹配的内容,这样可以基本避免传输无效的数据,大大提高带宽的使用情况。除了这个能力,GraphQL还具备服务聚合的能力,一个请求从不同的服务端返回组合的数据。

总体来说GraphQL是一个比较复杂的技术,而且对于大部分系统所带来的优势并不能抵消应用其所耗费的代价。这也是为什么THOUGHTWORKS再2016年把它放入评估,但没有进一步动作的原因。

具体可见其官网

https://graphql.cn/

apiJSON

“APIJSON是一种为API而生的 JSON网络传输协议 以及 基于这套协议实现的ORM库。为 简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的API。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目,尤其是互联网创业项目和企业自用项目。”

特点:

  • 接口定义+框架+ORM框架

  • 提供规范的通用接口,能够自动支持普通CURD操作

  • 自动生成接口文档

具体可以 参考下面介绍
https://github.com/APIJSON/APIJSON

SSE

SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议。


严格地说,HTTP 协议是没有办法做服务器推送的,但是当服务器向客户端声明接下来要发送流信息时,客户端就会保持连接打开,SSE 使用的就是这种原理。SSE 是单向通道,只能服务器向客户端发送消息,如果客户端需要向服务器发送消息,则需要一个新的 HTTP 请求。


具体可以参考下面这个博客。
https://www.cnblogs.com/goloving/p/9196066.html

常见的二进制方式

gRPC

gRPC是google发布的一个现代高性能开源RPC通讯框架,这个技术可以再任何环境中运行。它通过可以提供高效的跨数据中心连接服务,以插件化的形式支持负载均衡,跟踪,健康检查和安全验证。它还适用于分布式计算的最后一英里,用于将设备,移动应用程序和浏览器连接到后端服务。

[外链图片转存失败(img-dlIYNAi7-1563435443643)(https://tcs.teambition.net/storage/111j180e83032163dfecaec3452a107e301e?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsImV4cCI6MTU2MzkzNzI5MCwiaWF0IjoxNTYzNDM0MDM1LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMWoxODBlODMwMzIxNjNkZmVjYWVjMzQ1MmExMDdlMzAxZSIsInN0b3JhZ2UiOiJzdHJpa2VyLWh6In0.nRmWHNLMEkZ1qv6v9mOjDbx5cVSNZcu7ZrNCwBoV3Bg&download=blob.png “”)]

当然gRPC还是主要作为不同服务端之间通讯协议,由于其超高的性能,高压缩比广泛应用在对于性能由极高要求的微服务框架中。

具体的还是去官网上看吧

https://www.grpc.io/

Dubbo

Dubbo是阿里开源的一个高性能基于java的RPC框架,之前项目被关闭了,但随着微服务的兴起社区群活跃度不降反增,所已阿里直接交给了Apache成为了Apache的顶级项目。

跟上面的gRPC定位差不多,但是基于Java的。

详见

http://dubbo.apache.org/en-us/

RMI

RMI是一种基于Java的通讯手段,通过RMI可以像使用本地方法一样使用异地的方法。但这个方法的局限很大:1.性能不高,Java再序列化和反序列化方面性能并不理想。2.仅限于JAVA使用。RMI除了遗留项目中已经极少有人使用了,所以就不多说了。

其他方式

WebService

WebService是一种重量级的交互技术,再上古的SOA盛行时代占有者举足轻重的地位,但后来restful/json以及微服务的兴起,WebService也是逐步没落。

"Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准通用标记语言下的一个子集)标准描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。 [1]

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。"

不太了解的检索一下就OK了。

websocket

WebSocket可以说将浏览器端的开发提高了一个时代,具有跨时代的意义。以前浏览器只能通过长连接或是轮询的形式完成实时数据的查看,而Websocket彻底改变了这一点。

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

MQTT

MQTT是一种物联网的协议,当然也有人偷懒拿来做MQ来用,其实用起来真的差不多。不知道的赶紧去了解一下。

这里是传送门
http://mqtt.org/

发布了142 篇原创文章 · 获赞 70 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/zhaoenweiex/article/details/96432453