惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
MyScale Blog
MyScale Blog
D
Docker
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
C
Check Point Blog
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
Engineering at Meta
Engineering at Meta
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Hugging Face - Blog
Hugging Face - Blog
Scott Helme
Scott Helme
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
I
Intezer
P
Proofpoint News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Simon Willison's Weblog
Simon Willison's Weblog
阮一峰的网络日志
阮一峰的网络日志
Project Zero
Project Zero
人人都是产品经理
人人都是产品经理
A
About on SuperTechFans
AWS News Blog
AWS News Blog
T
Tor Project blog
Know Your Adversary
Know Your Adversary
B
Blog
美团技术团队
A
Arctic Wolf
IT之家
IT之家
G
GRAHAM CLULEY
P
Privacy International News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cisco Blogs
博客园 - 【当耐特】
V
Visual Studio Blog
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
腾讯CDC

博客园 - Jun1st

Application之间共享Master Page ASP.NET AJAX 4的Client-Side Template和DataView ASP.NET AJAX 4的Client-Side Template和DataView 体验ASP.NET4之ClientID 体验ASP.NET 4之URL Routing 使用Extension Methods来使IDataReader更加方便 Custom WCF Configuration File USE HttpRuntime.Cache OVER HttpContext.Current.Cache Make Asynchronous Calls from Page IIS and VS Embedded Local Web Server Integrate jQuery with ASP.NET Data Controls Tech-Ed 2008 上海 ASP.NET MVC的分页和导航 LINQ and Pipeline Pattern ASP.NET MVC之AJAX Asp.Net MVC---Walkthrough Asp.Net MVC 入门篇——Overview Asp.Net 2.0之SqlCacheDependency Security Basics and ASP.NET Support(翻译)
Why Would a .Net Programmer Learn Ruby On Rails(翻译)
Jun1st · 2008-07-09 · via 博客园 - Jun1st

你是一个.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的思想和方法。