Rest(Restful)风格的Web API跟RPC风格的SOAP WebService--这些名词都啥意思?
2016-10-08 22:05
495 查看
经常看到这些词汇,也有baidu或google过,但记忆里总是模糊,不确定,以至于别人问及的时候,总说不清楚。开篇随笔记录下。大家有补充或者意见的尽请留文。
本文顺序:
一、Rest(Restful)跟[b]RPC[/b]
二、SOAP啥意思?
[b]三、实例区分RESTful风格的 Web API与采用RPC风格的SOAP WebService?[/b]
一、REST(REpresentational State Transfer) 翻译为 表现状态转换 有个老头(Fielding)又称之为“分布式超媒体应用”
REST不是一个标准,而是一种应用架构风格。
WebAPI采用的就是这种风格。
这是一种面向资源的架构风格。
与具体的技术平台无关,即采用REST架构的应用不一定是建立在Web上。
RPC
RPC则是WebService采用的应用架构风格。
RPC是一种面向操作(功能)的架构风格
两者啥关系?可以结合Web Service跟Web API
对于WebService 和 Web API这两个概念,WebService是一个广义的概念,既包括采用RPC的SOAP WebService,也包括直接建立在Web上的非SOAP Web Service,后者又可以称为Web API。至于Web API是否是RESTful的,这取决于设计。
二、SOAP(简单对象访问协议)基于百度百科加其他
SOAP 是基于XML 和 HTTP ,其通过XML 来实现消息描述,然后再通过 HTTP 实现消息传输的一种用于访问Web服务的协议。(是跟HTTP一块玩的,是种协议,这样理解起来~~完美~)
[/code]
[/code]
能否采用统一接口是RESTful Web API和采用RPC风格的SOAP Web服务又一区别。如果采用RPC风格的话,我们在设计Web API的时候首先考虑的是具体哪些功能需要被提供,所以这样的Web API是一组相关功能的集合而已。
以一个具体的场景为例。现在我们需要设计一个Web API来管理用于授权的角色,它只需要提供针对角色本身的CRUD的功能以及建立/解除与用户名之间的映射关系。如果我们将其定义成针对SOAP的Web服务,其服务接口具有类似于如下的结构。
[/code]
[/code]
如下我们需要将其定义成一个纯粹的RESTful的Web API,只有前面三个方法在针对角色的CRUD操作范畴之内,但是后面两个方法却可以视为针对“角色委派(Role Assignment)”对象的添加和删除操作。所以这里实际上涉及到了两种资源,即角色和角色委派。为了使Web API具有统一的接口,我们需要定义如下两个Web API。
[/code]
[/code]
本文顺序:
一、Rest(Restful)跟[b]RPC[/b]
二、SOAP啥意思?
[b]三、实例区分RESTful风格的 Web API与采用RPC风格的SOAP WebService?[/b]
一、REST(REpresentational State Transfer) 翻译为 表现状态转换 有个老头(Fielding)又称之为“分布式超媒体应用”
REST不是一个标准,而是一种应用架构风格。
WebAPI采用的就是这种风格。
这是一种面向资源的架构风格。
与具体的技术平台无关,即采用REST架构的应用不一定是建立在Web上。
RPC
RPC则是WebService采用的应用架构风格。
RPC是一种面向操作(功能)的架构风格
两者啥关系?可以结合Web Service跟Web API
对于WebService 和 Web API这两个概念,WebService是一个广义的概念,既包括采用RPC的SOAP WebService,也包括直接建立在Web上的非SOAP Web Service,后者又可以称为Web API。至于Web API是否是RESTful的,这取决于设计。
二、SOAP(简单对象访问协议)基于百度百科加其他
SOAP 是基于XML 和 HTTP ,其通过XML 来实现消息描述,然后再通过 HTTP 实现消息传输的一种用于访问Web服务的协议。(是跟HTTP一块玩的,是种协议,这样理解起来~~完美~)
[code]1: public class ResourceService 2: { 3: public IEnumerable<Resource>[] Get(); 4: public void Create(Resource resource); 5: public void Update(Resource resource); 6: public void Delete(string id); 7: }
[/code]
[/code]
能否采用统一接口是RESTful Web API和采用RPC风格的SOAP Web服务又一区别。如果采用RPC风格的话,我们在设计Web API的时候首先考虑的是具体哪些功能需要被提供,所以这样的Web API是一组相关功能的集合而已。
以一个具体的场景为例。现在我们需要设计一个Web API来管理用于授权的角色,它只需要提供针对角色本身的CRUD的功能以及建立/解除与用户名之间的映射关系。如果我们将其定义成针对SOAP的Web服务,其服务接口具有类似于如下的结构。
[code] [code]public class RoleService { public IEnumerable<string> GetAllRoles(); public void CreateRole(string roleName); public void DeleteRole(string roleName); public void AddRolesInUser(string userName, string[] roleNames); public void RemoveRolesFromUser(string userName, string[] roleNames); }
[/code]
[/code]
如下我们需要将其定义成一个纯粹的RESTful的Web API,只有前面三个方法在针对角色的CRUD操作范畴之内,但是后面两个方法却可以视为针对“角色委派(Role Assignment)”对象的添加和删除操作。所以这里实际上涉及到了两种资源,即角色和角色委派。为了使Web API具有统一的接口,我们需要定义如下两个Web API。
[code] [code] public class RolesService { public IEnumerable<string> Get(); public void Create(string roleName); public void Delete(string roleName); } public class RoleAssignmentsService { public void Create(RoleAssignment roleName); public void Delete(RoleAssignment roleName); }
[/code]
[/code]
相关文章推荐
- WebService、RMI、RPC、XML-RPC、JSON-RPC、SOAP、REST(rest-api、restful)等web服务实现方案概念
- WebService与使用风格RPC/SOA/REST
- REST,RESTFUL,SOAP,RPC,RESTFUL Web API区别
- 三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
- 三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
- WebService与使用风格RPC/SOA/REST
- 三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
- 远程通信的几种选择(RPC,Webservice,RMI,JMS,SOAP,REST,CORBA的区别)
- Webservice学习笔记六,SOAP, REST and XML-RPC报文格式收集
- WebService与使用风格RPC/SOA/REST
- asp.net web api rest风格与RPC风格调用
- rest风格、rest框架、restful,什么意思?这不是一种技术,而是一种概念。rest其实就是动静分离即前后端分离
- 简略整理一下RPC、WebService、Restful、Json、Xml这些概念之间的关系
- WebService与使用风格RPC/SOA/REST
- SOA,Webservice,SOAP,REST,RPC,RMI,JMS的区别与联系
- WCF 定义SOAP和REST风格的webservice
- 三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
- SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系
- WebService与使用风格RPC/SOA/REST
- RESTful和REST-RPC接口风格的差异与实现