Now before people start throwing hate mail at me its worth pointing out that up until MVC I used WebForms for all of my web development. In fact, I really do like WebForms. I think that they are especially great for whipping out quick internal projects that normally draw away from the time you could use developing something useful.
But, as much as I like WebForms, I think that too often they spew out more crap than value. If FrontPage was the way for a non-technical person to make a website then WebForms is the way for a non-web developer to make a website.
(It's worth noting my measurements are based on uncompressed HTML - I'm mostly pointing out the differences between output created by the developers - not the content that is compressed down the wire.)
A Simple Example
Well here is a page that really rubs me wrong...
ctl00_BaseBody_FadingHeroEmbeddedSliverlight1_FadingHeroEmbeddedSL_ HeroBottomTitleShortDescriptionDivID (I had to put a break in the middle).
ASP.NET really does an incredible job abstracting the web so that a desktop programmer can jump right into web development, sometimes even using drag-and-drop controls *shudder*. It seems to me that web development ought to be done by people that understand the how web programming works.
Here is an example where you can tell that web developers had constructed it. It pains me to show it but I think it is relevant here since they are direct competition.
Yeah, it's the the enemy of Microsoft developers. But if you go over the page there is roughly the same amount of information (if not more) but their page is only 25K (smaller than the ViewState alone on the previous example). Even if you compare all of the resources on the two pages, the Apple site loads about 30K less in stylesheets and scripts than the Microsoft site. It is worth mentioning that the Apple site does load more images but their entire pages is full of large, high quality images -- which is something that grabs attention much better than text. Not only that, but the Apple site actually does stuff!
Why? If you look at the source code you can an immediate difference between the two. The source code on the Apple page is cleaner, better designed and smaller. There is no ViewState or unnecessary ids for elements on the page. Everything (appears) to have been placed onto the page through careful consideration and not generated by some Page Lifecycle that injects code and markup into your page without you even knowing it.
So What Is My Point
Both these examples are two high profile sites. They are from two very competent technology companies -- however, one looks a little less skilled to the other - at least from a web development perspective. It seems to me that extra time and effort should have been placed by the Microsoft developers to trim out all the fat and make it as web friendly as possible.
I might be nit-picking at the HTML output but I do think its relevant. That code - even if it is compressed - is the final rendered output from a WebForms page. As soon as the page opens there is immediately markup errors, unmatched tags, extra body elements. It's clearly not the best it can be. I'm not trying to make Microsoft look bad either - personally, I want to work for them some day, but the point is that in order to improve then you must first be honest with yourself and those around you.
WebForms are a powerful tool - don't get me wrong - but it seems to me that they have abstracted web development too far. I always thought it was really cool about .NET the way you could go from web, desktop, console, mobile or whatever development you wanted to and it was still like second nature! It allowed you to focus on solving problems and less on how each area was supposed to work.
I'm not saying people can't develop great applications with WebForms. In fact I still use them from time to time when I need to hack out a quick application that only the internal eyes of my company are going to see. However, when I'm browsing the web and come across a website that is packing a 50K ViewState or is littered with wasteful, pointless 40 character long ids, I just can't help but feel that WebForms is starting to hurt the web a little.
That's why I recommend that if you haven't already, go try out ASP.NET MVC. It doesn't take long to break away from WebForms and you'll probably feel more comfortable within a few days.
August 28, 2009
WebForms : FrontPage For Programmers
Is using WebForms resulting in poorly made websites.