中国开发网: 论坛: 程序员情感CBD: 贴子 353100
haitao
关于ROR,PHP,Web应用开发
http://blog.csdn.net/danny_xcz/archive/2006/06/26/835417.aspx

关于ROR,PHP,Web应用开发
回应拐拐龙底咚兄弟:

1 如果你去国外各大论坛转转,你会看到人们都在谈论ror框架的弊端以及因此带来的性能缺陷。人们不得不像当年对EJB一样,找出一系列的patterns和anti patterns来指导使用ror。

2 你知道jboss seam么?看过jboss seam,你就会明白,这个世界上最聪明的程序员们是如何对web企业应用的开发进行彻底变革的。ror不是这样的终结者,spring也不是。Matt raible今年愚人节的玩笑的就是它要把appfuse的前台全部改成基于ror。

3 PHP和ROR,JAVA,PYTHON的本质区别是,后者是面向domain modal的,前者是面向Web脚本的,正因为有了php,世界上才会有那么多丰富的web应用,国内的discuz应该够出名了吧?国外无数的web 2.0站点都是基于php开发的。

知道IBM最近在做什么么?

IBM and Oracle stressed the importance of integration in PHP's future. SDO and SCA were talked about as vehicles to help create enterprise-class PHP that can be utilized in more than just situational instances.


蓝色巨人早就看出了J2EE在web企业应用开发上的臃肿和无能为力,IBM曾经也有人研究过ror,但是放弃了,IBM最终选择了php。

jboss seam是一个重要的革新,也许这个框架因为open source的原因不会被广大中国公司采用,但是它会引发人们对web企业应用开发的重新思考,当一个domain modal经过dao,service,mvc层层包装走到前台的时候,人们终于发现所谓的设计模式只不过是臃肿的八股文。即使你遵循了所有的设计模式,你也无法开发出性能优良,界面友好的程序,为什么?因为所有的企业应用的问题,从缓存到富客户端,是任何程序开发语言都遇到的,并且都解决了的。你用了hibernate又怎么样?你就不需要一个oracle工程师了么? csdn这样拥有12W注册用户的blog系统,你用spring或者ror能开发出来么?

所以,清醒把,所以对框架热衷的善良的程序员们?抛弃框架,拥抱敏捷吧!把所有的对我们的信息化没有用的东西都抛弃把。


如果这个世界上有一种框架能够解决一切问题(就像是某种社会制度)
,那么它早就出现了。

正如年初的预言一样,ROR已经死了。如果拐拐龙底咚兄弟用ror开发了什么BOSS系统或者像DISCUZ一样的web应用,那么请告诉我知道,谢谢。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=835417

[点击此处收藏本文] 纯月发表于 2006年06月26日 08:30:00


forlinux 发表于2006-06-26 12:09:00 IP: 192.168.0.*
顶一个,我很长一段时间都是用php的,虽然现在在用ASP.NET,但有的时候,感觉PHP还是很方便的。


g9 发表于2006-06-26 12:49:00 IP: 211.100.21.*
TrackBack来自《讨论技术没错,信口开河就是你的错了》:

在纯月部落看到这篇文章。我对PHP没有什么认识,也无意介入PHP vs RoR的争论。可惜的是,纯月看似言之凿凿的有些议论惘顾事实,妄下结论,实在让人失望。喜欢PHP没有错,为了支持PHP信口开河,不做基本的事实检查就是你的错了。点评一下:

【3 PHP和ROR,JAVA,PYTHON的本质区别是,后者是面向domain modal的,前者是面向Web脚本的】

评:什么叫面向domain model(笔误俺就不挑了,反正谁都难免写错别字)?谁说本质区别是这个所谓的domain model? 俺总是提醒自己“言有易,言无难”,所以弱弱地问一句,“来点参考文献不介意吧?”?...


夜色小熊 发表于2006-06-26 13:13:00 IP: 61.185.214.*
并非是框架有什么问题,框架在各个层面上都存在,php是不错,但最好也不要打击其它技术。


纯月 发表于2006-06-26 13:42:00 IP: 222.186.123.*
一并回复 负暄琐话 兄弟之文

