RESTful, RPC, Webservice,RMI定义

RESTful, RPC, Webservice,RMI定义

## 1, 摘要 本文介绍RESTful, RPC, Webservice,RMI定义。 ## 2,内容 ### 2.1 RESTful 接口 REST即表述性状态传递(Representational State Transfer,简称REST),是一种软件架构风格。 **REST通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对网络资源进行唯一标识,** 响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。 Rest架构的主要原则: 1. 网络上的所有事物都被抽象为资源 2. 每个资源都有一个唯一的资源标识符 3. 同一个资源具有多种表现形式(xml,json等) 4. 对资源的各种操作不会改变资源标识符 5. 所有的操作都是无状态的 其中表述性状态,是指(在某个瞬间状态的)资源数据的快照,包括资源数据的内容、表述格式(XML、JSON)等信息。 其中无状态通信,是指服务端(响应端)不保存任何与特定HTTP请求相关的资源,应用状态必须由请求方在请求过程中提供。要求在网络通信过程中,任意一个Web请求必须与其他请求隔离,当请求端提出请求时,请求本身包含了响应端为响应这一请求所需的全部信息。 REST使用HTTP+URI+XML /JSON 的技术来实现其API要求的架构风格:HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。 举例: 在Restful之前的操作: 请求的地址对应具体的业务操作 [http://127.0.0.1/user/query/1](http://127.0.0.1/user/query/1) GET 根据用户id查询用户数据 [http://127.0.0.1/user/save](http://127.0.0.1/user/save) POST 新增用户 [http://127.0.0.1/user/update](http://127.0.0.1/user/update) POST 修改用户信息 [http://127.0.0.1/user/delete](http://127.0.0.1/user/delete) GET/POST 删除用户信息 RESTful用法: 请求 [http://127.0.0.1/user/1](http://127.0.0.1/user/1) GET 根据用户id查询用户数据 [http://127.0.0.1/user](http://127.0.0.1/user) POST 新增用户 [http://127.0.0.1/user](http://127.0.0.1/user) PUT 修改用户信息 [http://127.0.0.1/user](http://127.0.0.1/user) DELETE 删除用户信息 RESTful风格的体现, 在你使用了get请求,就是查询; 使用post请求,就是新增的请求; 使用put请求,就是修改的请求; 使用delete请求,就是删除的请求。 这样做就完全没有必要对crud做具体的描述。 **满足REST约束条件和原则的架构,就被称为是RESTful架构。** 就像URL都是URI(统一资源标识)的表现形式一样,RESTful是符合REST原则的表现形式。 ### 2.2 RPC接口 **RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。** 通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式。 RPC是分布式架构的核心,按响应方式分如下两种: 同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作; 异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续自己的操作; 同步调用的实现方式有WebService和RMI。Web Service提供的服务是基于web容器的,底层使用http协议,因而适合不同语言异构系统间的调用。RMI实际上是Java语言的RPC实现,允许方法返回 Java 对象以及基本数据类型,适合用于JAVA语言构建的不同系统间的调用。 异步调用的JAVA实现版就是JMS(Java Message Service),目前开源的的JMS中间件有Apache社区的ActiveMQ、Kafka消息中间件,另外有阿里的RocketMQ。 下图为RPC的网络层次图: ![](https://img.learnblockchain.cn/2020/02/01_/543999805.png) ### 2.3 远程方法调用(RMI) RMI(Remote Method Invocation,远程方法调用)RMI是针对于java语言的, RMI 允许您使用Java编写分布式对象 ### 2.4 Webservice接口 Web Service接口实际上就是RPC调用的一种实现,只考虑RPC的stub层实现, soap restfull都是固定走HTTP/HTTPS, 都有定义了自己的规则和实现(xmll和json等), 规定了server能够提供的服务(web service),也是跨语言跨平台的。 [参考WebService的概诉](https://www.jianshu.com/p/1e88780a44ec) Web Service框架图: ![](https://img.learnblockchain.cn/2020/02/01_/452514494.png) 通常我们经常说的WebService就是soap webService,所以很多文章在没restfull api没流行的时候直接用soap 代表webService。 **本质上看:** SOAP协议 = HTTP协议 + XML数据格式 SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。 **打个比 喻:** HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。 行驶在高速公路的车, 能够更快速和安全地达到目的地, 但是要遵守高速上繁多的行为规范, 所以SOAP协议属于复杂的、重量级的协议, 灵活性不高。 ####### soap webService拥有三要素: 1、soap用来描述传递信息的格式 SOAP即 [简单对象访问协议](http://baike.baidu.com/view/1695890.htm) (Simple ObjectAccess Protocol),它是用于交换 [XML](https://links.jianshu.com/go?to=http%3A%2F%2Fbaike.baidu.com%2Fview%2F63.htm) ( [标准通用标记语言](https://links.jianshu.com/go?to=http%3A%2F%2Fbaike.baidu.com%2Fview%2F5286041.htm) 下的一个子集)编码信息的轻量级协议。 2、WSDL 用来描述如何访问具体的接口 Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 [XML](http://baike.baidu.com/view/63.htm) ( [标准通用标记语言](https://links.jianshu.com/go?to=http%3A%2F%2Fbaike.baidu.com%2Fview%2F5286041.htm) 下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。 3、uddi用来管理,分发,查询webService UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 ## 3,参考 (1) [http接口、api接口、RPC接口、RMI、webservice、Restful等概念](https://my.oschina.net/heavenly/blog/499661) (2) [阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别](https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html) (3) [33.服务之间的调用之RPC、Restful深入理解](https://blog.csdn.net/u014590757/article/details/80233901)

