`
robbin
  • 浏览: 4821472 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137063
社区版块
存档分类
最新评论

rails作者DHH谈及REST

    博客分类:
  • Ruby
阅读更多
http://www.loudthinking.com/arc/000602.html

CSDN上面有中文的翻译:

http://blog.csdn.net/dhansson/archive/2006/11/26/1415180.aspx

标题是“死星不可避免的灭亡 ”,引用星球大战的典故,含义是说对于那些庞大商业公司和机构搞出来的貌似威力无比的SOAP和Web Services就好像星球大战中帝国军队建造的终极武器-死星。

引用

现在感觉起来我们已经到了星球大战-新希望这部电影的最后20分钟。......

而对甲板上的帝国指挥官来说,我敢肯定他们没有什么需要担心的事情标准化过程正在全速前进。我们有委员会来监督委员会。所以,一小拨叛逆的黑客的咕嘟很难改变什么。难道他们不知道死星很快就要完全投入使用吗?

......我肯定EJB和CORBA的推动者同样认为他们是不可战胜的,......

可能这就是IT业内一个大的运作的方法。我们必须要有一个复杂性深不可测的新的前沿以迷失于中。这个前沿需要工具修整,庞大的顾问团队,5年的任务计划,和进出的障碍


引用
即将到来的Rails 1.2令我兴奋的就是它全部是关于尽量的让REST成为网络程序员自然的解决方案。肯定有很多人在某个方面根本不在乎。他们就是那些处于危机的人。但是使REST成为标准根本不难。REST已经很简单了。混合一点帮助,指导,和集成的常规,很快,程序员对项目经理实现SOAP接口的要求的反应就会是:”你真的想让我这么做?!?!”


DHH认为了SOAP就像帝国军队的死星那样,貌似强大,却终将陨落。而推翻SOAP统治,取代SOAP成为网络web服务的REST虽然看似不值得一提,却终将获胜。

另外最近Google废除了以前发表的Google SOAP API,改用AJAX来提供Search服务了。

很有意思的事情和趋势,让我们明年好好看看是否REST将掀起真正的web服务革命吧,这是SOAP搞了六年都没有搞成功的事情。

BTW:很可惜这么好的文章在CSDN却没有什么点击和回复,sign~
分享到:
评论
33 楼 seadog 2007-04-10  
不错的
32 楼 winterwolf 2007-04-05  
weiqingfei 写道
winterwolf 写道
rest在读完head后一样还是要解析xml读数据啊 简单在那里?


怎么老扯到xml呢?

rest处理4类请求,再细的颗粒是还要自己做呀。


你可能误会了. 我明白rest的概念.

我是想将rest ws和soap ws放到soa中进行对比

至于soa为什么老扯到xml我就不回答了
31 楼 winterwolf 2007-04-05  
gigix 写道
winterwolf 写道
rest在读完head后一样还是要解析xml读数据啊 简单在那里?

普通的请求,哪里有xml什么事情?


假定传输的内容是xml文档. 
30 楼 weiqingfei 2007-04-05  
winterwolf 写道
rest在读完head后一样还是要解析xml读数据啊 简单在那里?


怎么老扯到xml呢?

rest处理4类请求,再细的颗粒是还要自己做呀。
29 楼 gigix 2007-04-05  
winterwolf 写道
rest在读完head后一样还是要解析xml读数据啊 简单在那里?

普通的请求,哪里有xml什么事情?
28 楼 winterwolf 2007-04-05  
rest在读完head后一样还是要解析xml读数据啊 简单在那里?

将动作放到xml好处就多了

<acts>
<act url="sv1">
保存定单
<go>sv2</go>
<act>

<act url="sv2">
备份定单
<go>sv3</go>
<act>

<act url="sv3">
发货单
<go>end</go>
<act>

<acts>
27 楼 weiqingfei 2007-04-05  
winterwolf 写道
rest确实是放在head里 这个方法也许只对不擅长处理xml的开发框架简单

其实用xslt或者直接用xquery即可对xml中的动作进行判断.

多数人不熟悉cocoon ops这样的框架所以认为这么做复杂.
我觉得这个和xml应该扯不上什么关系。
动作这个东西,可以放在任何地方,以任何形式表现。只要接收端能正确解析就可以。

rest只不过应用了http所支持东西来做,从形式上更加简练。
26 楼 winterwolf 2007-04-05  
rest确实是放在head里 这个方法也许只对不擅长处理xml的开发框架简单

其实用xslt或者直接用xquery即可对xml中的动作进行判断.

多数人不熟悉cocoon ops这样的框架所以认为这么做复杂.
25 楼 weiqingfei 2007-04-05  
winterwolf 写道
weiqingfei 写道

这儿的唯一性,不是绝对的唯一性,而是一种相对的唯一性。
对于操作,它只是抽象出经常用的4大类,分布在这4大类里的更细小的颗粒,还是要用url的方式(或者其它传统方式)来实现了。

由于head的局限性,不大可能把所有的服务都隐蔽在url之后。

至于这样的拆分,是更清晰了,还是更加混乱了,这就是仁者见仁,智者见智的事情了。


看来这只有借助具体实践来检验了

如果用url来指定ws的操作可以让xml中不包括具体的动作 order.com/order.save
<order>
<guessinfo/>
<goods/>
<参数>
<目标数据>/xmldb/order</目标数据>
......其它的比如 我们常用的?后面的paramater
</参数>
<order>

如果要用一个url来处理所有ws的操作那么就必需给xml加上动作指令 server端也必需做判断 order.com/order
<order>
<guessinfo/>
<goods/>
<参数/>
<动作>save</动作>
<order>

究竟哪个方式好 ?


对于WS是这个样子的。

但是对于rest,动作不是放在数据区的,而是放在了head里面。
get,post,put,delete是http很早就有的,但是为什么以前都是用get,post,很少关注put,delete呢?
因为现有浏览器很难支持。
现在开始关注rest,我想也是由于ajax所带动起来的,因为xmlhttprequest可以随意指定请求方式。
以前靠的是解析你的url来判断动作,现在只不过靠的请求方式来判断动作。

哪个方式好,我不敢妄言。

至于难以测试,客户端,ajax本来就难以测试,多加一个也无妨。

服务器端,我没有用过ror,不知道是怎么解析下发的,java的servlet对4中操作是支持的,内容形式的话估计还是要靠自己来判断,我想服务器端的测试,应该没有增加难度。
24 楼 winterwolf 2007-04-05  
那个方式好仅仅从服务内部是看不出来的.

当ws互相调用的时候可能差别就很大.也许是多url方便也许是一个url方便

但是有一点可以肯定就是多URL便于测试.
23 楼 winterwolf 2007-04-05  
weiqingfei 写道

这儿的唯一性,不是绝对的唯一性,而是一种相对的唯一性。
对于操作,它只是抽象出经常用的4大类,分布在这4大类里的更细小的颗粒,还是要用url的方式(或者其它传统方式)来实现了。

由于head的局限性,不大可能把所有的服务都隐蔽在url之后。

至于这样的拆分,是更清晰了,还是更加混乱了,这就是仁者见仁,智者见智的事情了。


看来这只有借助具体实践来检验了

如果用url来指定ws的操作可以让xml中不包括具体的动作 order.com/order.save
<order>
<guessinfo/>
<goods/>
<参数>
<目标数据>/xmldb/order</目标数据>
......其它的比如 我们常用的?后面的paramater
</参数>
<order>

如果要用一个url来处理所有ws的操作那么就必需给xml加上动作指令 server端也必需做判断 order.com/order
<order>
<guessinfo/>
<goods/>
<参数/>
<动作>save</动作>
<order>

究竟哪个方式好 ?
22 楼 weiqingfei 2007-04-05  
dongbin 写道
winterwolf 写道
weiqingfei 写道

rest提倡的一个观点就是uri的唯一性,对于同一内容的不同形式,以及不同动作都是通过同一个uri来完成的。把传统用uri来标识的动作,用html的head来标识。


这正是我不理解的地方. 比如order.com是一个定单服务 那么所有对定单的操作都要用一个URL! 仅仅对一个定单的操作可以仅仅用save delete update 但是如果对全部定单进行备份和查询怎么办 ?

很多服务都被荫藏在url之后 这样rest还是会变的越来越复杂 最后变成官方的ws.

一旦服务被荫蔽在url之后 其它人就很难了结服务的内容及如何调用服务. 为什么不用url来表示资源和操作用guessorder.save allorder.backup 这样不是更简单更现实吗?     
REST is a kind of tech to implement Webservice.


我的理解,

一个普通的html请求是一棵树,
REST的请求是树枝,
WS是叶子。

当然,最终,要的都是叶子。
21 楼 winterwolf 2007-04-05  
dongbin 写道
REST is a kind of tech to implement Webservice.


是 但是很概念 具体如何做还不很清晰.唯一明确的就是对ajax类客户端的肯定.

服务端如何做没有官方WS那样明确的规划.还需要探讨
20 楼 weiqingfei 2007-04-05  
winterwolf 写道
weiqingfei 写道

rest提倡的一个观点就是uri的唯一性,对于同一内容的不同形式,以及不同动作都是通过同一个uri来完成的。把传统用uri来标识的动作,用html的head来标识。


这正是我不理解的地方. 比如order.com是一个定单服务 那么所有对定单的操作都要用一个URL! 仅仅对一个定单的操作可以仅仅用save delete update 但是如果对全部定单进行备份和查询怎么办 ?

很多服务都被荫藏在url之后 这样rest还是会变的越来越复杂 最后变成官方的ws.

一旦服务被荫蔽在url之后 其它人就很难了结服务的内容及如何调用服务. 为什么不用url来表示资源和操作用guessorder.save allorder.backup 这样不是更简单更现实吗?     


这儿的唯一性,不是绝对的唯一性,而是一种相对的唯一性。
对于操作,它只是抽象出经常用的4大类,分布在这4大类里的更细小的颗粒,还是要用url的方式(或者其它传统方式)来实现了。

由于head的局限性,不大可能把所有的服务都隐蔽在url之后。

至于这样的拆分,是更清晰了,还是更加混乱了,这就是仁者见仁,智者见智的事情了。

19 楼 dongbin 2007-04-05  
winterwolf 写道
weiqingfei 写道

rest提倡的一个观点就是uri的唯一性,对于同一内容的不同形式,以及不同动作都是通过同一个uri来完成的。把传统用uri来标识的动作,用html的head来标识。


这正是我不理解的地方. 比如order.com是一个定单服务 那么所有对定单的操作都要用一个URL! 仅仅对一个定单的操作可以仅仅用save delete update 但是如果对全部定单进行备份和查询怎么办 ?

很多服务都被荫藏在url之后 这样rest还是会变的越来越复杂 最后变成官方的ws.

一旦服务被荫蔽在url之后 其它人就很难了结服务的内容及如何调用服务. 为什么不用url来表示资源和操作用guessorder.save allorder.backup 这样不是更简单更现实吗?     
REST is a kind of tech to implement Webservice.
18 楼 winterwolf 2007-04-05  
weiqingfei 写道

rest提倡的一个观点就是uri的唯一性,对于同一内容的不同形式,以及不同动作都是通过同一个uri来完成的。把传统用uri来标识的动作,用html的head来标识。


这正是我不理解的地方. 比如order.com是一个定单服务 那么所有对定单的操作都要用一个URL! 仅仅对一个定单的操作可以仅仅用save delete update 但是如果对全部定单进行备份和查询怎么办 ?

很多服务都被荫藏在url之后 这样rest还是会变的越来越复杂 最后变成官方的ws.

一旦服务被荫蔽在url之后 其它人就很难了结服务的内容及如何调用服务. 为什么不用url来表示资源和操作用guessorder.save allorder.backup 这样不是更简单更现实吗?     
17 楼 weiqingfei 2007-04-05  
winterwolf 写道
我的理解是rest是让URL通过 put post delete updata来提供ws服务. 但是我觉得没必要非用一个url象 www.ws.com/sv1.save  www.ws.com/sv2.updata 不是更方面吗
put post delete updata在rest中所对应的操作,传统上都是用put post来做的,只不过判读动作以及内容形式是由用户自己实现的,现在只不过把这个判断交给了容器来做。

因为它动作,以及操作内容形式的颗粒度太粗,操作内容处于ws和html之间,动作的话也只是把mvc里的c抽象出4大类。

rest提倡的一个观点就是uri的唯一性,对于同一内容的不同形式,以及不同动作都是通过同一个uri来完成的。把传统用uri来标识的动作,用html的head来标识。
16 楼 winterwolf 2007-04-04  
我的理解是rest是让URL通过 put post delete updata来提供ws服务. 但是我觉得没必要非用一个url象 www.ws.com/sv1.save  www.ws.com/sv2.updata 不是更方面吗
15 楼 weiqingfei 2007-04-04  
dennis_zane 写道
weiqingfei 写道
奇怪,rest怎么能和ws放到同一个层次上来比呢?


你了解什么是REST了吗?


REST是什么?套用一个不客气的说法,就是“新瓶装老酒”。
简单的来讲,就是把if...else....换了个地方来做,不管是内容还是动作。
14 楼 dennis_zane 2007-04-04  
weiqingfei 写道
奇怪,rest怎么能和ws放到同一个层次上来比呢?


你了解什么是REST了吗?

相关推荐

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    REST(Representational State Transfer)是一种软件架构风格,用于定义客户端与服务端之间交互的标准方式。RESTful API是基于HTTP协议设计的,通过不同的HTTP方法(如GET、POST、PUT和DELETE)来执行对应的操作,并...

    应用Rails进行REST开发

    ### 应用Rails进行REST开发 #### 1.1 什么是REST? REST(Representational State Transfer),这是一种由Roy Fielding在他的博士论文中提出的架构风格。REST的核心思想是通过标准HTTP协议中的GET、POST、PUT、...

    mage-rest-on-rails:Magento 的 REST API on Rails 4 的简单示例

    Rails 4 上的 Magento REST API Magento 在 Rails 4 上的 REST API 的一个简单示例,其中还包括基准测试 + oauth 注释。安装克隆这个 repo 运行bundle install 运行rails server配置您需要修改的唯一文件是settings/...

    使用rails编写REST风格的web应用

    总结来说,"使用rails编写REST风格的web应用"涉及的内容包括Rails框架基础、MVC模式的理解、RESTful设计原则的应用、路由配置、控制器和模型的编写、视图渲染以及相关的测试和安全措施。学习这部分内容将使开发者...

    跨越边界:REST on Rails

    Ruby on Rails是一个突然流行...本文介绍Rails中的Web服务,重点放在一个名为Representational State Transfer (REST)的策略上。本文介绍了如何在Ruby on Rails中添加REST风格的Web服务,并从Ruby和Java代码调用服务。

    Rails101_by_rails4.0

    作者特别提到了“CRUD懶人大法Scaffold”,它是一种通过Rails自动生成代码的方式来快速搭建基本的CRUD操作,这大大简化了开发流程,使得开发者可以将更多的精力放在业务逻辑的实现上。 此外,书中还介绍了一些Rails...

    The Rails 4 Way

    - **Rails中的REST实现**:Rails默认遵循REST原则,通过资源路由和标准的控制器动作支持常见的CRUD操作。 - **资源和表示**:讨论如何将数据建模为资源,并如何通过不同的HTTP方法处理这些资源的不同状态。 **4. ...

    使用rails编写REST风格的web应用.pdf

    标题与描述均指向了"使用Rails编写REST风格的Web应用"这一主题,这是一份深入探讨如何运用Ruby on Rails框架来构建遵循REST(Representational State Transfer)架构风格的Web应用程序的指南。REST作为一种架构风格...

    Rails 101 入门电子书

    - **作者**: xdite,一位经验丰富的开发者,专注于Ruby on Rails框架。 - **作品**: 除了《Rails 101 入门电子书》外,xdite还编写了其他几本书籍,如《Maintainable Rails View》、《Lean SaaS》以及《Land Dream ...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    rails本地安装包完整版

    它允许Rails应用作为客户端,通过HTTP与遵循REST原则的远程资源进行交互,从而实现数据的获取和更新。 5. **rake-0.8.1.gem**:Rake是Ruby社区广泛使用的构建工具,类似于Java的Ant或Python的setup.py。它允许...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    [Rails] Crafting Rails Applications (英文版)

    ☆ 资源说明:☆ [Pragmatic Bookshelf] Crafting Rails ...[作者信息] Jose Valim [出版机构] Pragmatic Bookshelf [出版日期] 2011年04月11日 [图书页数] 184页 [图书语言] 英语 [图书格式] PDF 格式

    Rails recipes

    作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有理论深入分析的参考书。 Ruby on Rails是一种流行的开源Web应用框架,用Ruby语言编写,遵循MVC架构模式。Rails的目的是让开发过程尽...

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是...《Ruby on Rails Tutorial》作者 Michael Hartl

Global site tag (gtag.js) - Google Analytics