Hanalei, Hawaii Tuesday, February 09, 2010

Ramble: ASP.NET MVC Is A Geek Chisel

Scott Hanselman and I were on the phone the other day talking about Community stuff surrounding MVC and certain ideas we had. The next thing ya know we're waving our phone arms and waxxing poetic as we try to phrase what we think the "MVC Story" is.

Scott Hanselman and I were on the phone the other day talking about Community stuff surrounding MVC and certain ideas we had. The next thing ya know we're waving our phone arms and waxxing poetic as we try to phrase what we think the "MVC Story" is. We each have our thoughts and Scott wrote his up here. I thought I'd add mine as well because, overall, I think it adds to the ongoing discussion. To be clear: these are all my opinions and ScottGu and team worked up the MVC thing way before I cam on the scene
Update: The story that's about to follow is sort of told out of context - I wrote a follow-up to further explain...
My Dinner With Hanselman I've read Scott's blog for years and watched him do his thing many times at conferences over the years - the guy is a riot and a never-ending pastiche of quips, profound observations, critical insights, anecdote, and tangential distraction. You literally can't be in the same room (no matter the size, no matter the people) where Scott doesn't take control of the conversation at all levels, and then entertain everyone in the room with some seriously messed up smarts. I hung out with him, Phil Haack, Jay Flowers, Jon Galloway, and a few others at DevConnections in Vegas this last year and Scott got into a bit of a debate with one of the guys in the room. It was clear the guy Scott was talking to (let's call him a "Red Shirt") was just out of his league, but he was doing his best to hold his own in this debate (I think it was about TDD). The conversation started to get a little edgy, and Scott decided he wanted to move on to other topics, so he rapid-fired all the reasons why he thought the way he did about the thing he was talking about. Short, concise, right between the thick, black-framed, geek-spectacled eyes. It was overwhelming. A complete savant spasm that no one was ready for. It was a clear statement: "I've had fun, I'm done". The only response the guy could give was.... "good points - I spose I never thought of [subject] that way. Umm... yah this is good stuff." Scott then lays out, what to me, is pure Hanselman:
That's Comp Sci Baby
The room erupted with spilled drinks and laughter, tears and people holding their sides from laughing. It was at that time that I decided never to debate Scott in anything, ever. I might be right, everyone in the room might be in agreement with me, but Scott would still eat my lunch then throw the bag in my face :). I've gotten to know Scott better while working at Microsoft and I talk to him reasonably often on what we're doing. Getting more than two minutes of his time in conversation is truly a feat, and so far I've done it 3 times (woot!). And For Our Main Course: ASP.NET MVC Our conversation was pretty academic at first - focusing on perceptions of just what MVC is. It quickly devolved into office quotes, weird analogies, and metaphor as we discussed what we think is the core of what MVC offers to current ASP.NET developers. The question has come up a lot (this is from Rich Bushnell's recent post):
I don't need a complete new system for building pages. It just took me 3 years to learn ASP.Net as it is now. I don't want to throw it all away because it's not cool any more. And I don't think my customers want to do that neither <snip> Why not make ASP.Net better? Why not take the stuff in Patterns and Practices and make it simpler to understand... <snip> The real reason I'm peed off, is that I'm having to invent my own guidance, while MS seems to be messing about doing other things. That's not good for the customers, as they get new ideas from everyone, and no idea what is right or wrong. So guys, please. Why not stop what we're doing, take a step back, consolidate, learn from each other, and build something better than ever.
You can tell that Richard is frustrated here :). It's easily understood - there's a lot coming out of Redmond these days and one thing that's lacking is what I like to call "The Story" - the Why, How, and When. In short - What's the Value of MVC? Would You Like Some Hedge With That Opinion? Before I go on - I want to reiterate that these are mostly my musings. No one has sat down and said "this is why we're building MVC". It, quite literally, JUST IS. I offer my thoughts here as to why I like it - and feel free to disagree. I think, if you take nothing else away from this post, please know this: ASP.NET MVC is an option for you. There are good reasons to use it, but it might not fit with what you and your company are doing. If that's the case - keep moving on the ASP.NET! A Drum, a Guitar, and a Rock Star Voice That's how people describe one of my favorite bands - The White Stripes. They were one of a group of bands that hit back in 2003 with the "Garage Sound" - unproduced, no fluff, no electronics - just raw four-track wundersound full of energy. Other bands that followed in this scene were The Hives, The Vines, and The Strokes and this movement was heralded as "The Second Coming" of Rock" That might have been a little dramatic, but at the same time there is a pretty nice response when your strip away the abstracted fluff and get closer to the core. Scott likened this to "ASP.NET Unplugged" and I think that's apt as well - you get to the core of what it means to develop a web application: slinging HTML and Javascript. Talking to Scott one-on-one can be ... interesting to be sure (but always entertaining) - in this case it was very enlightening as we ping-ponged our ideas and (what I call) stair-stepped our way to a pretty solid story - ASP.NET MVC removes a lot of abstraction (Web Forms) which on one can very much help you, but on the other hand (if you're an HTML specialist) can be a big help. Chiseling a Digital David While I was in Redmond last week I discussed this very thing ("the story" behind MVC and why it's appealing) close to 12 times. I kept struggling with analogies and I think I found one that works for me. It might not work for you - but I'm sincerely interested to hear what you have to say in this arena. Believe me - it's important! As a developer you build things- just like any contractor building a house, or artist creating a work of art. Often times artists will choose not to use tools that save them time, preferring to build something that they can (literally) work with their hands so they can "feel the art inside the medium". In the same way that Big Z showed Cody how to shape a board ("looong, easy strokes") - many people just want the machinery to get out of their way when building a web site so they can create their HTML how THEY want to, and use javascript and form tags as they see fit. Some people see this as tedious, repetitive work - others see the process as creationary and artistic. I think they're both right and I love how ASP, now, supports both. I was in the conversation Scott referenced in his post about implementing a Repeater in MVC:
We need to come up with a Repeater control for folks using MVC... We have a Repeater - it's called a For Loop
I want to share who said that line but I'll keep it close to my chest since it was said behind a closed door ;). What Do You Think? Part of my gig with Microsoft is soliciting as much community feedback as I can. I tend to believe that ASP.NET MVC allows for much more "hands-on" type of development with extreme control over your UI (HTML/Javascript) that allows you to create some really cool work. Do you agree with this? If not - what's the appeal for you? Does it frustrate you to have so many choices and if so - how can we help to provide some guidance?