我来给点参考文献

http://searchwebservices.techtarget.
com/originalContent/0,289142,sid26_gci1195106,00.html


I think PHP, unlike languages like Java, Perl, Ruby, is a domain specific language IMO, that addresses web application needs vs. true enterprise application needs. I know it has been extended lately to support a more reusable enterprise development scenerio, it it still only usable for mostly front end MVC web design.

的确,我不了解IBM的内部运作,但是我知道我订阅每周的期刊里面,很久没有出现ROR的内容了。
另外,谈到IBM,人人都知道IBM是典型的把简单的东西变复杂的公司。我本身就是开发门户的,我很清楚,portal server半死不活的原因。 甚至是一个js的drag drop,都成了portal争相实现的东西。

“你也无法开发出性能优良,界面友好的程序”,这句话的意思是J2EE或者Spring,或者ROR都不是决定应用程序开发成功的关键东西。

另外,所谓oracle,csdn问题,请不要抬杠,我的意思是说,开发过程中有很多东西,不是设计模式,框架就能解决的。ROR能解决blog(12W用户*300篇文章)这么多静态叶面的调度么?调度的技巧是所有这些框架都不能提供的。

ROR是有很多应用,那又如何?如果总是那些购物车之类的程序的话,闭上眼睛都能写出来。ROR有什么实际的应用么?ROR可以做机遇托管的应用么?不可能,因为大家只用asp,php。ROR可以做企业应用么?更不会,我没听说过任何企业开发开始使用ROR。

也许ROR只能开发一些,文章发布这样的玩玩的东西吧。

Spring+Hibernate开发商务网站,当然是可以的。不过不要告诉我spring就是你们使用的中间件,你们自己在spring上开发出分布式计算服务。否则做那些single jvm的所谓轻量级容器就让人笑话了。

老外炒作的东西多呢,一路走过来,我看得,听得,都太多了。一个搞IT的要学会如何在信息爆炸的社会里面,找到什么才是真正有生命力的东西。

我那个回应不是为了PHP和ROR之争,而是为了说明ROR能做到的,任何一种开发语言,.net,php,perl,python.....都能做到

另外,我也同意你说的:总结:程序员信口开河,是要被人鄙视的。




wdzwdz 发表于2006-06-26 14:21:00 IP: 219.136.16.*
Spring也有集群功能了


野马 发表于2006-06-26 17:41:00 IP: 202.106.75.*
关于框架我是这样认为的,框架本身有其存在的价值,并且在某些应用中使表现非常优秀的。但是不是适用于所有情况的。反过来说没有一种开发模式适用于所有情况。是否使用框架,完全取决于面向的应用,而不是个人的喜好。


g9 发表于2006-06-26 23:28:00 IP: 199.246.40.*
“言之凿凿”是个成语啊。“凿凿"是言语确实的意思。《聊斋志异·段氏》第二段:“言之凿凿,确可信据”。再说我不是点拨谁的英文。无非是引用纯月的话时改动了其中的单词。为了避免别人认为我在挑人语病,才特地注明一下:笔误难免。这个很难理解么?再说了,就算我写错一个词,就不能指出别人的错别字么?这个逻辑是不是飘逸了点?


g9 发表于2006-06-27 00:07:00 IP: 199.246.40.*
我的回答。谢谢。

【http://searchwebservices.techtarget.com/originalContent/0,289142,sid26_gci1195106,00.html

I think PHP, unlike languages like Java, Perl, Ruby, is a domain specific language IMO, that addresses web application needs vs. true enterprise application needs. I know it has been extended lately to support a more reusable enterprise development scenerio, it it still only usable for mostly front end MVC web design. 】
回:这段话恰恰是说PHP是一门针对Web应用的DSL。和纯月老大的原话“【PHP和ROR,JAVA,PYTHON的本质区别是,后者是面向domain modal的,前者是面向Web脚本的”不符。还有,说一门语言是DSL容易理解。说一门语言“面向domain model”就难以理解了,所以俺才问文献出处。

