InfoQ

InfoQ

文章

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

书摘与采访:Rails for .NET Developers

作者 Robert Bazinet 译者 王波 发布于 2009年3月9日

领域
语言 & 开发
主题
.NET ,
Web框架 ,
Ruby on Rails ,
Ruby
标签
采访 ,
Rails ,
图书

随着众多的PHP和Java程序员学习Ruby,近年来Ruby on Rails已经有了显著的增长,Ruby on Rails有助于快速创建业务解决方案。这里忽略了一批发现Rails优点的ASP.NET开发人员。他们给世界各地的公司编写C#、VB.NET和ASP.NET应用程序。

许多ASP.NET开发人员开始对Ruby编程语言和Web框架产生兴趣。这些开发人员了解微软以外的技术并发现这些技术更难掌握。他们要如何应对呢?InfoQ有幸采访了这样的两位开发者Jeff Cohen和Brian Eng,他们像众多微软开发者那样选择了Ruby on Rails并学习如何使用它的Web框架。

Jeff和Brian是Softies on Rails博客的维护人员,该站点记录了从微软技术转移到Ruby on Rails的历程。Jeff和Brian刚刚出版了《Rails for .NET Developers》一书,由Pragmatic Programmers发行。Pragmatic Programmers出版社给InfoQ提供了样章——《第二章 转移到Ruby》。

InfoQ借此机会采访了Jeff和Brian,谈谈他们从.NET转移到Rails的历程。

Robert Bazinet (RB) ::首先,自我介绍一下好吗?

Jeff Cohen (JC) :我一次性通过了MCSD考试,有着15年微软技术开发经验。主要使用C++创建MFC/ATL应用程序,后来编写C#桌面应用程序。我玩过几天的ASP和ASP.NET,但总的来说,更喜欢编写桌面和移动解决方案。就在2005年的时候,我发现了Rails,并完全使用Rails进行了为期1年的开发。现在我是Leapfrog Online的高级软件工程师,并在2008年中期成立了Purple工作室。

Brian Eng (BE) :我也是MCSD,并使用经典的ASP和ASP.NET进行了很多Web开发。2004年的时候,Jeff和我在一家大型零售商中一起开发触摸屏和平板PC 应用程序,同年Rails正式发布。与此同时,我尝试开始编写应用程序,并觉得使用Rails来重新创建以往用ASP.NET所创建的程序。那段经验也转换成实际的产品,副业变成了我现在的公司Bluebuzzard,一直运营至今。

RB:什么原因促使你从微软开发技术转移到Ruby on Rails呢?

BE:在过去的10年职业生涯中,我成功的使用着微软的技术,但基于某种原因,我并不喜欢每天使用的工具。有一天,我发现芝加哥的一些公司用来管理小型项目的工具Basecamp非常棒。我曾经和同事谈起过,他说“你知道吗?它是用Ruby写的”。对于我来说这实在太可笑了,所以我用Google搜索了一下,发现Rails并点击相关链接。

JC:我知道Ruby是一种脚本语言,并在2005年开始学习Rails。我下载了Windows版本的One-Click安装程序,并用Rails创建简单地 Hello World应用程序。我发现它的MVC结构比ASP.NET页面模型更加直观,并立刻发现用Rails创建网站非常有趣。相对于在Rails应用程序编写优美的Ruby代码,快速地编写C# ASP.NET代码就像在泥泞中蹒跚而行,从那时起我就被它深深的吸引。

RB:你们两人所面对的最大挑战是什么呢?

JC:使用Ruby真正的把钱用到了刀刃上,它是智能TDD。有了动态解释语言,就无需编译步骤来检查错误,可以直接进入单元测试。这非常的合适我。在使用Rails之前,我已经坚持敏捷开发多年。

