InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

The Future of MonoRail in the Wake of MS MVC

Posted by Hartmut Wilms on Nov 20, 2007

Sections
Development
Topics
Web Frameworks ,
.NET
Tags
Rails ,
MVC

Hamilton Verissimo, the founder of the Castle Project, has discussed means of integrating Castle/MonoRail into MS MVC as well as real-world requirements with the MS MVC team.

During the last weak Hamilton informed the MS MVC team "of all complex and even counter intuitive requirements that [the Castle team] got from the real world apps and how/if the MS MVC would be able to handle them". He was also able to develop some integration samples as a proof-of-concept for MS MVC's extensibility and pluggability:

I was able to:

  • Create a initial IParameterBinder support
  • Create a NVelocity View Factory
  • Get a REST support working (both for url semantics and rendering based on the accept header)
  • Get it working with Castle’s DataBinder and ActiveRecordDataBinder

Things that I wanted but weren’t able to do:

  • Reuse MonoRail’s helpers: mostly because they are too tightly coupled with MonoRail
  • Create a Brail View Factory: same reason
  • Create a selector for view factories: impacts on testability

Hamilton is very pleased with the MS MVC Framework approach, but he advises the community not to expect too much of the CTP bits that have been announced for the end of the year:

That’s because what you’re going to see is a very small framework, with a lot to be done to be useful. As they say, the CTP is mainly for feedback. I’m sure Milestone 2 would be something great, though.

Concerning the future of Castle MonoRail Hamilton says that we'll have to wait until the final release and its feature set:

I was really adamant that they should try to support all things that MonoRail support, but I’m not sure they are going for that. MonoRail 2.0 is pending their implementation. If the final MS MVC rocks, and provides so many things, I’d vote for forget the MR 2. If the final MS MVC has clearly something lacking, MR 2 could reuse the infrastructure and provide some nice extensions.

Aaron Jensen, Director of Engineering at Eleutian Technology, shares Hamilton's thoughts and suggests:

What I'd like to see is MonoRail become more like Rails. I want to see something built on top of MS MVC that even more-so favors Convention over Configuration--including but not limited to generators and such. I want it to take it to the next level and be exactly what the community wants for a C# web platform.

Aaron as well as Adam Esterline and others have pointed out the deficient routing capabilities of MonoRail:

Routing - RoR and MS MVC treat Routing as a first class citizen. Routing in MonoRail is an after thought and it shows.

Why is first class Routing a big deal?
  • DRY - Tight integration between the routing engine and URL generation allows URLs to refactored easily and safely.
  • Testing - Testing routes, in MonoRail, requires an end-to-end test. If routes were first class objects, then routes could be tested in isolation.

The routing issue has already been addressed by Hamilton, who came up with a new MonoRail routing engine. The "bleeding-edge" code is on the MonoRail SVN.

Ben Scheirman refers to the MS technology vs. OSS technology issue and concludes that "System.Web.MVC will reach an audience that MonoRail doesn’t: The corporate giant who already swallowed the pill and will do anything that Microsoft pushes, good or bad. And a lot of consultants work firmly in this space".

No comments

Watch Thread Reply

Educational Content

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.