【但是我知道我订阅每周的期刊里面,很久没有出现ROR的内容了。 另外,谈到IBM,人人都知道IBM是典型的把简单的东西变复杂的公司。我本身就是开发门户的,我很清楚,portal server半死不活的原因。 甚至是一个js的drag drop,都成了portal争相实现的东西。 】
回:Portal server怎么样俺不知道。但这些并不能作为“蓝色巨人早就看出了J2EE在web企业应用开发上的臃肿和无能为力,IBM曾经也有人研究过ror,但是放弃了,IBM最终选择了php。”的证据,对吧?如果IBM这样批评J2EE,早就是新闻了。至于从期刊内容推断IBM放弃RoR,还是应了那句老话:言有易,言无难。

【“你也无法开发出性能优良,界面友好的程序”,这句话的意思是J2EE或者Spring,或者ROR都不是决定应用程序开发成功的关键东西。另外,所谓oracle,csdn问题,请不要抬杠,我的意思是说,开发过程中有很多东西,不是设计模式,框架就能解决的。】

回:俺同意。误会之处,还请多多包涵。

【ROR能解决blog(12W用户*300篇文章)这么多静态叶面的调度么?】
我没用RoR做过大型应用,所以不知道答案。不过http://www.loudthinking.com/arc/000479.html 可以作参考。更重要的是,RoR和PHP的扩展策略不一样么?Stateless架构,所有session数据放到数据库。扩展就是负载平衡+划分数据库。既然这样,有什么理由认为PHP能做的事RoR不能做呢?

【我没听说过任何企业开发开始使用ROR。 】
企业开发没有用RoR有很多因素。不能用这条来批评RoR的论据。注意哈,我不是说RoR不能被批评(有什么技术不能被批评?),而是单指这条不能成为论据。还有,这条论据早就被人用过了,也被人批评了。什么叫企业应用?很多企业的应用面对的技术挑战还比不上一个大型的网站,比如MySpace。

【Spring+Hibernate开发商务网站,当然是可以的。不过不要告诉我spring就是你们使用的中间件,你们自己在spring上开发出分布式计算服务。否则做那些single jvm的所谓轻量级容器就让人笑话了。】
还是Scalability的问题啊。处理它的办法多了,单个JVM不是问题。

【我那个回应不是为了PHP和ROR之争,而是为了说明ROR能做到的,任何一种开发语言,.net,php,perl,python.....都能做到】
这个俺绝对同意。但怎么从论据到论点,俺就有意见了。




bjblues 发表于2006-06-27 07:22:00 IP: 202.102.145.*
严重同意野马的意见:
一类框架不是适用于所有情况的
是否使用框架,完全取决于面向的应用,而不是个人的喜好。
比如:几年前流行Struts+Spring+Hibernate
现在风行ROR/AJAX
都是取决于面向的应用,而不是个人的喜好
纯月老大一下子把FrameWork的作用一棍子打死是太偏激了



再回g9 发表于2006-06-27 07:57:00 IP: 222.186.123.*
[这段话恰恰是说PHP是一门针对Web应用的DSL。]
DSL是什么意思?不就是动态脚本么?这句话有什么问题?

[至于从期刊内容推断IBM放弃RoR,还是应了那句老话:言有易,言无难。
]
ROR这种东西更本就提不上筷子,IBM当然不会正式回应它

[扩展就是负载平衡+划分数据库。] ROR的线程模型有很大的性能缺陷,这点你仔细研究它的代码就会明白了

[还是Scalability的问题啊。处理它的办法多了,单个JVM不是问题。
] 不是问题么?我们国家的火车售票系统,高考查分系统一到繁忙时候就死机,难道那些开发公司的设计师们都是笨蛋么?


[我那个回应不是为了PHP和ROR之争,而是为了说明ROR能做到的,任何一种开发语言,.net,php,perl,python.....都能做到]
我写当初那片文章寓意是,无需在ROR这种框架上花太多精力,我并没有将ROR打死,我也没这个本事。但是凭我的经验,我知道这种东西是不会长久的,它会随着当年的echo,tapestry,bindows等等很多框架一样慢慢被人遗忘。就像perl一样,你说他死了么?但是越来越少的人会用它开发web应用。fortran语言,basic语言,除了教计算机历史学以外,不会有人去用他们做企业开发了。