1, 摘要

本文介绍RESTful, RPC, Webservice,RMI定义。

2,内容

2.1 RESTful 接口

REST即表述性状态传递(Representational State Transfer,简称REST),是一种软件架构风格。 REST通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对网络资源进行唯一标识, 响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。 Rest架构的主要原则:

  1. 网络上的所有事物都被抽象为资源
  2. 每个资源都有一个唯一的资源标识符
  3. 同一个资源具有多种表现形式(xml,json等)
  4. 对资源的各种操作不会改变资源标识符
  5. 所有的操作都是无状态的

其中表述性状态,是指(在某个瞬间状态的)资源数据的快照,包括资源数据的内容、表述格式(XML、JSON)等信息。 其中无状态通信,是指服务端(响应端)不保存任何与特定HTTP请求相关的资源,应用状态必须由请求方在请求过程中提供。要求在网络通信过程中,任意一个Web请求必须与其他请求隔离,当请求端提出请求时,请求本身包含了响应端为响应这一请求所需的全部信息。

REST使用HTTP+URI+XML /JSON 的技术来实现其API要求的架构风格:HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。

举例: 在Restful之前的操作: 请求的地址对应具体的业务操作 http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据 http://127.0.0.1/user/save POST 新增用户 http://127.0.0.1/user/update POST 修改用户信息 http://127.0.0.1/user/delete GET/POST 删除用户信息

RESTful用法: 请求 http://127.0.0.1/user/1 GET 根据用户id查询用户数据 http://127.0.0.1/user POST 新增用户 http://127.0.0.1/user PUT 修改用户信息 http://127.0.0.1/user DELETE 删除用户信息

RESTful风格的体现, 在你使用了get请求,就是查询; 使用post请求,就是新增的请求; 使用put请求,就是修改的请求; 使用delete请求,就是删除的请求。 这样做就完全没有必要对crud做具体的描述。

满足REST约束条件和原则的架构,就被称为是RESTful架构。 就像URL都是URI(统一资源标识)的表现形式一样,RESTful是符合REST原则的表现形式。

2.2 RPC接口

RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。 通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式。

RPC是分布式架构的核心,按响应方式分如下两种: 同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作; 异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续自己的操作;

同步调用的实现方式有WebService和RMI。Web Service提供的服务是基于web容器的,底层使用http协议,因而适合不同语言异构系统间的调用。RMI实际上是Java语言的RPC实现,允许方法返回 Java 对象以及基本数据类型,适合用于JAVA语言构建的不同系统间的调用。

异步调用的JAVA实现版就是JMS(Java Message Service),目前开源的的JMS中间件有Apache社区的ActiveMQ、Kafka消息中间件,另外有阿里的RocketMQ。

下图为RPC的网络层次图:

2.3 远程方法调用(RMI)

RMI(Remote Method Invocation,远程方法调用)RMI是针对于java语言的, RMI 允许您使用Java编写分布式对象

2.4 Webservice接口

Web Service接口实际上就是RPC调用的一种实现,只考虑RPC的stub层实现, soap restfull都是固定走HTTP/HTTPS, 都有定义了自己的规则和实现(xmll和json等), 规定了server能够提供的服务(web service),也是跨语言跨平台的。 参考WebService的概诉

Web Service框架图:

通常我们经常说的WebService就是soap webService,所以很多文章在没restfull api没流行的时候直接用soap 代表webService。

本质上看: SOAP协议 = HTTP协议 + XML数据格式 SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。 打个比 喻: HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。 行驶在高速公路的车, 能够更快速和安全地达到目的地, 但是要遵守高速上繁多的行为规范, 所以SOAP协议属于复杂的、重量级的协议, 灵活性不高。

####### soap webService拥有三要素:

1、soap用来描述传递信息的格式 SOAP即 简单对象访问协议 (Simple ObjectAccess Protocol),它是用于交换 XML ( 标准通用标记语言 下的一个子集)编码信息的轻量级协议。

2、WSDL 用来描述如何访问具体的接口 Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 XML ( 标准通用标记语言 下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。

3、uddi用来管理,分发,查询webService UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

3,参考

(1) http接口、api接口、RPC接口、RMI、webservice、Restful等概念 (2) 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别 (3) 33.服务之间的调用之RPC、Restful深入理解

  • 发表于 2019-08-07 17:01
  • 阅读 ( 4322 )
  • 学分 ( 5 )
  • 分类:入门/理论

评论