Posts Tagged ‘mvc’
Looking back at original writings surrounding an idea is important when you are trying to take your understanding deeper.
My goal in this series is to draw attention to some of the original documents and highlight what people said about MVC in its inception.
In my next post we’ll look at his original MVC paper called Thing-Model-View-Editor.
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.
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.
My flight leaves for Orlando at 5am this Saturday for the TechEd 2008 developers week. I’m working as a Technical Learning Guide (TLG) in the Hands on Labs area.
The highlight of the week will be getting to present an “Advanced MVC” Instructor Led Lab (ILL) on Tuesday and Thursday afternoons. If you attend you’ll get to do things like build a custom view engine, swap out the controller factory and use some more powerful routes. Should be a good time.
I’ll also be at Party with Palermo on Monday Night and the Influencer/MVP Party Wednesday night (no, I’m not an MVP).
Between working 32 hours as a TLG, a couple of parties and and attending some sessions; I think I’ll have a full week.
As these two ventures mature, I believe some really great projects will emerge. One project that has unified the Ruby/Rails community is RubyGems. I strongly believe that we need a similar package manager. There has been some talk of this kind of project, but I haven’t seen anything significant yet.
The best of what comes out of these projects will not necessarily be the ability to run Ruby on Rails or imitate it, although running it will be a great milestone. The real action will be from idiomatic home-grown projects.