我的本意是希望大家不要把精力花在无谓的使用框架上。多多研究业务模型,敏捷开发的方法才是正道。程序语言,设计模式要尽量选择程序的,而不是新的。好比我们现在的社会制度一样,当年学人家欧洲人搞gczy,结果呢?根本没有经历实践的检验,现在人家欧洲人都不搞了,我们还要死撑着面子搞。

如果大家很难从我的字里行间读出这样的良苦用心,那我只有在这里说出来。虽然我以前学语文课概括文章中心思想的能力也很差。

最后,讨论归讨论,无疑攻击任何人。大家的批评指点,我都会接受,并致以感谢。





heiyeluren 发表于2006-06-27 08:47:00 IP: 221.122.49.*
嗯,其实每种语言的特长适合做什么就做什么Java的路线是大小通吃,桌面也好、web也好,移动开发也罢,乃至于游戏,能做的都给做上,但是这样的效果是显而易见的:臃肿、庞大、维护困难、一堆无谓的框架。IBM的选择是不会错的,当然,IBM不可能只放在PHP或者Java上面,肯定还会涉猎更多语言,语言是其次的,业务是最重要的,什么样的业务适合用什么语言,当然,高效、快速开发都是PHP的特点。至于Ruby,我想,它的语法是我所不喜欢的,如此而已。


g9 发表于2006-06-27 10:18:00 IP: 69.192.26.*
DSL = Domain Specific Language,不是脚本语言的意思。

【ROR这种东西更本就提不上筷子,IBM当然不会正式回应它】
这就是当初批评的要点:没有证据,太武断了。替IBM立言? IBM做什么Ruby和RoR项目俺不能说。但要说IBM不屑于RoR,绝对胡说八道。

【ROR的线程模型有很大的性能缺陷,这点你仔细研究它的代码就会明白了 】
Scalability的解决方案有很多种,不见得一定要走多线程的路。RoR依赖的FastCGI就不是。这篇博客有相关讨论:http://blogs.codehaus.org/people/tirsen/archives/001041_ruby_on_rails_and_fastcgi_scaling_using_processes_instead_of_threads.html。还有这里:http://poocs.net/articles/2006/03/13/the-adventures-of-scaling-stage-1,还有这里:http://scalewithrails.com/

【不是问题么?我们国家的火车售票系统,高考查分系统一到繁忙时候就死机,难道那些开发公司的设计师们都是笨蛋么?】
不是笨蛋。但要说归于单个JVM,没有扎实的数据恐怕说不出口吧?我们做过的大型网站(反正比CSDN的交易量大多了),还不是一台机器一个JVM,用LAMP(也就是PHP或者RoR那套东西)的扩展策略搞定。

【我写当初那片文章寓意是,无需在ROR这种框架上花太多精力。。。我的本意是希望大家不要把精力花在无谓的使用框架上。多多研究业务模型。。。】
绝对同意。可惜,好的论点不等于可以信马由缰,比如说告诉大家IBM其实看不上RoR。

【至于那个言之凿凿,也不需要把古人的通假字再拿出来提了吧】
是通假字么?我查成语词典,汉英词典(不好意思,手里就这本了)都是"言之凿凿“啊。就算是通假字,俺语文差呗,只见过这种写法。反正不是重点。


g9 发表于2006-06-27 10:25:00 IP: 69.192.26.*
我其实觉得两个词的意思有所差别(凿凿和灼灼的读音都不一样)。谁有成语词典,可以验证一下。我知道的在线成语词典只有”言之凿凿“,所以俺不肯定。


纯月 发表于2006-06-27 11:02:00 IP: 222.186.123.*
DSL 也= dynamic script language

[Scalability的解决方案有很多种,不见得一定要走多线程的路。]
建议你看看我blog最新翻译的一个rail的文章片断,你就知道rail的缺陷了。


[Ruby on Rails and FastCGI 那篇文章] 你应该仔细阅读完下面的人的回复,不要只从文章中的只言片语得到结论。



