文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Restful、SOAP、RPC、SOA到底有什么区别,你知道了吗?

2024-12-01 16:45

关注

什么是 Restful

Restful(Representational State Transfer)是⼀种架构设计⻛格,提供了设计原则和约束条件,⽽不是架构,⽽满⾜这些约束条件和原则的 应⽤程序或设计就是 Restful架构或服务。

也就是说,他并不是说是一种架构,而是一种设计上的风格,就类似那种约定俗成的,阿粉最早知道这个 Restful 的时候,还是之前看过大神阮一峰的博客才学习到的。

其实想要理解Restful,那么你得先知道 Restful 的主要设计原则,那么 Restful 的主要设计原则都有哪些?

实际上,REST全称是表述性状态转移,那究竟指的是什么的表述? 其实指的就是资源。

**资源与URI

这时候就会有读者问,那这个资源又是怎么定义的呢?

这个资源实际上就相当于是一个抽象的概念,只要你这个事物,有被引用到的地方,那么他就可以定义成为一个资源,就比如我们的姓名,手机号,

也就是说,你的姓名和你的手机号,都有被引用得到的地方,那么他就可以称之为资源。

那么什么又是URI呢?

要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)。

这个对开发来说就很容易理解了,URI 就是地址

统⼀资源接⼝

那么什么是统一资源接口呢?

这就又得说到 Restful 架构设计⻛格的定义上来了,遵循的原则还是,遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。

如果这么说,大家我相信那是明白的非常透彻的,毕竟你看,你写接口的时候,直接来的不就是

@PostMapping(value = "/order/create", produces = MediaType.APPLICATION_JSON_VALUE)
public JsonObjcet createOrder(){
.....
}

是不是都是这么写的,实际上他就是一种 Restful 风格的。

至于请求的状态码,阿粉就不再多说什么了,相信只要是看阿粉文章的,百分之百也都明白状态码一般对应什么样子的含义。

资源的表述

那么什么是资源的描述呢?

这个理解就比较简单了,为什么这么说,你可以这样理解,只关心你给的返回内容,不关心你内部实现。

换成比较官方的语言就是:

客户端获取的只是资源的表述而已。资源在外界的具体呈现,可以有多种表述(或称为表现、表示)形式,在客户端和服务端之间传送的也是资源的表述,而不是资源本身。例如文本资源可以采用html、xml、json等格式,图片可以使用PNG或JPG展现出来。

其实资源的描述阿粉觉得他就是数据展示,但是很多人也不是这么理解,毕竟每个人的理解都是不一样的,也没有什么标准答案,毕竟不是 1+1=2 的数学问题,不是么?

资源的链接

资源的链接,这个相对来说,也挺容易理解的,一般的,我们在项目里面,很多都是从一个链接去到另外一个链接,获取我们的想要的资源信息,比如说,我们有一个活动,如果你想要获取这个活动的最新详情,那么就一定需要我们再去对这个资源进行一个获取,实际上如果简单来说,就是对资源做了个CRUD。

状态的转移

实际上,我们在看某些页面的时候,一直在默默的接受这个状态转移,比如,“下一页”,因为这个 “下一页” 就会表示,你从当前的这个状态,转到下一个未知的状态, 这实际上就是状态的转移。

**什么是SOAP

相对来说 SOAP 就不如 Restful 那么复杂了,需要你理解的东西没那么多了。

简单对象访问协议是⼀种数据交换协议规范,是⼀种轻量的、简单的、基于XML的协议的规范。

SOAP协议和HTTP协议⼀样,都是底层的通信协议,只是请求包的格式不同⽽已,SOAP包是XML格式的。SOAP的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防⽕墙或代理服务器的要求。

SOAP可以使⽤任何语⾔来完成,只要发送正确的soap请求即可,基于soap的服务可以在任何平台⽆需 修改即可正常使⽤

**什么是RPC

RPC就是从⼀台机器(客户端)上通过参数传递的⽅式调⽤另⼀台机器(服务器)上的⼀个函数或⽅法 (可以统称为服务)并得到返回的结果。

RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)

RPC 是⼀个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的⼯作⽅式)

RPC 在使⽤形式上像调⽤本地函数(或⽅法)⼀样去调⽤远程的函数(或⽅法)。

其实说到RPC,这个属实是面试的时候,经常会被问到的一个地方,为什么这么说,因为有很多很多的框架,都是用的 RPC 。

比如已经进入 Apache 孵化器的 Dubbo ,还有还有SpringCloud框架,微服务全家桶。这都是比较出名的用 RPC 的框架,但是很多人就会说,别瞎扯了,人家SpringCloud 明明是用的 http ,确实,也没啥错误。

spring cloud是基于spring boot 的,spring boot 实现的是http协议的rpc,算是rpc的⼀个⼦集。

所以阿粉在这里也把 SpringCloud 给算进来了。

什么是SOA

说到SOA,英文全称是((Service-Oriented Architecture),翻译成中文就是⾯向服务的架构。

这就是最经典的微服务架构了,微服务架构就是从 SOA 进化的结果。

两者说到底都是对外提供接⼝的⼀种架构设计⽅式,随着互联⽹的发展, 复杂的平台、业务的出现,导致SOA架构向更细粒度、更通过化程度发展,就成了所谓的微服务了。

通俗点来讲,SOA提倡将不同应⽤程序的业务功能封装成“服务”并宿主起来,通常以接⼝和契约的形式暴 露并提供给外界应⽤访问(通过交换消息),达到不同系统可重⽤的⽬的。

SOA是⼀个组件模型,它能将不同的服务通过定义良好的接⼝和契约联系起来。服务是SOA的基⽯。

所以后面就出现了这个微服务了。

今天阿粉要说的内容,就这些了,你理解了么?

文章参考

来源:Java极客技术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