Kevin Dente - January 25, 2008 - Oh, lord, are we starting a full fledged "ASP.NET MVC is..." meme here? Damn you Hanselman!!! :P
Craig - January 25, 2008 - I personally use it because I hate the way asp.net works and the lack of control on how server controls work however!!! for many of my clients traditional asp.net is just fine and they will continue to use it. My personal projects are cutting edge, I like em fast and I want total control and therefor MVC was a great treat! -c
Nathan - January 25, 2008 - I agree with Craig. I like working with javascript, my designers want the css to be perfect. MVC gives me the freedom and control to build the web app exactly how I want. I can't wait for the next build of MVC!
Craig - January 25, 2008 - I would like to add it is nice to see industry leaders trying to slow down our addiction to new technology and trying to just make what we already have better. Making new tools and frameworks etc is fun but it is getting out of hand. :)
Chris - January 26, 2008 - OK, I will attempt to provide the counter-point. I find it interesting, in a conspiratorial kind of way, that the tune has changed (so to speak) on the rationale behind why having an MVC framework is important. First it was "ASP.NET is (nearly) impossible to test; we need a completely different page model." Now it's merely "different strokes for different folks". So is ASP.NET irreparably broken or not?

As an enterprise developer, I place value on tools that provide improved productivity through use of ever-higher levels of abstraction. Requiring that developers hand-craft every pixel will not win me more points and exacerbates an already terrible recruiting/hiring skill availability problem. However, I recognize that there are some in the industry for which complete control is important and I can understand the appeal that the MVC framework provides in this area.

So, my concern is not there should be only one way to build web applications, but a concern over Microsoft's focus and their ability to support both frameworks over time. The industry as a whole does not have a good track record of a single vendor supporting two product lines that essentially do the same thing.

I have related concerns about P&P's focus and ability to support both. They seem barely be able to keep up with both the web and smart-client factories (working on one, then the other, alternately, for budget and resource reasons). Will they be asked to step up with MVC guidance as well? Can they do it? If they did, what would happen to the maintenance and improvements needed for the existing assets?