[IBM做什么Ruby和RoR项目俺不能说。但要说IBM不屑于RoR,绝对胡说八道。 ]
IBM的一贯风格,以前我们exo的team里面就有IBM Portal组出来的。大家都明白。

至于能否从行为推理到思想,这和个人的见识,远见有关系,我也不强求。







纯月 发表于2006-06-27 11:20:00 IP: 222.186.123.*
跑开你是否认同我的观点不说,如果你是实际作项目的,我打赌,你绝对不会用RoR开发真正的商业应用,如果你做了,请别忘了告诉大家。


纯月 发表于2006-06-27 11:54:00 IP: 222.186.123.*
再贴几个参考
http://suttree.com/2005/12/01/php-vs-rails/

If I were a young developer looking to build my first website, I’d pick RoR. When I started, PHP was the obvious choice compared to everything else because it did a lot of the basic stuff for you.



Also, can anyone elaborate on what sort of development advantages accrue to RoR for production websites? I've seen comments elsewhere here that say the scaffolding, which gives you the enormous efficiencies in RoR for prototyping, is not actually that useful for production websites


http://www.megginson.com/blogs/quoderat/archives/2005/06/11/rails-vs-php-mvc-or-view-centric/

After all that soul-searching, prototyping an app in PHP was like a cool breeze on a hot day.

Rails, on the other hand, was a disappointment. It tries to make my database invisible so that I think I’m dealing only with objects, but my database, and its query capabilities, are what will make my application more than just a collection of objects with a simple search box. I ran into a bug during one of the tutorials and it was almost impossible to trace the problem due to the deep layering. And the only thing that Rails seems to simplify is the basic CRUD operations,


When is Ruby better than PHP? I suspect that the answer to that will be different for every developer, but for me, I have found that Ruby is unquestionably the superior choice for putting together a quick but effective program, especially one for personal use.

If the basic purpose of an app is to manipulate a database, adding, editing, and removing records, then RoR is brilliant.

Documentation. Definitely RoR’s weakest point. Ruby is most popular in Japan, and there’s a good deal of Japanese documentation, but that does little good for those of us who only speak English! Secondly, presumably because Rails is much newer than PHP, it has bugs. Admittedly, PHP has bugs, too, but in my years as a PHP developer, I’ve never been affected by one. In my scant weeks of developing on Rails, I’ve spent literally hours trying to figure out what was wrong with my code… only to find that I’d been afflicted by a bug in the RoR system somewhere, and others experienced the same problem. This would be less annoying if I wasn’t so accustomed to assuming that the only “bugs” were in my code; there have always been workarounds, but the problem is in how long it takes to identify that the problem is in the system instead of being in the code. (For instance: RoR on Windows has a problem where it dies when it encounters tab characters in an ERB file. Which is utter nonsense to begin with, and results in the least informative and least consistent error messages I’ve ever seen.)


http://www.pankaj-k.net/archives/2005/11/ruby_or_java_a.html


So the Java version ran almost 12 times faster!! This is signficant. If the same ratio holds true for a Ruby on Rails web application and a Java web application then what it means is that one would need to buy 10 times more hardware to serve the same amount of load (or users). This may negate all the gains made due to faster development time with Ruby on Rails.

However, my observations on poor runtime performance by a Ruby program is not alone. Worse numbers have been reported. Comparative performance of Ruby and Java at The Computer Language Shootout Benchmarks tell a similar story.



there are many solutions in the Java world that are getting close to RoR's touted development productivity. I suggest you take a look at RIFE, and our persistence engine. There are many similarities, except that we don't base it on the Active Record pattern and don't magically create classes from database schemas.

If you want the scaffolding features of RoR, we release RIFE/Crud a week ago and it received a lot of very positive responses. Many people are already successfully adopting it.


But at the end, using ruby is not really logical for many type of applications (including web applications) when you put a bit of complex business logic (lets say graphics generation, mathematical operations, text processing, pdf generation etc) on the server side ruby's performance degrades horribly and you need to go C hacking..

Despite that, there is no doubt Java is faster than Ruby. In fact other scripting languages like Perl and Python are also faster. Most of this is due to the fact that Ruby does not in fact have a VM

