Monday, May 7, 2007

简洁的REST架构风格——Web本位回归进行时

  五一长假就要结束了,大家有没有休息好呢?Have you had a good REST?(但愿大家不会像我前几天那样——公司里一些“十万火急”的事情使我忙碌得连写这个Weblog的时间都很难挤出。)
  过去的几天里,我尝试着用REST的风格对之前的一个小项目进行了架构方面的重构,有了一定的收获。于是,在今天这篇文章里,我也想简短地谈一下近期比较热门的REST架构风格,一方面想整理一下自己的思维,另一方面也想和大家交流一下这方面的实践和认识,以抛砖引玉。
  简单回顾一下,REST(Representational State Transfer)是 Roy Fielding 博士在2000年他的博士论文中提出来的一种基于网络的软件架构风格。该架构的具体定义还可参见Wikipedia维基百科全书)上的相关条目。
  我理解的REST本质是把所有的资源应用协议的状态转变通过URL来显性地表示出来,如果把整个Web看作是一个巨大的状态机,那么每一次对URL的访问请求都相当于是一个外部输入,而每个请求都会有一个相应的返回结果,即该Web资源根据外部输入从一个状态转变为另一个状态。
  我猜想这个本质可能也就是早期Web的设计初衷,只是我们从传统的设计开发里沿袭了过多的所谓“最佳实践”模式,从而把东西越做越复杂,也诞生了一系列技术标准的怪物诸如:COBRA、COM/DCOM/COM+、RMI、IIOP、EJB、WSDL、SOAP和XMLRPC等等。我以前写的一篇文章“Offline支持——Web的下一个热点!”也曾讨论过Web技术历史发展方面的话题。
  和以上这些技术标准相比,REST架构风格的优势就在于其简洁性,因此越来越多的“Web 2.0”网站和软件开发供应商把他们的业务服务往REST架构风格上面靠,以努力使得Web资源可编程共享化、Web服务的API更URL化(与WSDL相比 )……
  另有以下几点补充说明:
  • 和现在的基于HTTP的Web服务一样,REST的所有操作请求也都是无状态的,这样就很容易做分布式、集群应用,服务器端的压力可以非常易于平衡,其扩展性良好
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,因此REST是一种Web本位的回归
  • 由于所有资源都由URL制定的,这样REST架构风格就省掉了类似UDDI“服务发现”机制,因此REST也被称为面向资源的架构(Resource-Oriented Architecture),基于REST架构的设计开发方法也有被称为URL驱动(URL-Driven)的设计方法
  最后,附上几个REST方面的发展动向以及一些进一步的参考资料:
  还是接着文章的开头,祝大家Have a good REST哦!欢迎指教,谢谢!

William Cui 崔伟毅

Labels:

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home