And what does MVC mean for Sharepoint, which seemed to be moving forward towards a highly-capable web application framework that moves beyond mere "pages" and integrates the concepts of record storage directly into the framework. All based upon ASP.NET. As one of ASP.NET's biggest customers, will it get the attention it needs if DevDiv is focused elsewhere?
cmv - January 26, 2008 - in terms of pure web design (HTML, http), microsoft made some really bad decisions in asp.net. One form per page being the most agregious (go ahead and try to perform a get on a form with runat equal server). And don't get me started on viewstate. MS had to come out with a framework that competes with the likes of RoR, cakephp and django because they are losing web developers to these other frameworks. Corporate developers which is their bread and butter.
Rob Conery - January 26, 2008 - @Chris: I don't believe any of us have changed what we're saying about MVC - we've always said that it's an option to web forms and is not replacing anything (which I think is important). The reason Scott and I wrote these posts is to provide a bit more of "The Story". >>So is ASP.NET irreparably broken or not?<< If this is the message you're hearing I'm very interested in details. >>The industry as a whole does not have a good track record of a single vendor supporting two product lines that essentially do the same thing.<< I think Microsoft is capable of supporting multiple software efforts. Out of curiosity, though, can you provide some examples for me? Also - why did you think the efforts weren't a success? I can't speak for Sharepoint, but I can reiterate what we're all saying: ASP.NET is going to keep revving and moving. In terms of it's support - that's why Phil and I got hired.
Jimmy Bogard - January 26, 2008 - I remember moving from classic ASP 3.0 to ASP.NET, and how hard that transition was. I used to accomplish all I needed with query strings and form posts, but then I had to deal with postbacks. For me, it's a return to a model that more accurately reflects the nature of the web. There are still plenty of scenarios that require the postback model, such as portals and complex web interfaces such as SharePoint. These pages actually care about staying on one page. But if you take an average ASP.NET app and count the number of "Response.Redirect", this should give an indication of an app that wants to be controller-centric rather than view-centric.
Jeff Doolittle - January 26, 2008 - There are a few things about MVC that I appreciate:

1) Great implementation of the Front Controller pattern. Routing of requests is a great concept and I'm looking forward to seeing how it extends and matures.
2) Pre/Post Action - allows for near-AOP. I can implement my actions now and later come back to add authorization, filtering, logging, etc. This lets me focus on delivering a completed use case now rather than solving all of the horizontal problems first.
3) Goodbye post-back and viewstate. I love the control of using TempData for statefulness only when I need it.

Really MVC is just good OOP. We're separating concerns, following the SRP. It can be done with WebForms, but I like how with MVC you tend to fall into the proverbial "pit of success."

