当前位置: 首页 > 科技观察

Restful,SOAP,RPC,SOA有什么区别

时间:2023-03-12 06:40:10 科技观察

为什么有的面试官喜欢问Restful,SOAP,RPC,SOA的区别,但是回答的时候总是回答的不太好,所以他们想啊芬为了给她解释这个,所以阿芬专门写了一篇文章来回答这个问题。什么是RestfulRestful(RepresentationalStateTransfer)是一种架构设计风格,它提供设计原则和约束而不是架构,满足这些约束和原则的应用程序或设计就是Restful架构或服务。也就是说,他指的不是一种建筑,而是一种设计风格,类似于常规的。阿芬最初知道Restful的时候,是看大神阮一峰的博客了解到的。的。其实想要了解Restful首先要知道Restful的主要设计原则,那么Restful的主要设计原则有哪些呢?资源与URI统一资源接口(GET、PUT、POST等HTTP方法)资源的表示资源的链接状态转移其实REST的全称是representationalstatetransfer,那么究竟是什么意思呢?是资源。**资源和URI这时候读者会问了,这个资源是怎么定义的呢?这个资源其实相当于一个抽象的概念。只要引用了你的东西,那么它就可以定义为一个资源,比如我们的名字,手机号码,警察需要你的名字来处理某些事情。有些会员卡需要您的姓名。申请会员卡时,需要绑定手机号。也就是引用了你的名字和你的手机号,所以才叫资源。.那么什么是URI?为了使资源可识别,它需要一个唯一的标识符。在Web中,这个唯一标识符就是URI(统一资源标识符)。这个方便开发理解,URI就是地址https://www.baidu.com/https://img.ydisp.cn/news/20220816/bupe2ihpmlv.htmldata-id="l20de63f-Rn0vZgc8">https://img.ydisp.cn/news/20220816/q0g11suzypadata-id="h6e90be6-1ImXeG2k"id="h6e90be6-1ImXeG2k">统一资源接口那么什么是URI呢?这给我们带来了Restful架构设计风格的定义。遵循的原则是遵循统一接口的原则。统一接口包含一组有限的预定义操作。相同的接口用于访问资源。接口应使用标准的HTTP方法,例如GET、PUT和POST,并遵循这些方法的语义。这么一说,相信大家都理解的很透彻了。毕竟你看,写接口的时候,@PostMapping(value="/order/create",produces=MediaType.APPLICATION_JSON_VALUE)publicJsonObjcetcreateOrder(){.....}是这样写的,在事实上它是一种Restful风格。至于请求的状态码,阿凡就不多说了。相信大家只要看了阿凡的文章,就会百分百明白状态码一般对应什么意思。资源表示那么什么是资源描述呢?这个理解比较简单,为什么这么说,你可以这样理解,你只关心你给的返回内容,不关心你内部的实现。换一种更官方的语言就是:客户端获取的只是资源的表达。资源在外界的具体表现形式可以有多种表现形式(或称为表示、表示),客户端和服务器之间传递的也是资源的表现形式,而不是资源本身。例如,文本资源可以是html、xml、json等格式,图片可以是PNG或JPG显示。其实资源的描述阿粉以为是数据展示,但是很多人不这么理解。毕竟每个人的理解都不一样,没有标准答案。毕竟不是1+1=2的数学题吧??资源链接资源链接相对容易理解。一般在我们的项目中,我们很多人都是从一个链接转到另一个链接来获取我们想要的资源信息。例如,我们有一项活动。如果你想获得这个活动的最新详情,那么我们必须重新获得这个资源。其实简单的话,就是对资源做一个增删改查。状态转换其实我们在看一些页面的时候,一直在默默接受这种状态转换,比如“下一页”,因为这个“下一页”会表示你从当前状态,转到下一个未知state,其实就是一个状态转换。**什么是SOAP相对来说,SOAP没有Restful那么复杂,需要了解的东西也没有那么多。SimpleObjectAccessProtocol是一种数据交换协议规范,它是一种轻量级、简单、基于XML的协议规范。SOAP协议与HTTP协议是相同的底层通信协议,只是请求包的格式不同,SOAP包是XML格式的。SOAP消息是基于xml封装的,符合http协议,所以它满足任何路由器、防火墙或代理服务器的要求。任何语言都可以做SOAP,只要发送正确的soap请求,基于soap的服务无需修改就可以在任何平台上正常使用**什么是RPPCPC?通过传递参数调用另一台机器(服务器)上的函数或方法(可以统称为服务),并得到返回的结果。RPC会隐藏底层通信细节(不需要直接处理Socket通信或Http通信)RPC是一种请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)。RPC用于像调用本地函数(或方法)一样调用远程函数(或方法)。其实说到RPC,这是面试时经常被问到的地方。为什么这么说呢,因为使用RPC的框架有很多很多。比如已经进入Apache孵化器的Dubbo,微服务的全家桶SpringCloud框架。这些都是比较知名的使用RPC的框架,但是很多人会说,别废话,SpringCloud明明用的是http,确实,也没什么不对。springcloud基于springboot,springboot实现了http协议的rpc,它是rpc的一个子集。所以阿芬这里也算上了SpringCloud。什么是SOA说到SOA,英文全称是((Service-OrientedArchitecture),翻译成中文就是面向服务的架构。这是最经典的微服务架构,是从SOA.两者归根结底是一种对外提供接口的架构设计方式,随着互联网的发展,复杂的平台和服务的出现,使得SOA架构向更细粒度、更透明的方向发展,也就是所谓的Microservices,一般来说,SOA提倡将不同应用的业务功能封装成“服务”并托管,通常以接口和契约的形式,提供对外部应用的访问(通过交换消息).达到不同系统可重用的目的SOA是一个组件模型,可以通过定义良好的接口和契约来连接不同的服务.服务是SOA的基石。所以后来就出现了这个微服务。阿粉今天要说的就是这些,你明白了吗?文章参考《百度百科》《RESTful Web Services》