REST是Roy Thomas Fielding博士于2000年在他的博士论文中阐述的一种架构风格和设计原则。REST并非一种协议或者标准,事实上它只是阐述了HTTP协议的设计初衷;现在HTTP在网络上被广泛应用,然而人们却越来越多的把它作为一种传输协议而非应用协议,比如SOAP类型的WebService,在SOAP中,完全把Http协议作为了其消息的载体,而对Http协议中的各种参数(例如编码,错误码等)都置之不顾。

REST的设计概念和准则如下:

  1. 网络上的所有事物都可以被抽象为资源(resource)
  2. 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
  3. 所有的操作都是无状态的

如果应用程序或者架构符合REST的设计原则和风格,那么就说它是RESTful的。REST是一个抽象的概念,实现它的技术有很多种,而最广泛也最容易的当属以HTTP为基础的技术了,我们把这种方式叫做REST/HTTP,有时说REST指的就是REST/HTTP。

REST/HTTP web service与SOAP web service的比较

  1. SOAP以类似传统RPC操作的风格来实现SOA软件系统,它是以操作或者活动为核心的,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义;然而,REST是面向资源的,资源和URI是它的核心,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。
  2. REST Web Service的优势是简单数据操作,无事务处理,开发和调用简单,而SOAP web service有清晰的规范标准定义,能够处理较为复杂的面向活动的服务
  3. REST Web Service使用HTTP的标准方法:GET/PUT/POST/DELETE 来抽象所有 Web 系统的服务能力,SOAP Web Service只是用POST方法并通过定义自己个性化的接口方法来抽象 Web 服务
  4. REST Web Service中不同的资源用不同的URI唯一识别,SOAP Web Service中的URL只是服务的地址而操作被封装在SOAP消息体中。

REST/HTTP的优势

由于采用标准化的 HTTP 操作方法并结合其他的标准化技术,如 URI,HTML,XML 等,极大的提高了系统与系统之间整合的互操作能力,尤其在 Web 应用领域,RESTful Web 服务所表达的这种抽象能力更加贴近 Web 本身的工作方式,也更加自然。以下是它的具体优势

  1. 无状态性(Stateless)
  2. 安全操作与幂指相等特性(Safety /Idempotence)
  3. 安全控制
  4. 缓存
  5. 连接性

总结:

满足REST原则的系统充分利用了HTTP标准,具有简单,易用,扩展型好的特点,是除了类RPC风格的SOAP协议的另一种实现SOA的方式。

随机推荐

  1. varchar和Nvarchar的区别

    (1)varchar(N) 存储时 N的单位是字节  比如说varchar(2)  代表的是  该字段可以存储字节长度为2的数据 例子:可以添加  张 或者 ab  添加成功! 但添加的时候如果是: ...

  2. .net 基础之截取字符串

    在实际开发中有时难免会遇到需要获取某个字符串中的某些字符串,这里我们可以用到字符串截取的办法. 截取字符串的方法很容易(暂不包含中文字符串),只要稍微有点.net基础的人看了都能看懂. /// < ...

  3. Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用

                                             Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...

  4. CSS 设计彻底研究(三)深入理解盒子模型

    第三章 深入理解盒子模型 盒子模型是CSS控制页面的基础.需要清楚“盒子”的含义是什么,以及盒子的组成.此外,应该理解DOM的基本概念,以及DOM树是如何与一个HTML文档对应的,在此基础上充分理解“ ...

  5. 关于Struts2的类型转换详解

    详细出处参考:http://www.jb51.net/article/35465.htm 一.类型转换的意义 对于一个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构 ...

  6. 12个非常有用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  7. PHP API反射实例

    *反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用.其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言.php反射api由若干类组成,可帮助我们用来 ...

  8. zabbix之1监控概念

    1.通过通用的snmp监控,无需代理端 2.通过snmp代理 snmp代理的工作原理:在被监控端设置代理,代理不断的获取本地数据,而管理端定期通过代理获取监控数据. snmp目前有v1,v2,v3三种 ...

  9. TeamTalk自定义IM协议的理解

    一.TeamTalk自定义IM协议 TeamTalk自定义IM协议是一种基于protocol buffer的消息传递协议,protocol buffer可以自定义消息格式.protocol buffe ...

  10. 关于C语言中的强符号、弱符号、强引用和弱引用的一些陋见,欢迎指正

    首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...