Restful认识(2)

3.	REST架构原则
Roy  Fielding 明确指出 REST 和 World Wide Web 的五个架构原则: 
可寻址性(Addressability)。REST 中的所有东西都基于资源的概念。资源与 OOP 中的对象或其他名词不同,它是一种抽象,必须可以通过 URI 寻址或访问。 
接口一致性(Interface uniformity)。与 SOAP 或其他标准不同,REST 要求用来操纵资源的方法或动词不是任意的。这意味着 RESTful 服务的开发人员只能使用 HTTP 支持的方法,比如 GET、PUT、POST、DELETE 等。因此不需要使用 WSDL 等服务描述语言。 
无状态(Statelessness)。为了增强可伸缩性,服务器端不存储客户机的状态信息。这使服务器不与特定的客户机相绑定,负载平衡变得简单多了。这还让服务器更容易监视、更可靠。 
无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP协议是无状态协议。 
客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。
具象(Representational)。客户机总是与资源的某种具象交互,绝不会直接与资源本身交互。同一资源还可以有多个具象。理论上说,持有资源的具象的任何客户机应该有操纵底层资源的足够信息。 
连通性(Connectedness)。任何基于 REST 的系统都应该预见到客户机需要访问相关的资源,应该在返回的资源具象中包含这些资源。例如,可以以超链接的形式包含特定 RESTful 服务的操作序列中的相关步骤,让客户机可以根据需要访问它们。 
4.	REST要求
•	客户端和服务器结构
•	连接协议具有无状态性
•	能够利用Cache机制增进性能
•	层次化的系统
•	随需代码 - Javascript (可选)
不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)


5.	REST优势
•	可以利用缓存Cache来提高响应速度
•	通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
•	浏览器即可作为客户端,简化软件需求
•	相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
•	不需要额外的资源发现机制
•	在软件技术演进中的长期的兼容性更好
6.	RESTful实现
RESTful通过RESTful Web 服务与 RPC 样式的 Web 服务实现。
7.	URI
URI:Universal Resource Identifier,通用资源标识符; 
URL:Uniform Resource Locator,统一资源定位符; 
URN:Uniform Resource Name,统一资源名称。 
其中,URL,URN是URI的子集。 Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式: 
URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。 
URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。
URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。  
  URL的格式由下列三部分组成: 
  第一部分是协议(或称为服务方式); 
  第二部分是存有该资源的主机IP地址(有时也包括端口号); 
  第三部分是主机资源的具体地址。,如目录和文件名等。 
  第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。 
  文件的URL: 
  用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。 
  例一:file://ftp.baidu.com/pub/files/foobar.txt 
  代表存放主机ftp.baidu.com上的pub/files/目录下的一个文件,文件名是foobar.txt。 
  网络新闻的URL: 
  利用URL表示网络新闻组时,如果是usenet的话只要指定出新闻组的名字即可。 
  例如:news:rec.gardening 
  表示usenet上的rec.gardening新闻组(园艺)。 
  HTTP的 URL: 
  使用超级文本传输协议HTTP,提供超级文本信息服务的资源。 
  例一:http://www.peopledaily.com.cn/channel/welcome.htm 
  其计算机域名为www.peopledaily. com. cn。超级文本文件(文件类型为.html)是在目录/channel下的welcome.htm。这是中国人民日报的一台计算机。 
  例二:http://www.rol.cn.net /talk/talk1.htm 
  其其计算机域名为www.rol. cn. net。超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。

你可能感兴趣的:(Restful)