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