Strong opinions, weakly held

The MVC penalty?

Here’s what Miguel de Icaza has to say about MVC architecture for Web applications:

The development model in ASP.NET is lighter than the development model with J2EE. J2EE has taken this approach of Model-View-Controller, which is a beautiful thing from an academic perspective, but it does add a burden. At Ximian we consulted with a number of software companies. They said, “We can develop applications 20 to 25% faster than with ASP.NET than we can with J2EE.” Developers like ASP.NET because you don’t have these three layers of Model-View-Controller. Instead there is the presentation layer, and the model is the database. You don’t have this intermediate layer.

I take it as a positive that J2EE is inextricably linked with MVC architecture. I think it’s the biggest win in Web development since I started writing rudimentary CGI applications 10 years ago. Indeed, Ruby on Rails is the first really credible approach to building an MVC framework in a dynamic language (that I am aware of, anyway).

What I find interesting is that Miguel sees MVC as a burden rather than as a benefit. I think that there’s an inflection point. On one side, MVC lengthens the development cycle, and on the other, it shortens it. In my experience, very few applications ever stay on the side of the inflection point where MVC is a burden. They may start out that way, but as feature requests start coming in, a layered approach really makes things easier, especially when it comes to testing.


  1. Interesting. I have no experience with J2EE, but at my job I’m in the midst of a relatively large web application rewrite using ASP.NET. It’s a nice web development environment–a huge improvement over PHP and ASP style coding–but compared to my Rails MVC experience, I can’t say I think the looser development model is necessarily a plus. For one-off projects, maybe. For large applications you have to maintain over time, it’s way too easy to be sloppy.

  2. rc3.org: The MVC penalty?

    rc3.org: The MVC penalty? I’m with Rafe on this one. Faster does not equate to better in all cases. I’m neither a J2EE or ASP.NET developer, but have played around with Ruby on Rails a little and plan on starting a deep dive into it soo…

  3. Have you given Django (http://www.djangoproject.com/) a shot yet? It’s MVC-ish, in that it borrows ideas good ideas from MVC but doesn’t adhere to it too strictly.

  4. I’m interested in Django but haven’t looked at it yet, because I’m not much of a Python programmer. I imagine it doesn’t need to be MVC everywhere because it’s designed to work for content management.

    (MVC is appropriate for the editing interface of a CMS, but obviously not for the publishing side.)

  5. “Indeed, Ruby on Rails is the first really credible approach to building an MVC framework in a dynamic language (that I am aware of, anyway).”

    WebObjects was, ten (10) years ago, and still is today, a really credible MVC-oriented web framework, and has used dynamic languages in the past (Objective-C, and WebScript, which was an interpreted language with an Obj-C-style syntax).

    Since 1995 when WebObjects came out, everyone else has been trying to do MVC properly, and over the years things have been inching closer and closer but (Jim points at WebObjects emphatically) it’s been there since the beginning.

    It’s just a shame it’s not open source so the development community at large can’t learn from its design. ASP.net, JSF and Tapestry have inched closer and closer, from one angle or another, but still nothing touches it, especially from all sides.

    J2EE gives MVC a bad name. It’s garbage.

  6. Ah, I didn’t realize WebObjects was MVC as well. ^Too bad about the Objective-C.^

  7. Having used Catalyst (http://dev.catalyst.perl.org/) and being a ASP/.NET person, I can’t understand how anyone thinks that MVC is a burden or that ASP.NET is so wonderful. Try seperating your request URI from your page names sometime in .NET and tell me how wonderful it really is. Don’t get me started on PostBacks.

    I agree with Rafe; maybe it’s just that J2EE blows. Lord knows things like Catalyst, Rails and Django are way ahead of them in terms of easy of development and a slim coding product ratio.

Leave a Reply

Your email address will not be published.


© 2020 rc3.org

Theme by Anders NorenUp ↑