这样的文章是在太多,要吃饭了,不想再贴出来了。






纯月 发表于2006-06-27 13:30:00 IP: 222.186.123.*
请勿发和技术无关的东西,不属于讨论范围。


sevencat 发表于2006-06-28 09:50:00 IP: 203.156.209.*
没有看到ROR的大量的成熟的网站出来之前,我连看都不想去看他。

我一直有些怀疑是一些咨询公司和另外一些大公司在背后暗暗在宣传这个东东,如果没有这些公司宣传,就这么一个小小的东东,我们哪会知道得这么快。

这些公司巴不得技术天天换,不然他们哪赚到钱啊。

IBM是最擅长把简单的东东搞得非常复杂的公司。其实有时候他们推的东东也不见得怎么样,只不过他们的市场策略倒是非常成功。

真奇怪,为什么没有公司去推lua开发web.


哪里有使用ROR的项目列表?我们可以看到很多使用PHP很成功的大、中、小型网站,但ROR呢?PHP有大量的支持,而ROR呢?大部分都要在摸索中前进。


sevencat 发表于2006-06-28 09:56:00 IP: 203.156.209.*
其实我一直想有一个类似php的appserver出来。或者是cgi的appserver出来(isapi可能算是一个吧),那样可以做更多的优化(池)了。

fastcgi在这方面并不是一个完美的解决方案。

所以当我看ROR的“亮点”的时候,我并不觉得他真的解决了很大问题。


rorer 发表于2006-06-28 11:14:00 IP: 58.24.204.*
我看作者就是属于那种语不惊人不罢休的那种类型,看到什么东西热火了就胡乱泼一盆冷水,有些象当初duduwolf对ajax还一知半解就写了篇ajax的七宗罪一样。
不论php,ror,还是java,python什么的,都只是工具,没有工具是完美的,因此在选择的时候就需要各种权衡,当在某一方面获得利益就必定在另外一方面付出代价,别人的选择未必对自己有效因为不同情况下需要解决的困难不一样。对于程序员或者架构师来说,所需要做的就是如何根据实际情况选择适合自己的工具,而不是人云亦云,更不是一知半解就乱下结论。
对于ror,我使用4个月有余,从开始学习到写出一个完整的web2.0网站只用了一个半月,而且是功能比较复杂的那种——当然还不包括页面的美化。从开发速度来讲,这种优势是其他工具无法比拟的,当然为此我必须付出它的性能无法跟php,java相提并论的代价。但我认为这种代价相比那种速度来说后者更加重要,更加适合我所面临的需要敏捷开发的情况,因此我选择了ror,这并不表明ror就一定比别的好。事实上,在有空闲的时候,在面对其他情况的时候,我完全有可能选择python,php甚至java的某些框架。没有谁对谁错,只有适合的,无知地评判是无聊地。
最后提一句,ror的作者DHH从来也没有想过让ror成为主流,他更希望ror有一种剑走偏锋的感觉,从人家这个层面来看问题,低层面的比较就显得太无聊了。


纯月 发表于2006-06-28 11:28:00 IP: 222.186.123.*
rorer, “我看作者就是属于那种语不惊人不罢休”我可不敢像黄健祥那样说出"XXX滚蛋吧"之类的话。

相反我的观点和你完全一样。ror是可以开发网站,就好像php也可以做unix的shell,甚至有人用PHP开发GUI。

我想任何一项技术是需要有些人泼冷水的,我看不到别人泼,我就来了。

但是我的所有观点都是在我参看了大量国外的使用者的心声后总结得到。

我平时开发任务很重,更不可能,也绝对不会,在项目中使用新的框架。

至于无聊不无聊,我想技术上归讨论,我还是很愿意和G9兄交朋友的。


wd 发表于2006-06-28 17:43:00 IP: 211.97.183.*
支持批评,各种批评
水平高的不需要看别人的批评,因为他内心对任何熟悉的东西都有批评,知道它哪好哪不好,适用哪不适用哪
水平低的只看到到对某某新技术的介绍,而介绍里99%只是陈述或夸奖,看不到它的另一面,
所以,支持批评,各种批评
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录