免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

书摘与采访:Rails for .NET Developers

  • 2009-03-09
  • 本文字数:4323 字

    阅读完需:约 14 分钟

随着众多的 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 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-03-09 07:383059
用户头像

发布了 87 篇内容, 共 21.0 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

【永久激活】Netflix mac客户端 兼容M1/M2 打造极致的观影体验!

Rose

奈飞客户端 mac视频播放器 Netflix Mac激活版

Dash for Mac v7.1.6激活版 提升API文档编写效率

Rose

API文档 Mac破解软件 Dash Mac破解版 Dash下载

Java 多线程开发系列 2:创建一个线程

BigBang!

Java多线程

中国电信国际数智化人力领先实践

用友BIP

人力资源 数智化领先实践 中国电信

Archicad 26中文for Mac(BIM建模软件) Archicad26破解详细安装教程

Rose

mac软件下载 建模软件 Archicad 26破解版 Archicad 26 Mac中文版 BIM软件

当生成式AI从梦想走近现实,大语言模型未来会取代人类吗?

格致君的planB

人工智能 AI 大语言模型

向成本要效益!用友BIP助力车企突破内卷、打赢“降本战”

用友BIP

降本增效

一体式Mac系统清理应用 AweCleaner 最新免激活版

胖墩儿不胖y

Mac软件 清理工具 系统清理软件

Android下Linux创建进程的姿势(上)

江湖修行

android Linux 进程

HTML文本编辑器BBEdit for Mac破解版(附注册码)支持M1/M2

Rose

html 代码编辑器 Mac破解软件 BBEdit注册版 BBEdit for Mac破解版

基于Java开发的供应商询价招标采购系统(SRM系统源码)

代码人,代码魂

Java springboot 采购 srm

graphpad prism 10 for mac永久注册码 prism10下载

Rose

mac软件下载 GraphPad Prism 10 数据分析绘图软件 Prism 10 Mac破解

简单专业的照片修复工具 DxO ViewPoint 4免激活中文版

mac大玩家j

Mac软件推荐 图像修复工具 图像校正软件

苹果最新系统:macOS 14 Sonoma 14.1.1正式版

加油,小妞!

macOS 14 Sonoma Macos最新系统

提示找不到某些库文件?

矩视智能

深度学习 机器视觉

Sketch 99 for mac(矢量绘图软件)

展初云

Mac 矢量绘图 Sketch

OpenHarmony社区运营报告(2023年10月)

OpenHarmony开发者

OpenHarmony

针对现状为什么需要对特权账号进行管理

尚思卓越

网络安全 特权账号管理

HarmonyOS NEXT调优工具Smart Perf Host高效使用指南

HarmonyOS开发者

HarmonyOS

智慧燃气:用友BIP资产云如何实现管道资产数智化管理?

用友BIP

资产管理 智慧燃气

直接从 Amazon EC2 控制台模拟竞价型实例集中断的情况

亚马逊云科技 (Amazon Web Services)

Amazon EC2

mac原型设计:Axure RP 10 for Mac中文汉化版包下载

Rose

Axure RP 10 汉化版 Mac原型设计 Axure RP 10 下载

依赖关系指的在Linux操作系统中,如何解决软件依赖关系?

小齐写代码

macos智能图片编辑工具:DxO PhotoLab 6 中文版

加油,小妞!

Raw图像处理软件 DxO PhotoLab 6

站群服务器优势

Geek_f19a80

DxO PhotoLab 7 for mac(专业raw图像处理工具)

展初云

Mac Raw图像处理软件 DxO PhotoLab 7

DxO PureRAW 3 for mac(raw照片智能处理工具)

展初云

Mac DxO PureRAW raw智能照片处理工具

亚马逊云科技加速大语言模型的创新应用

三掌柜

亚马逊云科技

文生图大型实践:揭秘百度搜索AIGC绘画工具的背后故事!

百度Geek说

AIGC 文生图 Ai绘图 企业号11月PK榜 百度搜索场景应用

书摘与采访:Rails for .NET Developers_.NET_Robert Bazinet_InfoQ精选文章