From: John Lam Date: 2005-06-29T10:07:15+09:00 Subject: Re: ASP.NET vs Ruby on Rails I saw a link to Christian's post on the Rails blog tonight so I thought I'd chime in with a few additional points. I've been building ASP.NET apps for a long time. I've taught probably several thousand developers over the years how to write web applications using ASP.NET. I used to manage DevelopMentor and Wintellect's web curriculum back in the day. So here it is: ASP.NET started out with a bad assumption and painted themselves into a corner because of it. ScottGu & co are super-smart guys, but when you start out with a bad assumption it's really hard to overcome it. What was the bad assumption? That a forms-based "control" model that was so successful in creating rich client apps a'la VB would work on the web. That model led to hacks like ViewState (ASP.NET's mechanism for storing state on the client via a hidden HTML form field). Abuse of ViewState prevents apps from working well in the *Internet* where things like deep linking are commonplace. That model keeps many, many developers and program managers employed over at Developer Division building the tooling that is necessary to keep a control-based model approachable to your typical web developer in IT organizations around the world. My team has built a really cool Rails application that we hope to unveil to the world sometime soon. Total time to build: about 3 developer days. It's part of a much bigger project that is built on top of a lot of ASMX / Web Services plumbing but I have to say that the team enjoyed building the Rails code much more than the other stuff :) So while we're not all that big on Rails experience, we've really liked what we've seen so far. In particular, the AJAX support really makes for a compelling user experience. And the front-controller model rocks so much harder than the page controller model in ASP.NET. Our build / deployment infrastructure is now Ruby / Rake based.so there's other Ruby code in the infrastructure as well. We've punted NAnt out of our infrastructure and don't miss it one bit. Now, a few things in defense of the .NET platform: 1) I18N and Unicode support. These are *huge* if they matter to you. This support is baked into the platform at a very fundamental level and is very well thought out. 2) Debugging support. This too is extremely well supported by the tool set. 3) SQL Express - if you want a free database there's nothing out there that comes even close to this (although you'll have to pony up for a Win2K3 Web Server Edition license so the overall package still costs you money so it will play a bit of havoc with scale-out economics). 4) Performance. The CLR generates very fast executable code, and a lot of attention has been focused on how to get apps to run fast on top of IIS 6, which despite its configuration faults is a very secure and very fast web server. Notice that none of these points are directly tied to ASP.NET, and that's intentional. I think that it's possible to write high-performance web applications using ASP.NET, but it's so much harder than it looks. With Rails it's a lot harder to write a bad application because there's much more guidance than "throw a few controls onto a page". Cheers, -John Lam http://www.iunknown.com