在语言方面,有一些编程概念.NET中没有涉及过。事后意识到自己有点呆,但我不会钻牛角尖。尽管C#已经添加了yield语句,我从来没有使用过,如果要回忆的话它只适用于迭代。我阅读过一些关于C#匿名方法的.NET beta文档,与此同时我还是在学习Ruby。有趣的是,直到我理解了Ruby的程序块之后,回过头来才真正理解了C#匿名方法的潜在意义。也正是通过 Ruby社区,我开始理解延拓和函数式编程的概念。Ruby并没有同样的概念,但是使用Ruby的人们也能熟练使用其他语言,比如Smalltalk和 Lisp,两者都影响了Ruby语言的发展。懂得其他语言的前景和实现并不比自己使用的“主要”语言容易,但是我发现这更使得我深深感激周围的大型软件社区。所以有了新的挑战:要成为全面的软件开发人员,不能只会编写C#或者Ruby。

BE:当然,对于任何一个开发人员要从静态类型的编程语言转移到动态类型,都要费一番功夫。一旦了解学习Rails的动机,我们就会有冲动去使用Ruby方式代替自己熟悉的C#。这也经常意味着会过度思考问题及随之而来的过分复杂的解决方案。

RB:为什么.NET开发人员会对Ruby on Rails感兴趣呢?

BE:我曾学习Rails并在业余项目中使用它,与此同时我从事着2年朝九晚五的.NET开发。我惊讶于它对我思考.NET代码的影响。Rails使得我成为更好的开发人员,而且也非常适合通过它来学习Ruby。再者,作为技术人员,我们很容易会被新巧的事物所吸引。

JC:在Linux或者Mac平台如果仅有一个星期的时间,我希望所有的.NET开发人员都有机会用Rails开发简单的应用程序,而非Visual Studio。我觉得他们应该了解为什么Rails如此注目;为什么使用Linux和Mac并非听起来那么神秘;为什么作为一个优秀的软件开发人员,你并不总需要智能提示。再者,不管你喜欢与否,Ruby都会以IronRuby的方式成为Visual Studio的一部分。John Lam的团队正做着令人惊讶的事情,我们期待着它早日完成。也许ASP.NET MVC + IronRuby会成为大多.NET开发人员尝试的方式,就像我们使用Rails那样。

RB:若有的话,.NET社区会采用Ruby on Rails么?以及Ruby on Rails成功在哪里?

BE:从发布Rails开始,我们已经看到微软及其社区的变化。当然,微软已经包含并致力于MVC、REST和动态语言。更重要的是,我们看到许多.NET开发人员更关注他们的工作并懂得使用最好的工具来完成工作,并不仅仅是使用微软提供的工具。敏捷开发已经在.NET社区开展。独立的.NET开发人员借鉴 Rails的灵感开发了许多工具,就像Castle Project/MonoRail and Subsonic,对于.NET开发者社区来说都是非常有意义的事情。

RB:.NET开发人员如何开始学习Ruby on Rails?

JC:你可以读很多资料;要克服尝试新事物的恐惧,你需要做的事情就是尝试。下载Windows版本的免费One-Click安装程序,启动最喜欢的文本编辑器,开始吧!当Rails出现时,我第一次疯狂的举动就是使用记事本创建第一个“Hello World” Rails应用程序。输入变量名,迟疑了一下等待智能感知,但没有出现。听起来很有趣,但事实上这是我必须克服的困难。几天之后,我发现我不再需要智能感知了。记得Brain,我们一起尝试Rails,对如何基于某些条件来查找字符串中的某些元素,完全没有主意。所以我们只是猜测该方法为.select,却成功了!我们很快发现很多Ruby方法就像那样。所以.NET开发人员应该考虑尝试一下,不应该过早放弃,它用起来比想像中简单。

RB:对于正在学习Ruby on Rails的.NET开发人员,你对他们的建议是什么呢?

BE:以Jeff而言,我要补充一点,记住最重要的是不要害怕。从2004年起,到现在Rails已经经历了一段发展历程,而且在Rails开发社区方面的持续改变难以跟上。同时,理解和熟悉Java和PHP所带来的开源文化,可能会使得.NET开发人员望而却步。你不需要低价抵掉自己PC来购买Mac,至少今天不用。只要开始学习并进行尝试。

