`
SpringArt
  • 浏览: 326715 次
社区版块
存档分类
最新评论

Rails 1.2 + REST : 讨论 Rails 的核心价值

阅读更多

作者:thegiive,Taipei, Roodo, TW

 

<o:p></o:p>

我 还记得以前我跟另外一个人讨论 ORM 的时候,还有人说到 『ORM毫无意义可言,他一点实用价值都没有』。的确在那时的世界里面,ORM是被视为拖累框架速度的凶手, ORM无法像 SQL 语法一样完全处理各种不同的情况,ORM没有任何实用的必要,他只是一个科学家的玩具而已。但是 Ruby on Rails 一推出,在如此漂亮方便好用的 ORM 之下,彷佛任何网页开发架构没有 ORM 好像就逊了一截。于是每个新出的 Framework 开始学习 Ruby on Rails,加入 Active Record 类似的机制,彷佛 ORM 是所有 Framework 必须也是必要的机制。

到底在 Ruby on Rails 之前,这个世界是没有 ORM 的需求,还是只是我们这些凡夫俗子看不到这样的需求?

当我提到 Rails 1.2 导入 REST 的时候,大家的问题又变成『为什么要用 REST?』『REST 有其它的好处吗?』,其实说实在话,我不知道 REST 到底会带来什么样的革命。或许他也只是个营销名词。孟岩先生曾经对这个事情发表评论

<o:p></o:p> 

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

<o:p></o:p> 

说实在话,我还是无法很准确的抓住<st1:personname w:st="on" productid="孟">孟</st1:personname>先生的点。因为如果众多网页程序设计师对于 REST 的好处跟坏处都不甚明了,那要怎么推行 REST 呢?当大家都不用 REST ,那么使用 REST 有任何意义吗?但是看到 DHH 2006 Rails Conf 讲解了 Rails 1.2 对于 REST 的导入这篇演讲<o:p></o:p>

之 所以今天我们会在这里聚会,之所以Rails是今天的Rails,恰恰因为我们对很多事情说了,恰恰是因为我们将很多人 拒之门外。如今Rails被越来越多的人接受,但我并不认为因此我们就可以背离先前的原则。所以,尽管我毫无疑问地支持Thomas的很多实用的建议,但 对他的论调则不以为然。我不认为Rails应该向外部世界屈服,恰恰相反,Rails正在有力地让外部世界向我们屈服。<o:p></o:p>

凡 事迎合大众到底是金科玉律,还是庸人的想法。我回想到当我接触 Ruby on Rails 之前,我似乎也是座落在『ORM毫无意义可言,他一点实用价值都没有』这一群人。现在的我呢?又到了哪里去呢?回到 REST 这个话题,到现在为止我还是不知道 REST 能够为我带来什么东西?但是我愿意去尝试看看,因为

到底在 Ruby on Rails 1.2之前,这个世界是没有 REST 的需求,还是只是我们这些凡夫俗子看不到这样的需求?

渐 渐的我发现到, Ruby on Rails 的核心价值不在于他的方便好用,其实就是在于 DHH 那一句『我不认为Rails应该向外部世界屈服,恰恰相反,Rails正在有力地让外界世界像我们屈服。』。在 iPod 刚推出的那年,所有评论一面倒的偏向『这个世界并没有任何硬盘式的 MP3 Player 的需求』,现在那些人又到哪里去了呢?追根究底,iPod 当初让评论家否定的原因是因为<o:p></o:p>

  1. 硬盘式随身听用电量多,电池恐怕撑不住<o:p></o:p>
  2. 硬盘晃动时容易有挑针的现象<o:p></o:p>
  3. 硬盘歌太多了,你很难用随身听这样的小屏幕选择几千首歌。<o:p></o:p>

iPod 最后成功的原因很多,但是最主要的原因在于他放大硬盘式随身听的好处(一次可以将所有的歌放进去),而且他的实做让硬盘式随身听的缺点缩小,所以他成功了。

有些人迎合世界的需求,有些人用良好的产品去创造这个世界的需求。

真 正让 REST 可以起来的原因,是 Ruby on Rails 到底能不能实做出一个很方便,很好用的 REST 架构?而非去问现在市面上到底有没有 REST 的需求。当 Rails Team 真的做出一个很棒的 REST 架构的 Framework ,可以放大 REST 架构简洁的优势,却又可以缩小 REST 的缺点,那全世界都会因为 Rails 而转动,就跟当初的 Active Record 一样。但是如果有这个需求,但是实做无法吸引大家使用,也不会有人去使用的。加油吧,Rails Team

延伸阅读<o:p></o:p>

<o:p> </o:p>

<o:p>原发表处:http://lightyror.blogspot.com/2006/12/rails-12-rest-rails.html</o:p>

分享到:
评论
11 楼 dongbin 2006-12-13  
lighter 写道
dongbin 写道
很明显,楼主还没有对rails中的RESTful学习和实践过,所以谈得太~~~~~虚了!

相信你研究一下REST会更有见地的阐述这个问题。

dongbin对REST有什么高见,可以发表一下,作一些阐述,谢谢
http://dongbin.iteye.com/blog/38856
10 楼 lighter 2006-12-13  
dongbin 写道
很明显,楼主还没有对rails中的RESTful学习和实践过,所以谈得太~~~~~虚了!

相信你研究一下REST会更有见地的阐述这个问题。

dongbin对REST有什么高见,可以发表一下,作一些阐述,谢谢
9 楼 dongbin 2006-12-13  
很明显,楼主还没有对rails中的RESTful学习和实践过,所以谈得太~~~~~虚了!

相信你研究一下REST会更有见地的阐述这个问题。
8 楼 thegiive 2006-12-12  
For cvu
感謝 , 受教了
7 楼 cvu 2006-12-12  
REST的意义不在于做一个网站,而在于网站间的互相调用变得异常直接。网站间的调用,也可以理解成不同系统间的调用。

比如一个公司的CRM、workflow、财务系统、website...可以是一套大系统,那样太繁杂,也可以是分别几个独立的系统(decoupled systems),但是互相调用metadata就会非常不方便。一般有这么几种方式实现(从差到好排序):
1、A系统直接调B系统的数据库
2、用程序访问B系统的网页,取出A系统需要的东西
3、各系统把经常要访问的功能写成web service
4、各系统做一套api
5、REST

上面的例子说的是公司系统,大众网站也是如此,如果大家都用REST,mashup也会更容易,好的应用会更多。
6 楼 thegiive 2006-12-12  
dennis_zane 写道
在ROR之前,难道ORM还不够深入人心?
谈的太虚了,或者说什么都没谈


沒錯 , 我也覺得我談的沒啥技術含量 , 所以我沒這個膽發表到這裡來 
這篇與其說我在評論技術? , 還不如說我在 murmur 比較好
而且我發現我的文章重點有點失焦了

不過這篇我想講的是
我很欣賞 DHH 一副  老子就是要世界跟著我走的氣魄   
5 楼 yuxie 2006-12-12  
dennis_zane 写道
在ROR之前,难道ORM还不够深入人心?
谈的太虚了,或者说什么都没谈


我想hibernate虽然很成功,但是并没有像大家想象的那样深入人心。在以前的ORM里,拿的出手的大体有hibernate和ibatis两个(toplink等不在考虑),hibernate管的事情太多了,生成的sql又臭又长(robbin语),而ibatis管的事情太少,还得我自己亲自来写那些又臭又长的sql。
而相反ror的ActiveRecord好像做的那么恰到好处.正如东家之子云云
4 楼 dennis_zane 2006-12-12  
在ROR之前,难道ORM还不够深入人心?
谈的太虚了,或者说什么都没谈
3 楼 spartak 2006-12-12  
rails不是要推广rest,更不是activerecord
rails只是用自己认为正确的方式做web开发

enjoy rails
2 楼 njmzhang 2006-12-12  
看不懂,谁能扫盲一下什么叫REST?
1 楼 wlbookwl 2006-12-12  
好文,支持rails

相关推荐

    应用Rails进行REST开发

    自Rails 1.2版本开始,REST被纳入核心框架。Rails提供了一种名为`scaffolding`的工具,用于快速生成符合REST原则的控制器和模型。路由(routing)在REST应用中扮演关键角色,它定义了URL与控制器操作的映射。Rails的...

    RESTful Rails Development

    - **安装 Rails 1.2 或更高版本**:确保使用了支持 RESTful 开发的 Rails 版本。 - **了解基本概念**:熟悉 REST 的基本原则以及 HTTP 方法的作用。 #### 1.5 资源 Scaffold Rails 提供了一个强大的工具,即 ...

    RestFul_Rails_Dev_v_0.1

    Rails 从 1.2 版本开始支持 REST,这意味着开发者可以轻松地构建符合 REST 原则的应用程序。 **Rails 中 REST 的实现**: - **资源映射**:Rails 使用路由表将 HTTP 请求映射到相应的控制器和动作上。 - **控制器...

    Rails2.0资料

    ### Rails 2.0 关键知识点详析 #### 一、引言 Rails 2.0作为Ruby on Rails框架的一个重要版本,在其发布时引入了一系列改进与更新,旨在...对于正在使用Rails进行Web开发的团队来说,了解这些新特性是非常有价值的。

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    相比第2版中的内容,Rails 2增加了REST、资源、轻量级web service等新特性。本书涵盖了这些全新的内容,因此能更好地体现出Rails框架的发展现状。 整体而言,全书既有直观的实例,又有深入的分析,同时还涵盖了web...

    计算机项目,网站制作的毕业设计开题报告

    Ruby on Rails是遵循REST原则的开源Web开发框架,自1.2版本起,RESTful设计成为了其核心理念。Rails框架通过约定优于配置(Convention over Configuration)的原则,使得开发者能快速构建RESTful应用。本项目将运用...

    RESTful Web Service 课件下载.pdf

    Ruby on Rails自版本1.2起就内置了对REST的支持,这极大地简化了Web应用的开发过程。 - **RESTful路由**:通过定义路由,可以自动地为不同的HTTP动词映射到相应的控制器动作。 - **资源控制器**:每个资源都对应一...

    ASP EXCEL导入SQL

    Rails框架(从版本1.2.x起)成为了第一个引入REST作为核心思想的主流网络软件开发框架。在Rails框架的充分利用了REST软件架构之后,人们更加坚信REST的重要性和必要性。Rails利用REST软件架构思想对网络服务也提供了...

    nosql 入门教程

    1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 14 1.5 图形数据库 15 1.6 小结 16 第2章 NoSQL上手初体验 17 2.1 第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

    java开源包1

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包11

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包2

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包3

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包6

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包5

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包10

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

Global site tag (gtag.js) - Google Analytics