If only I were

Building Great Software

Who and What is ASP.NET MVC for?

with 3 comments

Michael Neel wrote today about what a good definition is for ASP.NET MVC.

I have to admit that many of my descriptions of ASP.NET MVC have been tied to deficiencies and frustrations in the current ASP.NET Webforms implementation. It is time to start talking less about what it isn’t and to start talking more about what it is.

Michael also points out that it is not likely people will use ASP.NET MVC just so they can use the MVC pattern, since you could come pretty close to MVC with some extra work in ASP.NET Webforms.

The main point of the post was to figure out a good definition of ASP.NET MVC that doesn’t rely on problems in Webforms. And here is where I don’t think he captured what ASP.NET MVC is about. Michael ends up with this definition

“ASP.NET MVC is the evolution of Classic ASP, adding an easier separation of concerns while not using an event based model like WebForms.”

First off, I used Classic ASP successfully for several years, but I don’t think there is enough in common to invoke Classic ASP in this definition. What we typed in .asp pages looked like what you make with .aspx pages in the default view engine, but beyond that I can’t find much similarity.

Second, he ends up counter balancing ASP.NET MVC against the event model. I’m thrilled that most of the event model has gone away with MVC, but isn’t this part of the definition implying that there is a problem with the event model in ASP.NET Webforms? So I think to define what value a company would get from ASP.NET MVC you need to counter balance it against the current Webforms implementation (to a degree). But it definitely needs stand more on it’s own as it grows up.

Anyway, Michael’s post has has really got me thinking. In an interview this week I was explaining to an architect why one would want to use ASP.NET MVC and I think I was able to articulate pretty well why you would want to use it and who would not benefit so much from it. I don’t have a better succinct definition yet.

So what benefits does ASP.NET MVC have for me?

It encourages me to separate out fundamental concerns. I want my tools to encourage me along a successful path. They can’t make me build good applications, but they can give me a good model. Having a View that is just about transforming data into a page (or some other format) is good. There isn’t much temptation to put business, data or flow logic in the view. The Controller accepts requests in a predictable format, finds out what Model it needs to call and says what view to render if necessary. The Model can easily be decoupled from the first two parts.

Routing is a first class concept now giving me a prescriptive way to specify a request format. It’s not an after thought like url rewriting.

ASP.NET MVC certainly flattens out the complex Webforms event model. Any time I can cut unneeded complexity from an application I will. I can’t imagine Webforms without preinit, init, render, etc.

As I do more and more TDD with web development, I know that ASP.NET MVC is easier to unit test.

Last of all, it takes me closer to the HTML, CSS and JavaScript. Some people want to pretend these languages don’t exist and want to do Winforms on the Web and others just don’t want to have to deal with the quirks of those languages. I make no claim that they are perfect, but they are good enough and by this point in web history there is agreement on their implementations.

Can we quite having to write ASP.NET MVC? It would be good to have a shorter name for writing. And yes, I ended my title in a preposition, get over it.

About these ads

Written by Chris Sutton

July 26, 2008 at 3:42 pm

3 Responses

Subscribe to comments with RSS.

  1. [...] to VoteWho and What is ASP.NET MVC for? (7/26/2008)Saturday, July 26, 2008 from subjunctive.wordpress.comMichael Neel wrote today about what a good [...]

  2. Good stuff Chris!

    Zac

    July 27, 2008 at 9:11 am

  3. [...] are a couple of informative articles on ASP.NET MVC. Who and What is ASP.NET MVC for? ~ Controller is NOT the New [...]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: