Monorail vs. Rails doesn’t seem like much of an interesting question. In our work recently at Dovetail, we found that a much more interesting question is something like, “Should we be building forms-over-data web apps on .NET?”
If I have to build a web app on .NET, I’d use Monorail… but I’m beginning to see the use of .NET for most web apps along the lines of the proverbial use of a bazooka to swat mosquitoes. I can see a possible (or likely) future, where I will not ordinarily choose to use .NET to build a web app unless I was forced to do so… assuming that .NET isn’t significantly overhauled at some point.
If you’ve gotta build a web app on .NET, then Monorail and the Castle Project is could very well be your project’s saving grace, and you should really consider trying it out before you build another web app on “raw” ASP .NET and webforms.
From my perspective now, Monorail is to ASP .NET as ReSharper is to Visual Studio. Without Monorail, ASP .NET seems a bit primitive, incomplete, and not just a little odd considering how hard ASP .NET as a web app framework tries to pretend that it’s not a framework for building apps on the web. Before VB, folks were built business apps using C++. If ASP .NET remains fixated on its current course, I wouldn’t be surprised if ASP .NET will be to Rails as C++ became to VB. My own experience of Rails points to .NET being overkill for most of what we need to build most web apps.
Here’s a question that I’ve been floating in my community lately: “What assumptions lead you to believe that .NET is the right framework to build web apps on?” One of the more common answers can be boiled down to something like, “Because we made a lot architectural decisions up front that we can’t correct now, and because of this the mosquitoes we’re swatting are now as big as elephants… which are more effectively swatted with a bazooka.”
So, if you’re building web apps on .NET, what leads you to assume that you shouldn’t be building on Monorail? And even more fundamentally, if you’re building web apps on .NET, what leads you to assume that you should be building on .NET?
There are reasons for either of the three choices, but we technologists often fail to actually make a choice as much as we choose not to choose for not being even aware of our choices. How do you know that you’re using the best, most productive tools?