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.<p>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.<p>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?
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...<p>Pros:<p>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)<p>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<p>Cons:<p>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<p>2. (Related to Pros #1) Using Microsoft technology like WCF creates performance woes. I would question using it on a really high performance site<p>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<p>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)<p>I don't know if that helps but those are my initial thoughts.
Here's a high-profile ASP.NET MVC site: <a href="http://stackoverflow.com" rel="nofollow">http://stackoverflow.com</a><p>How about you ask them here: <a href="http://meta.stackoverflow.com/" rel="nofollow">http://meta.stackoverflow.com/</a>
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.<p>This is important if you have a plan to build front end to legacy database.
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.<p>Personally it's usually other factors that make the decision for me.
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?