rest

[quote]
在RIA的曙光已经从地平线下面露出来的时候,Web的全面service化已经不是个遥不可及的事情。[/quote]
[quote] 记得2000-2001年,以微软为首的一些大公司鼓吹Web Services,当时有人认为2003年各大网站就会急急忙忙地向Web Services迁徙。但历史证明,公众互联网站根本不认同这个方向,预见中的Web Services大跃进没有出现。[/quote]
[quote]
Web Services使得网站的服务既可以通过页面来发布,也可以通过可编程的Web Services API形式发布,这本身是很好的事情,为什么人们不接受呢?
原因固然是多方面的,但是互联网社群不接受为企业应用量身定做的、笨重累赘的 SOAP/WSDL/UDDI,是不可忽略的因素。
这个时候,一种新的Web Services模型就开始引起人们的注意。
[/quote]
[quote]
2000年,著名的Web技术专家、HTTP等诸多Web协议的主要起草人Roy Fielding从加州大学Irvine分校获得博士学位,其博士学位论文 中描述了一种分布式软件的体系结构风格,被称为REST。
这种风格完全符合已经建立起来的Web体系结构,并且具有天然的简单性、可延展性。
自此之后,REST成为SOAP之外另一种主流的Web Services实现模型。
很快,人们发现,开发者更加偏爱REST模型.eBay、Amazon等巨型网站早在2004年就发现,大约有60%的Web Service客户通过REST来使用它们所提供的网络服务,此后这个比例一直在增加。
[/quote]
[quote]
那么,REST到底是什么东西呢?

简而言之,REST代表“具备表像的状态迁移(REpresentational State Transfer)。
注意,我把representation翻译为表像,是为了更好地表达其本意,如果按字面翻译,应为“表现”。
REST这样理解 Web:Web是资源的集合,每一个资源都有一个或多个URI无疑义地引用。
REST软件构件可以获得某项资源的一个“表像”,从这个表像中,REST构件可以了解到该资源的当前状态,从而在该项资源上实施恰当的操作,并且可以把这个表像传递给其他的REST构件。
当REST构件在该资源上实施了某些操作之后,将导致该资源的状态发生迁移,从而获得新状态的表像。
这种解释当然是比较晦涩的了。但换一种说法大家就会非常清楚。当我们在浏览Web页面的时候,这个Web页面就是Web应用当前状态的表像,而我们和我们的浏览器一起构成了一个REST构件。
[/quote]
[quote]
当你在Web页面上执行某项操作(点击链接、提交表单,等等),你就是“在某个资源上实施了一个操作”,就会导致系统的状态发生迁移,迁移到另一个状态中,而新的状态以新的表像(页面)展示给你。
这不正是我们每天都重复几百上千次的事情吗?所以我们用REST已经十多年了。只不过,Roy Fielding在其论文中表明,REST其实是一种分布式软件的通用风格,可以被用来构建相当广泛的互联网应用。
[/quote]
[quote]
Roy Fielding对REST的深刻理解直接影响到HTTP协议的制定。
在1999年完成的HTTP 1.1(RFC2616)中,HTTP增加了PUT、DELETE两个命令,从而使HTTP的主要命令扩充为四个(GET、POST、PUT、 DELETE,未将次要命令如OPTION、HEAD等计入)。
Roy Fielding认为,这四个命令不多不少恰恰能完成REST风格的应用。
换言之,只要有这四个动词,就可以在REST范围内做出任何想要的分布式应用。这是多么令人惊讶的结论!
我们在平时的面向对象设计中,通常要给每一个对象定义的动作(方法)都不少于四个,而REST却断言,四个就够了,多一个浪费,少一个不行。
[/quote]
[quote]
如果Fielding博士是对的,那么互联网上的编程工作就可以大大简化,HTTP体系下天生的轻便、灵活、简单、可扩展的特性都唾手可得。

然而,遗憾的是,尽管HTTP很流行,四个动词的语义清清楚楚地写在RFC2616里面,但真正很好地理解了其中含义的人却非常少。

世界上充满了不求甚解就撸起袖子蛮干的聪明人,所以浏览器出现已经十多年了,却还是只支持GET和POST两个方法,这使得REST的推行不能一帆风顺。
[/quote]
[quote]
Ajax的出现标志着RIA时代逐渐走来,客户端将不再是清一色的HTML页面,也可以是一个Ajax的程序,通过XMLHttp向服务器发起PUT和 DELETE请求。
这样,就要求服务器端在四动词的背景下重新思考应用的构造。
传统上,服务器端应用只是通过REST风格将部分服务暴露出来。
而 Rails 1.2则直接将REST直接作为构建整个Web应用的中心,这才是Rails 1.2的独特之处,也是张显Rails社群离经叛道和卓尔不群的地方。
为了要采纳REST风格,Rails 1.2革新了Web应用的构造思想,整个领域建模的思想都有所变化。现在整个Rails社群都应当准备向REST时代迁移。
[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值