REST、SOA、SOAP、RPC

SOA: 设计模式

面向服务的软件架构(Service Oriented Architecture),是一种计算机软件的设计模式,主要应用于不通应用组件中经过某种协议来互操做,例如典型的经过网络协议。所以SOA是独立于任何厂商、产品与技术的。安全

所以REST、SOAP、RPC、RMI、DCOM等都是SOA的一种实现而已。服务器

 

 

 SOAP:网络

SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。并且随着须要的增加,又不得增长协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。另外一方面,各个服务器均可以基于这个协议推出本身的API,即便它们提供的服务及其类似,定义的API也不尽相同,这又致使了WSDL的诞生。WSDL (Web Service Description Language) 也遵循XML格式,用来描述哪一个服务器提供什么服务,怎样找到它,以及该服务使用怎样的接口规范,简言之,服务发现。如今,使用Web Service的过程变成,得到该服务的WSDL描述,根据WSDL构造一条格式化的SOAP请求发送给服务器,而后接收一条一样SOAP格式的应答,最后根据先前的WSDL解码数据。绝大多数状况下,请求和应答使用HTTP协议传输,那么发送请求就使用HTTP的POST方法。

架构

SOAP = HTTP+XML+RPC
对于RPC自己能够走HTTP ,TCP等不一样的协议,好比淘宝的Dubbo框架,RPC是能够选择走TCP协议仍是走HTTP协议的。框架

 

REST (REpresentational State Transfort) 形式上应该表述为客户端经过申请资源来实现状态的转换,在这个角度系统能够当作一台虚拟的状态机。REST应该知足这样的特色:1)客户端和服务器结构;2)链接协议具备无状态性;3)可以利用Cache机制增进性能;4)层次化的系统;分布式

说到底,REST只是一种架构风格,而不是协议或标准。但这种新的风格(也许已经历史悠久?)对现有的以SOAP为表明的Web Service形成的冲击也是革命性的,由于它面向资源,甚至连服务也抽象成资源,由于它和HTTP紧密结合,由于它服务器无状态。性能


无状态通讯,是指服务端(响应端)不保存任何与特定HTTP请求相关的资源,应用状态必须由请求方在请求过程当中提供。要求在网络通讯过程当中,任意一个Web请求必须与其余请求隔离,当请求端提出请求时,请求自己包含了响应端为响应这一请求所需的所有信息。.net

https://blog.csdn.net/Jmilk/article/details/50461577设计

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通讯程序之间携带信息数据。在OSI网络通讯模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

一般的实现有 XML-RPC , JSON-RPC , 通讯方式基本相同, 所不一样的只是传输数据的格式。

 

REST 不是一种协议,它是一种架构, 一种 Web Service 可以若是知足 REST 的几个条件, 一般就称这个系统是 Restful 的。

 

RPC框架与具体的协议无关。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具备良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。

1. TCP/HTTP:众所周知,TCP 是传输层协议,HTTP 是应用层协议,而传输层较应用层更加底层,在数据传输方面,越底层越快,所以,在通常状况下,TCP 必定比 HTTP 快。

 

RPC是以动词为中心的, REST是以名词为中心的, 此处的 动词指的是一些方法, 名词是指资源。

你会发现,以动词为中心,意味着,当你要须要加入新功能时,你必需要添加更多的动词, 这时候服务器端须要实现 相应的动词(方法), 客户端须要知道这个新的动词并进行调用。

而以名词为中心, 假使我请求的是 hostname/friends/, 不管这个URI对应的服务怎么变化,客户端是无需 关注和更新的,而这种变化对客户端也是透明的。

 

Dubbo
HSF

Mesh

相关文章
相关标签/搜索