孟岩ID:myan
[修改头像]
1552946次访问,排名6好友1人,关注者32
总是在思考存在的问题
myan的文章
原创 146 篇
翻译 0 篇
转载 3 篇
评论 5196 篇
最近评论
lschou520:怎么会忘记印度、日本和欧洲呢?
daijunhua:支持,中华儿女,互相护持地走!
ranzj:我只抱怨自己的努力不够。
ranzj:我毫不怀疑 SilverLight 是个“钱”途无量的玩意儿。
winvc:还有 之前已经看到过一篇署名孟岩的文章了 也是自称学计算机的 在MOP发的文章 题目是《不知名的程序员写给想学编程的朋友》(最后署名前还特别声明了下自己是初中文化全靠自学的 大哥 这样的人全国有几千万 没几个比你这种货色差的)

那文章是看的我想吐 不知道是你还是重名了 不过咋跟你这篇文章风格这么像呢 都是不懂 逻辑混乱 瞎喷
你是自己想不明白问题 但认为自己想……
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    测试
    友情链接
    老赵的博客
    存档

    原创 REST:Rails 1.2的意义,以及一个翻译接力的发起

    新一篇: 为什么我们不重视Office开发——与郭安定谈话想到的

        昨天,David H. Hansson在 www.rubyonrails.org 上发布了Rails 1.2 RC1。之前Rails的版本在1.1.6上停留了4个月,有人已经不耐烦地在讨论组上质问Rails 1.2为何拖了这么久。拖这么久当然是有原因的,Rails 1.2是一个重大的升级,可以说其核心思想发生了巨大的、根本性的变化,以至于著名的《敏捷Web开发》第二版,在临近脱稿之时,不得不进行大幅度的调整,从而把出版日期一拖再拖。

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

        简而言之,REST代表“具备表像的状态迁移(REpresentational State Transfer)。注意,我把representation翻译为表像,是为了更好地表达其本意,如果按字面翻译,应为“表现”。REST这样理解Web:Web是资源的集合,每一个资源都有一个或多个URI无疑义地引用。REST软件构件可以获得某项资源的一个“表像”,从这个表像中,REST构件可以了解到该资源的当前状态,从而在该项资源上实施恰当的操作,并且可以把这个表像传递给其他的REST构件。当REST构件在该资源上实施了某些操作之后,将导致该资源的状态发生迁移,从而获得新状态的表像。这种解释当然是比较晦涩的了。但换一种说法大家就会非常清楚。当我们在浏览Web页面的时候,这个Web页面就是Web应用当前状态的表像,而我们和我们的浏览器一起构成了一个REST构件。当你在Web页面上执行某项操作(点击链接、提交表单,等等),你就是“在某个资源上实施了一个操作”,就会导致系统的状态发生迁移,迁移到另一个状态中,而新的状态以新的表像(页面)展示给你。这不正是我们每天都重复几百上千次的事情吗?所以我们用REST已经十多年了。只不过,Roy Fielding在其论文中表明,REST其实是一种分布式软件的通用风格,可以被用来构建相当广泛的互联网应用。

        Roy Fielding对REST的深刻理解直接影响到HTTP协议的制定。在1999年完成的HTTP 1.1(RFC2616)中,HTTP增加了PUT、DELETE两个命令,从而使HTTP的主要命令扩充为四个(GET、POST、PUT、DELETE,未将次要命令如OPTION、HEAD等计入)。Roy Fielding认为,这四个命令不多不少恰恰能完成REST风格的应用。换言之,只要有这四个动词,就可以在REST范围内做出任何想要的分布式应用。这是多么令人惊讶的结论!我们在平时的面向对象设计中,通常要给每一个对象定义的动作(方法)都不少于四个,而REST却断言,四个就够了,多一个浪费,少一个不行。如果Fielding博士是对的,那么互联网上的编程工作就可以大大简化,HTTP体系下天生的轻便、灵活、简单、可扩展的特性都唾手可得。

        然而,遗憾的是,尽管HTTP很流行,四个动词的语义清清楚楚地写在RFC2616里面,但真正很好地理解了其中含义的人却非常少。世界上充满了不求甚解就撸起袖子蛮干的聪明人,所以浏览器出现已经十多年了,却还是只支持GET和POST两个方法,这使得REST的推行不能一帆风顺。

        Ajax的出现标志着RIA时代逐渐走来,客户端将不再是清一色的HTML页面,也可以是一个Ajax的程序,通过XMLHttp向服务器发起PUT和DELETE请求。这样,就要求服务器端在四动词的背景下重新思考应用的构造。传统上,服务器端应用只是通过REST风格将部分服务暴露出来。而Rails 1.2则直接将REST直接作为构建整个Web应用的中心,这才是Rails 1.2的独特之处,也是张显Rails社群离经叛道和卓尔不群的地方。为了要采纳REST风格,Rails 1.2革新了Web应用的构造思想,整个领域建模的思想都有所变化。现在整个Rails社群都应当准备向REST时代迁移。

        今年7月份举行的RailsConf 2006上,David Heinemeier Hasson作了一个主题演讲,很清楚地讲了Rails 1.2中对于REST的设计,以及REST风格给Web应用设计思想所带来的革新。我第一次看到这个视频,就认为这可能是对Web服务端开发具有历史意义的一次演讲。当时有一点时间,就一边听一边记,把这个演讲的开头翻译出将近3000字的内容,大约占整个演讲篇幅的1/4。后来我忙了起来,就没有时间把这个翻译做完。这个稿件在我硬盘上爬了两个多月,扔掉也不是,放出来又不完整。现在Rails 1.2已经发布了,我想越来越多的Web开发者都会回过头关心这个演讲的内容,所以突然生出一个想法,能不能把这个不完整的翻译稿放到自己的blog上,请有时间和精力的网友把翻译工作接力下去?

        所以,我已经将自己翻译完成的开头部分放到了blog上,请有兴趣和热情的朋友对照录像内容把翻译接力下去,为国内的Web开发者介绍关于Web开发思想的这一重大革新。
     

    发表于 @ 2006年11月25日 16:10:00|评论(loading...)|编辑

    旧一篇: 在Rails中探索资源的世界——7月9日David Heinemeier Hansson演讲的翻译稿(部分)

    评论

    #dongbin 发表于2006-11-25 21:34:00  IP: 61.48.105.*
    支持,我试一下听听先。
    #bug 发表于2006-11-26 13:01:00  IP: 222.131.210.*
    从实践的角度来看, REST框架还是缺乏了很多的灵活性, 其支持的"类型"有一定的局限性.
    #cvu 发表于2006-11-27 12:59:00  IP: 222.66.61.*
    那部演讲也听了,一知半解。经myan这么一说清楚多了,谢谢!

    REST的妙处看来不仅仅是为了web开发,而是web service的agile版。

    当时演讲不懂的时候,就去各bbs社区看有没有讨论这个,很遗憾没找到,是大家不感兴趣呢,还是我没找到地方,请各位推荐一两处。
    #aimingoo 发表于2006-11-27 15:16:00  IP: 61.172.241.*
    自已推个荐:

    http://blog.csdn.net/aimingoo/archive/2006/11/27/1416806.aspx
    #dlee 发表于2006-11-27 18:00:00  IP: 220.115.248.*
    嘿嘿,这才是真正有营养的东西啊。REST也是我最近比较关注的问题。
    推荐一本书:
    http://www.apress.com/book/bookDisplay.html?bID=10188
    #sunni 发表于2006-12-16 11:56:48  IP: 211.161.88.*
    dlee不是正读SICP呢? 呵呵,我之前自己玩实现过一个的嵌入式的HTTP Server,也是没有实现PUT和DELETE。REST的思想是要把WEB变成一个分布式的有穷自动机?
    #Amarion 发表于2007-06-16 03:05:23  IP: 190.49.219.*
    9fac02df803a829c73bc8b8ca41b9b37 http://legge-regionale-22-28-09-06.kluoca.org/ http://compro-vendo-mobile-usato-napoli.uvosok.org/ http://progetto-didattico-scuola-primaria-cittadinanza.dgrbxq.org/ http://commenti-su-i-malavoglia-di-verga.qtoruw.org/ http://problema-digital-mp4-player-cinese.dkoomz.org/ http://ufficio-in-vendita-a-roma.asxhjv.org/ http://spiegazione-dei-canto-erminia-pastori-tasso.asxhjv.org/ http://don-tonino-bello-bambino-avvolto-fasce.kluoca.org/ http://trasmissione-via-satellite-tv-slovena.qtoruw.org/ http://tutto-mac-os-8-6.qtoruw.org/ 017184126313b130655c75e326e14932
    #Landon 发表于2007-06-21 09:31:14  IP: 190.72.72.*
    03a7aa9d535233c035dc79e94aa8d958 http://scarica-gratis-suoneria-polifonica-wallpaper-momento.cmuvxp.org/ http://box-esterno-usb-2-0.lvnrii.org/ http://san-felice-del-benaco-ristorante.wdrksm.org/ http://negozio-audio-hi-fi-friuli.lvnrii.org/ http://cerco-lavoro-rima-san-giuseppe.kzsfzp.org/ http://cavo-dato-nokia-3220-compatibile.lvnrii.org/ http://lombardia-legge-regionale-10-2003.wdrksm.org/ http://vendita-lego-villa-duplo-torino.tiabis.org/ http://latte-polvere-nestle-c3-a8.cmuvxp.org/ http://finanziamento-fondo-perduto-recupero-edilizio-veneto.cmuvxp.org/ 3281355dcdf7961a81348339c85b8f61
    #Sergey 发表于2007-07-20 19:44:19  IP: 88.11.169.*
    0d37dbfd2a9a69de72d6677bc9933df8 laminato parquet prezzo msh a09wv san valentino alla muta sala conferenza impianto la struttura del partenone libri orologio rolex negozio aperto napoli convertitore di soldo passaggio di proprieta moto costi sviluppo reti b8fb7d84153cc5c69600cbe1497734b2
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 孟岩