RB:如何看待IronRuby的发展来帮助.NET开发人员转移到Ruby on Rails?你觉得IronRuby是.NET将来实现Ruby on Rails的方式吗?

BE:IronRuby是极其重要的项目,因为它表示微软致力于发展并支持开源技术和动态语言。再者,打开Visual Studio、启动ASP.NET MVC项目并用Ruby或者Python来编写所有的事情,那是使用动态语言的重要一步。当.NET Web开发变得更“Rails风格”,可使得Rails社区能持续革新并保持领先,对于所有人来说都是好事。

RB:你认为.NET开发人员如何处理Rails在自身实现中的固有方法呢?也就是说,在.NET你有空白解决方案,微软让你随心所欲的做事情,尽管这种做法并不妥当。

JC:Rails固有的方式只适用于由数据库支持的Web应用程序。并非空白解决方案。所以,如果你编写数据库支持的Web应用程序,就会喜欢上它。站在巨人的肩上:简单易用的ORM(ActiveRecord)、内置的MVC架构、能创建最佳实践代码的代码生成器、未知数据库的架构迁移和内置的单元测试框架。你无需重新创建多个工具。大部分时间尽可能使用GOF模式就行了,然后就会套用Rails。紧粘着ASP.NET,只能这么说了。

RB:你如何看待.NET社区采纳Ruby on Rails后的长期发展呢?

BE:尝试使用Rails的.NET开发人员持续增长。大部分的开发人员有着和我们类似的经验;他们一边进行朝九晚五的.NET工作,一边在晚上和周末花时间进行业余项目的开发或者筹划下一件大事。如果你是这样,那么正好尝试Rails。你可以很快完成大部分的项目,同时学习新的知识。最终,你也许会放弃 Rails,并重新使用ASP.NET或者ASP.NET MVC。但是这种经验保证会使你成为更好的开发人员。

RB:微软已经使用称为ASP.NET MVC的自己的MVC实现来反击Ruby on Rails。你是怎么看待它和Rails之间的比较的?Rails社区应该关注ASP.NET MVC模式吗?

BE:如果有的话,已经证明Rails做对了。使用MVC/REST模式并完全控制页面的标记,对于我来说,总是觉得这是正确的。微软现在给予开发人员选择的权利。最终,对于每个人都是好事,因为它会使得工具更加完善,不管你喜欢那个。

RB:你写这本书的动机是什么呢?

JC:这本书是我们对两个本质理念交流的尝试,以及从.NET转移到Rails过程的介绍。首先,软件工程应该是充满乐趣的。无趣意味着你正使用玩具或者无价值的工具。我确实认为它是件令人高兴的事,实质是你是否享受着所从事的工作。其次,懂多种开发技术的任何人都可以快速掌握Rails。我们假设一个人有相当好的.NET编程知识,但对Ruby or Rail一无所知。那么这是横向转型的最好方式。我们编写本书就像写自己的博客那样:对于这个主题不了解的人,采用真实而非令人生畏的方式,但却有对于日常工作有用的主题。从开始,这个博客的使命就是为那些想尝试Rails的人扫清障碍,我们希望这本书确实起到这个作用。

RB:.NET开发人员熟悉Ruby on Rails开发的前5名资源链接有那些呢?

RB:谢谢Jeff和Brian接受采访。

要获取从.NET转移到Ruby on Rails的更多信息,请登录网站Softies on Rails,也可以通过该站点与Jeff和Brian联系。


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

Ruby可以尝试一下 发表人 yu ryan 发表于
rails 的思想的确很棒 发表人 Huang Joe 发表于
  1. 返回顶部

    Ruby可以尝试一下

    发表人 yu ryan

    可以尝试一下

  2. 返回顶部

    rails 的思想的确很棒

    发表人 Huang Joe

    rails 的思想的确很棒, 无论是ruby 还是 groovy
    它减少配置,易于测试,我现在已经很难接受像struts,spring,这些mvc框架了,呵呵

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。