Great stuff. I and my team are on board and have tossed out our old web forms stuff in favor of the testability, control and good OOP practices of MVP. Keep up the good work!
Steve - January 26, 2008 - Rob, I agree 100% that ASP.NET MVC is very much needed and in more ways than are immediately visible. The ability to easily implement TDD and the increased control afforded developers, IMHO, are essential and extremely desirable, respectively. I was actively looking to dump ASP.NET for RoR or start using Monorail before seeing ScottHa's video of ScottGu's presentation re: ASP.NET MVC -- it restored my faith in Microsoft. Another advantage of ASP.NET MVC is that it makes more sense to Enterprise midrange and mainframe programmers. Many of these developers, including myself, want to increase their skill-sets and are searching for easy-to-use tools to help integrate Web applications and SOA with legacy line-of-business applications and databases. My primary language is ILE RPG IV on the IBM iSeries i5/OS (although I've been working with Microsoft products since M-BASIC-4 running over CP/M). IBM's Java/WebSphere/DB2 approach sucks, but so does ASP.NET for midrange developers; MVC finally makes it palatable. I do have to agree with Rich Bushnell as far as vendors slowing down the releases goes; they're killing us with near constant change/upgrade to everything. They're also costing developers and our customers time, money and sanity trying to keep up with the flavor of the month/week/day/hour -- SLOW DOWN. I also think that the choice NOT to force the community to move to a new model, in this case MVC, by replacing ASP.NET WebForms, was the right choice for Microsoft. Just my opinion -- I could be wrong! -- Steve Shaffar
Evan - January 26, 2008 - I just have to say one thing, with MVC the world is not flat any more. The world is not flat, and the earth is not the center of the universe.

That's right. For too long, the page (view) was the center of the universe. While this may have been sufficient some many years ago (before my time), that's no longer the case. We aren't building our father's web apps any more. People aren't satisfied with the web as a mechanism for simply publishing documents.

For many of us in the industry, the view is no longer the central theme. It has been debunked as the center of the universe. As a result, we are dropping the complexity associated with deriving all calculations, models, and formulas using the view as the center of the universe.

This discovery, the true nature of our universe, has lead us to embrace a new model. A model with multiple, independent bodies whose interaction ultimatly determines the present state of reality.

You can focus on MVC as a new way to do html, but to do so is to ignore the underlying reality. The view is no longer the center of the universe.

I would also like to challenge you to dig up some of the original material describing the MVC pattern. There's quite a bit of good material on the web about the pattern, but nothing quite like the original books describing it's original intent and goals. Yes, the MVC pattern has specific goals (beyond "separation of concerns").

If for no other reason than to read about MVC, I would challenge you to pick up a copy of Pattern Oriented Software Architecture (vol 1). I promise it will rock your world (or at least make you a better developer). If it doesn't, I'll be happy to buy your copy from you for the price you paid. (How's that for putting my money where my mouth is?)
Elmar - January 26, 2008 - I am propagating a different view on MVC/Webforms here. What I´ve learned from building complex websites like aerobis.de and others is that Webforms are by far more complex than MVC. What? Yep. Webforms help a lot in abstracting the underpinnings of the web and get you off the ground fast but that approach also get´s you in real trouble because it only works untill a certain point. After that what really happens that you will run into an endless stack of "accidental complexity (http://en.wikipedia.org/wiki/Accidental_complexity)". You start using third party sever controls like Telerik or/and the ASP.NET Ajax Toolkit controls because they let you do neat AJAX things on your Webforms without really knowing what you are doing there. These things introduce another layer of abstraction and you very soon start to notice that you are spending more time getting all this abstraction working than developing the app. Every toolupdate breaks your code because all of the accidential complexity that you brought in. It is greatly appreciated that Microsoft is not addressing this issue by trying to add even another abstraction layer but by refocusing on what is really needed by developers to "things done" and "go home early" in the longer run. To sum this: I think the MVC-story is that (especially when used in conjunction with SubSonic ;-) helps people to learn what they need to know about the web anyway and avoid the pitfall of AC that hits everyone using Webforms sooner or later. It makes apps easier to change, more testable and keeps abstraction at the right level.
BradK - January 26, 2008 - This isn't rocket science folks. Microsoft took the successes of open source platforms like Rails and Django and provided the same for .Net. This will keep many new Agile shops from jumping ship to Rails. It makes business sense, and its a better way to write web apps. MS didn't invent MVC or even the ideas behing their MVC framwork. I don't see a lot of debate here except to realize the old typical closed, proprietary http pipelines that Microsoft provided in the past just suck suck suck.

Now, provide a decent REST/XML processor on top of this like ActiveResource and I can get rid of several other Microsoft specific http stacks like WSE 1, 2,3, asmx, WCF and SOAP in general. I'm hanging in here after many years of surviving the Don Box "COM is Love" era, which is now an enterprise interop disaster for us. This framework shows me some people still care about good design at MSFT. There is hope.
Robin Massart - January 26, 2008 - I agree with Jimmy Bogart. Moving from Classic ASP to ASP.Net was really difficult and despite all the controls aimed at doing things for you it wasn't until I came across Subsonic that I felt my productivity had really been increased by that switch. The controls, why great for doing certain stuff ended causing no end of pain when I wanted to things slightly differently but still leverage the aid of the controls. Elmar's last paragraph sums it up well for me.
Mike - January 26, 2008 - Well, I don't know about the 'community' and their views on this matter, but I didn't think it needed any explaining. This whole post has me scratching my head: do you think I don't understand what you're doing? Because I do, and I think it's great! But then again I have a Ruby on Rails book here, although I do nothing but .NET all day every day. So I might be the type of customer that needs no explanation of these things. Having said that, the ASP.NET forums are full op people asking how to convert an MP3 to PDF using a Master Page, and they might need explaining, but I think they are not your target audience. I'd say stop worrying and just deliver, with ScottGu on board it should be top quality and I trust you to know what's needed and what's not in the framework.
Rafael - January 26, 2008 - I started doing web development with classic asp a few years ago.

When .net came I saw that MS wanted a change in course so that developers have a better development environment. For some of us who did not come from CS background it was a steep learning and understand what OO really is , for many people like you it was more natural and but still the picture was not complete.

I really like the fact that MVC Framework is an option and not a change in course.

Some times I develop small sites as side projects. The client does not care if I use MVC or WebForms, they want something that will work. WebForms is good for that --- and even easier with SubSonic :). Value is measured in that you give them something that is not over engineered so that it won't cost more than it should.

The work I do most of the time is bigger in scale and testabililty is very important as these sites evolve. MVC Framework, TDD is great for that (and I'm still learning it). For these projects value is measured in that is not under-engineered so that it won't cost too much as the website grows in complexity.

Isn't the "acoustic" or "unplugged" version enjoyable because there's an original version in the first place?




As long as MS supports both MVC and WebForms (which I don't think why) I think is great.

At the end of the day
Rob Moran - January 26, 2008 - For developers who like to see and tweak their code in an artistic manor, a drawback of existing controls is that they can seem to be black boxes just knocking out un-controlled (artistically) html.

Personally, I feel the sort of tools required with this approach are IDE-based ones which quickly help you to write the code which can then be tweaked into a masterpiece prior to deployment.

A good example (albeit unrelated) are the DTO translation class creation tools in the webservice software factory.
Ricardo Oneda - January 26, 2008 - Rob, I agree with you. And I totally agree with Elmar too. ASP.NET MVC is more close to how web applications really work. WebForms are great, but for some cases are too complex. This attempt to change the way we develop web applications into a more desktop-like way doesn't work for all needs. Besides that, most people that use WebForms don't know what is happening behind the scenes. Probably, those people won't get interested in MVC Framework. It's good to have more options.
Rob Bazinet - January 26, 2008 - When the MVC framework was announced I was very happy to see Microsoft headed into a direction dictated by the likes of Ruby on Rails. The presentation by Scott Guthrie at ALT.NET really made the framework to be very Rail-ish but only with C# or whatever your .NET language of choice. One complaint I have about Microsoft and creating these tools is they try to be all things and leave out what makes good frameworks great, is the ability to make them simple. Writing applications in ASP.NET with webforms is certainly not hard but a complete application can be complex, which is where things fail for me. The ScottGu presentation made the MVC framework look very clean and simple but as the hands at Microsoft start to develop the complete solution it appears to be getting clouded and complex. The screencasts I have seen on the MVC framework, particularly the one by Scott Hanselman, make the implementation look cumbersome and complex, a total turn-off. So why does Microsoft really have to have a "story" all the time? Is this necessary? Do we need to be fed a line to be convinced to use a product? I think the group led by ScottGu is doing great things, no doubt. They are are passionate about what they create but there is something missing, imho, to attract developers that may be attracted to frameworks like Rails. I have to think the creation of the MVC framework was motivated by Rails. This is cool, but I think the MVC framework should be developed and rolled out like Rails, make it opinionated and do some large chunks for me, don't make it complex and cumbersome. I for one am a .NET developer who is using alternative frameworks such as Rails and Merb to create some new web sites. I would like to use the MVC framework but I can create applications so much faster in those other frameworks. I won't get into the scaling arguments as they don't matter for the 95% of us who won't create sites hit by so many visitors that we have to worry. So, go create a story if you need to, but make creating ASP.NET applications easy as Rails and make the management just as easy. -Rob Bazinet
Rob Conery - January 26, 2008 - @Evan: I'm all for challenges but to be honest I'm not sure what the challenge is. I have my Patterns book here and MVC isn't one of em - it's more of an architectural approach that is as old as the hills :). I think that's what you're saying (it's why I'm confused) - we're not suggesting we made it up :). @Mike, @Rob: It's not a explanation necessarily - it's the "why" in "why MVC was created". Many developers think as you do and find it "obvious" - others do not (see referenced post). There are also many internal discussions going on where it would really help to point to some blogged questions and say "this is what my readers think". Hope this makes sense - I'm not trying to convince or explain here. Just want to let folks know what I'm thinking and see if they agree. This is important because, when we have our internal discussions about things surrounding MVC, it's critical that we understand how our customers view MVC and how they use it. The "need for a Repeater" is a prime example. From the answers on this post so far, I'd say the comment in the room (the For Loop) is dead on with all of your sentiments. Make sense?
Rob Bazinet - January 26, 2008 - @Rob Understood. I have definite needs and wants with regards to MVC. Sure, I will blog about it and link here. I would love it to be great, powerful and scalable.
Rob Bazinet - January 27, 2008 - @Rob - I have a few thoughts now in my blog about this. You can check them out here - http://rbazinet.wordpress.com/2008/01/27/what-i-want-in-the-microsoft-aspnet-mvc-framework/
Brandon - January 28, 2008 - Let's face it, Microsoft is in the business to make money, not to just create what is architecturally elegant. MVC is an age-old, proven pattern, but it is also en-vogue due to the current rails tech fad (although some are jumping to the next cool thing). MVC (and the related frameworks I know are coming) is Microsoft's answer to rails. Rails makes web development crazy easy. ASP.Net is clunky and looks hard compared to what can be done with rails. Although, rails is not a do-all, be-all, Microsoft is losing developers to the rails club. You could even argue that more and more new web developers are growing up on rails and look down upon lowly old ASP.net. Microsoft is just doing what it always does (and does pretty well): taking ideas of competitors and attempting to adapt and enhance them. "Microsoftizing" competitive technologies. With all that said... It does not mean MVC is "bad" or a "copy" of what rails has made so popular... It is sweet goodness for all of us that understand what this pattern brings to the table. Like many others said, it gives us control where we previously had limited control. It gives us what exists in open-source frameworks but provides it in an interesting and more fully "supported" way (open source is good, but Microsoft's enterprise-level support of a solid product like MVC is even better).
Rob Bazinet - January 28, 2008 - @Brandon I don't think you can label Rails as a "tech fad" but I agree people are using Rails and looking down on ASP.NET. Microsoft is in the business of making money by selling server licenses for Windows. As long as we agree this is ok, and it is, then they should make the tools we use to write applications as easy as possible. Rails is about as easy as it gets without shielding developers from the ability to make use of the underlying power. So, yes, MS is good at copying, nothing wrong with that and I am advocating doing that with Rails. I would love to be able to have the easy of use, simplicity and power of Rails with the MVC Framework. Rob, Scott and Phil, please make it happen.
tgmdbm - January 28, 2008 - The ears of the leaders should be ringing with the voices of the people. As a rule, consider each comment . Given that everyone using it at the moment is a small percentage of the number of people who will eventually be using it, each comment should carry the weight of all the other people who would eventually come to the same conclusion. Build on the wisdom of those who have gone before you. There are a number of MVC-for-the-web frameworks which have been developed over a number of years. They are bound to have come across, and solved, a lot of the problems you're going to face. Watch them closely. Also watch the MVCContrib project, these are people developing code which should potentially be in the framework as standard. I hope I haven't told you anything you didn't already know.
Richard Bushnell - January 28, 2008 - Hi Rob,

Thanks for the quote. Glad to know you're listening. :)

I don't particularly care if we have another framework or not, to be honest. What I am more concerned with is the amount of stuff which seems to be left behind to make way for the new cool stuff.

I used to code in the ASP days. Using a ForEach was no fun. Try doing an alternating background color in CSS with it. Rails has a groovy function for it, and I hope the MVC framework will have, but without it, it's not easy. You end up with terrible looking pages.

I totally agree that ASP.Net is too complex. Patterns and Practices is worse. Why not focus on making that easier, in the same way we now have LINQ to make coding in C# and VB easier?

I'm glad we're talking about this though.

You know WPF and WF are 18 months old nearly, and, despite the hype we still have no tools, no controls, and no guidance on it. TechEd Barcelona had one stand for Silverlight, and no-one for dedicated WPF. WF is almost dead in the water, with nothing new coming out of it for ages. Is that what's going to happen to ASP.Net or MVC? Will Microsoft just forget about one of them too to concentrate on something even new and cooler than Rails?

Richard
Jason - January 28, 2008 - Rob I think you hit the nail on the head when you said "Some people see this as tedious, repetitive work - others see the process as creationary and artistic. I think they're both right and I love how ASP, now, supports both." As far as an evaluation of technology, ASP.NET MVC is immature, and has a long way to go. Web Forms is mature, widely documented with much community support. As far as an evaluation of concepts, MVC aligns with separation of concerns, and a higher level of control. Web Forms aligns with abstraction and encapsulation of logic, and less code. Both are valid concepts. As for their implementation in technology though: MVC physically separates application logic from view logic, but so can Web Forms if the developer has a good Business Logic Layer and separates business logic from view logic with //some comments. MVC spreads server-logic throughout the markup, while Web Forms abstracts server-logic to server controls and code-behind. Server-logic and client-logic/markup, aren't those concerns too, with cause for separation? Of course, nothing stops Web Forms from having inline server logic throughout the markup as well. ScottGu has hinted at further information regarding practices for user input validation and Ajax, I'm waiting with bated breath, it's been over a month since his last MVC related blog post. By the way, I have a post on the .NET MVC forums that hasn't been addressed yet (in over a week) about an MVC strategy for globalization. Rob, can you please help me dig up an answer here? I've found absolutely nothing from research, and been in touch with a .NET globalization expert, Michele Bustamante, and she hasn't heard anything either. The link to my post is : http://forums.asp.net/t/1206630.aspx I think it may have even been archived without being answered.
Roberto - January 29, 2008 - As for me, if it wasn't for ASP.NET MVC Framework I would have definitely gone for Rails. ASP.NET WebForms is too much of a complexity: having experienced Rails I will no longer develop in ASP.NET WebForms. It seems to me that after an initial enthusiasm from the Microsoft smartest guys on the matter, the attention is slowing down (see Jason post): please keep on strong on it, we (at least me) absolutely need it. If corporate developer (or top Fortune 500 MS customers) don't like ASP.NET MVC they can simply continue using ASP.NET WebForms. I don't mind if "control" developers/sellers companies are worring if they market share will shrink: if it will, it will be for "natural selection".
Justice~! - January 30, 2008 - "What do you think?" I think your story about Scott makes him *sound* like a tremendously socially awkward jerk, who I would never want to meet in person. Considering I've heard otherwise from other people who've met him, this is certainly an interesting side and definitely will inspire a post about being nurturing and not condescending to other people in our industry. It's kind of disappointing to me, and honestly maybe I'll have more feedback on what MVC is to me after I'm done with that first part. ;)
Rob Conery - January 30, 2008 - @Justice (?) - I can honestly say that I've never wanted to be anyone else so much in my entire life.

It's probably worth pointing out, at this point, that I like to tease him. Because I envy him. I want to be him.

Did you leave this Hanselman?
Scott Hanselman - January 30, 2008 - I tend to agree. I don't think I'm a jerk, and this story kind of omits a LOT of context. Like, it was 2am, it was Vegas, we were (literally, not a lie) in J. Lo's suite, and the guy I was talking to had been heckling me in talks all day. I was just explaining how O^n scale worked, and he wasn't familiar with the term, so I just said "that's comp sci, baby" which unintentionally came off a little crisp, and as you said "the room exploded." Of course, there were only 6 guys in the room, so it was a small explosion. Either way, the story kind of is told out of context here. So, poop on you, Rob. ;)
Rob Conery - January 30, 2008 - Follow up in the making...
Joe Brinkman - January 30, 2008 - Great post. For me the most important aspect of the MVC story is choice. For those that want the abstraction, leaky or not, we have webforms - for those that want complete control there is MVC. What's not to love about that.
Rob Bazinet - January 30, 2008 - @Rob I wondering where your or Scott's comments are about all of this MVC talk? I see you might have mildly offended Scott and you create a totally new post apologizing, but not a peep about all of our MVC comments.
Rob Conery - January 31, 2008 - @Rob - I didn't offend Scott (he knew what i was talking about) - I just didn't add enough detail ... thus the update. But to your question... I'm reading all of this - it's very important. I'm more interested in what all of your impressions are and not in a position to editorialize here. This is all new stuff - so I'm reading each comment that comes in and we're all talking about it. :)
Rob Bazinet - January 31, 2008 - @Rob I know you didn't offend him. I was just joking around, trying to be the "red shirt" guy, getting you to comment on MVC. I am excited for this moving forward, that's all. I am interested to use it in C# but more importantly (to me) in IronRuby. My major concern really is the ease of use compared to a framework like Rails. I use Rails as my sticking point because it's the one I use most. Thanks.
kYann - February 4, 2008 - I think MVC is a good guidance ... and guidance is the things that missed in Asp .Net. I wasn't able to find one book that really tell how to do asp .net the RIGHT way, the way to never feel pain. But there was some constraint in Asp .Net that are terribly bad like the "one and only form". And some things that are, to my point of view, akward, like putting the CssClass in the viewstate ... I think the greatest thing would be to have an MVC framework with the webForm framework minus the bad things. But i totally disagree with the fact that a for loop is the same as a repeater. What i really like about Asp .net is the fact that you have the code behind and that there is no code in the design, only beautiful and pure XML tag ...
Peter - February 7, 2008 - I started out on classic asp way back in the day, and I was blown away at how easy it was to create dynamic websites. I really thought MS was making magic. As I got better I realized there was some room for improvement, but I was confident the next version of ASP would address it's shortcomings and make even more magic happen. Well, we all know what happened next. ASP.NET did not continue the legacy, instead it took away a great tool from the community. You guys can have your ASP.Net, but classic ASP should still be supported and developed. C'mon, bring it back guys, coldfusion and php are still widely used for their ease of use and short learning curve. If coldfusion server was free, you know what would happen, so bring on ASP 4.0 it would be awesome! Those of us who don't develop enterprise apps really need a tool like this. I can tell you now that my next language is either PHP or ror not asp.net.
miken - February 9, 2008 - Well said Peter, I have to agree totally. Classic ASP is much quicker and easier to develop in than webforms, and easier to read and maintain if you code it properly and avoid spaghetti code (not very hard to do if you are a skilled programmer). I agree MS should support it and there was really no explanation why it was dropped as asp.net 1.0 certainly wasn't anywhere near it.

We need to Keep It Simple if we are to develop web apps in a reasonable timeframe. The asp.net page lifecycle is ridiculous, all it needs to do is let you do some processing and render some html. The viewstate, postback-driven event model, databinding, evals which are not typesafe anyway, all just adds unnecessary complexity.

Ruby on Rails looks like the best choice to me for web app development. But this subsonic and MVC stuff is looking like a viable alternative to "jumping ship"!
david - February 13, 2008 - @kYann - a For loop _is_ a repeater to a developer, and a more efficient one at that, but i understand that a Repeater tag may look cleaner to a (web) designer...

I think there's a useful distinction to draw here between functional code (database access, domain model manipulation, business logic, etc) and presentational code (for each item in this list, write one data to the response)... I don't mind scattering presentational code amongst my markup; ASP.NET MVC let's me keep the heavy logic in separate assemblies and that's great.

The quote that got me most excited about MVC to-date has been from Scott Hansellman's screencast on the MVC framework when he said "You have control over every single angle bracket that comes over the wire."

That made my day; no more bloated IDs, no more needless span tags (and Repeaters have been the WORST offenders in this regard), no more ViewState clogging up my bandwidth.

Remember that clean HTML output is _not_ about artistic control; it's about low page weight, fast download times, and extending separation of concerns to the client (HTML/CSS/JS).

Out-of-the-box i can get an ASP.NET MVC site running with .NET LINQ on the back-end (almost completely covered by unit tests), with light-weight pages and simple, concise, maintainable CSS and JS on the front-end. With predictable class and ID names, i can draft site-wide CSS and wire up the JS library of my choice with ease.

Try and do all that in 10 minutes using Web Forms; i'm _still_ trying to figure out a good solid architecture.

I think that Web Forms was impressive in how it let you get simple dynamic pages and simple apps up quickly. Anything complicated, however, got real complicated real fast due primarily to postback and viewstate. The web is inherently not a stateful environment; trying to fool the browser (and the developers) into acting like it is came with a huge amount of headaches.

@Peter - in my eyes, ASP.NET unplugged (MVC) is ASP 4.0 in the sense that it brings the power of the .NET framework back to the simplicity of a basic Request / Response model.

I think "unplugged" refers to disconnecting from the viewstate/postback complications and to unplugging the dependencies to separate concerns front and back.

The ASP.NET MVC bits feel clean and fun to use.

Keep up the great work.
mashal - March 7, 2008 - thank you so much for all.
Gecko