Ask HN: Has anyone chosen ASP.NET MVC 2 over Rails for their web app

16 points by terrellm ↗ HN
ASP.NET MVC 2 just came out a few months back and Rails 3 is coming soon so I thought it would be a good time to revisit this topic.

I enjoy working in Rails, but I won't be doing the majority of the coding on our next web app. Therefore, the enjoyment factor doesn't matter as much as the business aspect and particularly how long the code will last before having to go through a major revision.

Has anyone chosen to develop a web app in ASP.NET MVC 2 instead of Rails? If so, do you feel it was the right decision after having gone through the process?

13 comments

[ 2.9 ms ] story [ 43.1 ms ] thread
I considered it, and although I love F# I still went with rails because of a lack of sass. I even considered porting sass to F# like nhaml.
Question related to this topic: If one were to use ASP.NET MVC 2, would one have to use Microsoft's development tools and Microsoft's servers, or are there viable open source alternatives?
You don't have to use their dev tools but I am not sure why you would not want to. You get tons out of the box with Visual Studio Express...and its free. You are also free to use the command line to compile your apps, but again I am not sure why you would want to.
Arguing "and it's free" to a community of open source enthusiasts won't likely change any minds.
It's a valid and worthwhile point to make. Outside of the Microsoft development community, it's very common for people to assume you must buy an expensive Microsoft product to develop on the platform (maybe because that was true at one point).

Anyone who spends much time talking about Microsoft development outside the MS community develops that preemptive "and it's free" reflex quickly.

Without plugin support Visual Studio is good as dead to me. I have several plugins which I consider essential, and I wouldn't put up with developing with a purposely crippled tool.
Are you talking specifically about the Express editions? Visual Studio has had plugin support for awhile. Resharper comes to mind immediately, among others.
It would be an uphill battle to veer from the Microsoft stack and tools, if you're doing an ASP.NET site.
I have worked in MVC 2 and while I feel it was the right decision based my skillset and the existing code base in the company, I envy the relative maturity and stability of the Rails framework. The fact that there is a "Rails Way" is good.

Personally it's usually other factors that make the decision for me.

I haven't developed a production app with MVC 2 yet but I've tested it for use in my organization and I've played around with RoR. Given that experience I'd put forth the following points...

Pros:

1. Despite what RoR fans claim I think you can get things done faster in ASP.NET MVC 2 (if you use Visual Studio). All the usability enhancements combined with technology like WCF simply help you get things done faster (though there's a down side to this advantage in the cons)

2. On the above note I still think C# is a vastly superior language especially now that it's essentially "borrowed" the best parts of Python

Cons:

1. The main reason to go with a MVC framework is ease of testing and the RoR community is far more robust and hence offers far more testing options

2. (Related to Pros #1) Using Microsoft technology like WCF creates performance woes. I would question using it on a really high performance site

3. You really need to buy Microsoft servers. I haven't even tested MVC 2 on Mono but MVC 1 was spotty and not officially supported

4. Support is minimal on the Internet. Again this boils down to there being far, far more Ruby developers (Let's face it ASP.NET MVC is a subset of the already smaller ASP.NET developer community)

I don't know if that helps but those are my initial thoughts.

ASP.NET MVC skips the whole ORM part and let programmers deal with the issue however they like. I find this refreshing compared to Rails 2 which enforces ActiveRecord. I hear Rails 3 decouples ActiveRecord but I haven't seen it in action.

This is important if you have a plan to build front end to legacy database.