你是一个.Net程序员。
你已经使用ASP.NET开发了很多的Web Application。
你已经花了大量的时间和精力来研究和利用ASP.NET的事件驱动模型和控件生命周期,并利用这些特性实现想要的功能。
你在你的开发中使用了Presentation Modal和Modal View Presenter Modal来给你的应用程序分层,使程序具有更好的可维护性和可测试性。
在你眼里,Ruby On Rails只不过又是一种吹嘘的天花乱坠的新技术而已,在它获得一定是业界的认可和尊重之前,你无需关心他
欢迎来到我的地盘,如果你还能坚持读这篇文章的话,那么你已经赢得了我的钦佩,因为你渴望看到为什么我认为之前我用Asp.Net技术构建的网站,如果采用Ruby On Rails技术的话,需要的时间和代码行数将更少。
无可否认,.Net是一种伟大的技术。它使我能够持续不断的给我的客户提供业务价值。虽然如此,但是我始终提醒我自己,还有很多其它的方法和技术可以解决问题,只不过有的好一点,有的稍差一点而已。坚定的忠实一门技术,将使我在做决定的时候无意识的存在某种偏见,而在偏见之上的决定不利于我为我的客户提供有价值的服务。比如,懂得一门动态脚本语言,如Ruby,将使我能够在更短的时间内写出一个 batch/Shell 自动化脚本。
那么,为什么不试试呢?
以下是我作为一个.NET程序员在学习Ruby当中,发现的一些新的Paradigm,希望对大家有所帮助( Hope you enjoy)。
Do not compile.
Ruby不需要编译,所以的代码都动态执行。有人认识,编译可以防止一些因为粗心和造成的代码逻辑错误。但是也许你该看看如测试驱动开发,代码集成(code integration),单元测试和依赖注入是如何帮助你提高你的代码质量和可适应性的。几秒钟内的编译并不能保证你代码的正确性。
Dynamically enhance the behavior of a class - without a Decorator
使用Decorator模式是在强类型语言中实现这一功能的一种方法。在Ruby中,有好多种方法能够实现这一功能,以为这是Ruby语言的特性之一。你甚至可以在运行时通过代码为一个类添加一个方法。
Slim down your code base 10-20% by stripping off all type declarations and interface declarations
Ruby是一种动态语言,你不需要在使用一个变量之前定义它,或者让你的方法有良好的签名(signature)定义。这意味着你的代码变得苗条了,但是调试最终错误就变得更加困难了,是吗?不是的,如果你认同单元测试,并且有良好的OOD概念的,你的类是短小精悍的,你的方法是简短的并且功能明确的,而且良好的执行了单元测试的话,调试和追踪错误其实是相当的简单的。
Ajax it in no time
Ruby On Rails内置了对script.aculo.us的支持。在很多情况下,这等同于在ASP.NET中你拖拉一个控件到页面上,然后在Code-Behind中(在Rails中的Controller)中服务器端处理请求。
With Rails, you don't need an O/R Mapper
通过在命名数据库的Tables,Columns和Modal objects时,遵守一些命名规范,你就可以忘记O/R Mapping。Ruby On Rails将为你完成这些。最简单的情形就是,在你modal中添加一个field,在html页面中添加一个textfield,在数据库表中添加这个field, 这就是你所需要做的。剩下的Rails将会帮你完成。
Using Ruby script to build/deploy/release is better than using Nant
在Ruby On Rails的开发中,标准的Build工具是Rake。而Rake使用Ruby,这就是说你使用Ruby你构建你的Build和deploy脚本。而Ruby在字符串处理,文件和目录创建以及正则表达式处理上是非常的强大。回想一下在你使用NAnt时,如何执行.sql文件,如何Copy文件,以及如何一个个的执行。如果你已经厌烦了如此annoying的处理方式的话,那么就来使用Rake吧。
No pain no gain
学习一种新的技术不是一个轻松的旅程。首先,较之于采用你所熟悉的技术,采用Ruby来找到几个解决方案,开始时将花费更多的时间。这是最痛苦的经历。但是,之后你就会为自己采用不同的技术解决不同的问题而感到高兴。
原文地址:http://www.infoq.com/articles/Netter-on-Rails
译者注:在微软最新的ASP.NET MVC Framework中,借鉴了很多Ruby on Rails的思想和方法。