代码改变世界

吹响反击Ruby On Rails的号角

2005-10-14 11:27 FantasySoft 阅读(...) 评论(...) 编辑 收藏

        最近Ruby On Rails(ROR)的火热程度真的让人很惊讶,九月份的《程序员》也用了大量的篇幅来介绍这个新兴的Web Application快速开发框架。对新鲜东西向来都很好奇的我却对ROR提不起兴趣,也许是因为Ruby由日本人创造的缘故吧,我对Ruby一直有着抗拒感,尽管ROR是丹麦的小伙子David开发的。
        抗拒归抗拒,ROR的成功着实是一种促使我去思考的动力。最简单的,Ruby与Python有着无比紧密的联系,那么在Python下有没有类似
ROR的开发框架呢?答案是有,而且还非常的多!大家可以从两个site中找到很多很多的选择:WebProgrammingWeb Development with Python。在这让人眼花缭乱的框架中,Zope是最为有名的,但是利用它来做开发却不见得高效,而且Zope所充当的角色更像是一个Application Server,与ROR所关注的范畴并不是很吻合;接下来就是CherryPyKarrigellTurboGearsDjango了。对于CherryPy的了解其实是来源于TurboGears,因为TurboGears是Python世界中直接与ROR对话的框架,它是ROR的竞争者,因此最早进入了我的视野,大家可以看到ROR与TurboGears同时出现在了这条新闻中:TurboGears: Python on Rails? 。它最大的特点是并没有reinvent the wheel,而是充分利用了现有的优秀框架,提供了从前端至后端的解决方案,而CherryPy正是TurboGears的组成部分之一。Django也是ROR的竞争者,不过它还处于beta阶段,官方版本至今还没有发布,但是它已经受到了广泛重视,而国内的Python大牛limodou更看好Django,认为它会比TurboGears做得更好。推荐Karrigell也是受到了limodou的影响,他对Karrigell也是宠爱有加,大家可以浏览他的blog,里面有一篇文章说明了他选择Karrigell的理由。
        说了半天,面对那么多的选择,大家是不是有些厌烦了呢?是的,我一开始见到这样的一个列表的时候,我也有点蒙了。我开始明白ROR的
成功或许不仅因为它本身的强大,而是众人拾柴火焰高啊!Web Programming Framework在Python世界里所面临的困窘丝毫不亚于纷扰的J2EE世界。由于对这些框架了解还不多,我无法为大家作出Professional的推荐,只能够说说自己的想法了。
        在这众多框架中,我真正尝试过的只有CherryPy,它真的很小巧,而功能一点都不差。小小一百多K的体积竟然还包含了一个Http S
erver,所完成的应用程序可以放到一个.py文件中,部署起来会非常的方便,如果仅仅是开发一个小型网站,CherryPy是一个不错的选择。大家可以从IBM网站上的CherryPy for CGI programmers这篇文章中获得一些对CherryPy的感性认识。从中你会很惊喜的发现,代码量竟然是如此之少!由于CherryPy简单而不失强大,更重要的,它是TurboGears的重要组成部分,因此从CherryPy开始了解Python的Web Programming确实可以作为千里之行的第一步啊!
        在利用这些框架来开发Web应用程序,你会发现Template是一个十分重要概念。Template就是MVC中的View一样,定义了应用程序的表现
层。因此要开发一个实用的Web应用程序,成熟易用的Template系统是必不可少的,在TurboGears中,Kid就是这样的一个Template System。同时,Karrigell框架中Template系统对中文的支持是最好的,更加重要的是你可以从limodou的blog上找到丰富的参考资料。因此,你需要做更规模稍大一点的网站的时候,不妨考虑一下Karrigell了。BTW:limodou兄是一个热心的人,呵呵~~~
        以上四个列举出来的框架就差Django还没有细说了,对于它我还真的不知道该说些什么了,大家还是看看Python wiki上对它的介绍吧。而且
,limodou兄也是对它倍加推崇的。最后不得不提一下一种现在还没有出现也许在不久的将来会出现的Web开发方式——利用IronPython来开发ASP.NET!这种方式会在什么时候出现,它的影响将会有多大我们不得而知。但是这确实值得期待,我相信这样的开发方式会提高ASP.NET的开发效率。
        以前学习Python还是停留在一个纯粹的学习阶段,而现在有了ROR的刺激,我想对于Python的关注也将转移到Web Programming上了。我相信这样的一个学习实践过程是很有价值的,毕竟我学习.NET,学习J2EE,学习Portal,都是围绕着Web Programming。偶是一个花心的人,喜欢去了解很多的东西,虽然都不深刻。其实,了解那么多就是为了能够拓宽自己的思维,从不同的开发方式中为各种问题寻求更好的solution,也就是T型发展的一个面了,至于某一点的深入就放到以后再说吧!吾好读书,不求甚解也,呵呵~~~
        让我们都来关注Python在Web Programming的发展吧!欢迎各位与我一起讨论Web Programming with Python!

        [后记] 这只是一篇介绍性的文字,以“吹响反击Ruby On Rails的号角”似乎有点名不副其实了。虽然我在文中提到我对Ruby有些抗拒,但是我也深信对于技术不该有偏见。因此,我也会关注ROR的发展,毕竟它获得了广大开发人员的认可,忽视它可是不明智的!当然,我还是希望Python能够在这场竞争中迎头赶上,最终胜出。:)