美文网首页区块链入门java并发
【易错概念】RESTful, RPC, Webservice,R

【易错概念】RESTful, RPC, Webservice,R

作者: 笔名辉哥 | 来源:发表于2019-08-07 17:01 被阅读1次

    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深入理解

    相关文章

      网友评论

        本文标题:【易错概念】RESTful, RPC, Webservice,R

        本文链接:https://www.haomeiwen.com/subject/owhadctx.html