Coding the Wheel

ASP.NET MVC Is My Shrieking Electric Guitar

Monday, October 20, 2008

This is your HTML markup:

Clean HTML markup

This is your HTML markup on drugs ASP.NET:

Traditional ASP.NET markup

Any questions?

ASP.NET offers a lot of horsepower, especially in its most recent incarnation. I give you jQuery, AJAX, Dynamic Data, control adapters, and more.

But traditional ASP.NET web pages are littered with cruft: hidden fields, obscure Javascript, and a ubiquitous <form> element even on pages which don't look, act, or talk like forms. The ASP.NET WebForms infrastructure extracts a price. That price is the sanctity of your generated markup.

We could almost call clean markup the sacrificial lamb of ASP.NET WebForms development. It's what you give up in order to achieve the illusion of state in that stateless medium known as the World Wide Web. If you develop in ASP.NET, then you've probably spent a lot of time chasing your tail as I have, ferreting out how to clean up ASP.NET-generated markup to make it palatable:

But the problem with these hacks techniques is that they attack the symptoms, rather than the cause.

Dense, encrusted markup is the natural result of trying to graft a desktop application development paradigm (with events and easily recallable state and so forth) onto an inherently stateless, request-response medium: the World Wide Web. This is what ASP.NET tries to do, and that it succeeds at all (and it does succeed) is a testament to the ingenuity of the ASP.NET development team.

Still: the generated markup is ugly and loaded with boilerplate. There can be no arguing with this, although for most line-of-business applications, it doesn't matter. A little extra markup doesn't hurt anyone, neither in the transmission over the wire, nor when the Google spiders come crawling. (Although in some worst-case scenarios, unbridled viewstate has been known to grow to a few megabytes in size).

But if you're a stickler, a purist, or if you're building something that needs to be lean and mean, a typical ASP.NET WebForms application just doesn't give you the fine-grained control that you'll want—at least, not without a lot of extra work.

Enter ASP.NET MVC

You've probably heard about ASP.NET MVC by now (the official beta was released just a few days ago but the previews have been around for months) so I won't rehash.

Instead, I'd like you to take another look at that first picture, a picture of what HTML markup looks like in the land of Perfect:

Clean HTML markup

When I see markup like that, well, in the words of Led Zeppelin:

Hey, hey, baby, when you walk that way
Watch your honey drip, cant keep away. 

The above is actual markup generated by an ASP.NET MVC website. It's still ASP.NET—ASP.NET is now a superset which includes both the WebForms and the MVC paradigm within it—it's just not ASP.NET WebForms.

And it's clean. It's tight. It can be applied from the ground up, or grafted into an existing ASP.NET WebForms application. It's works with AJAX. You can still use server controls. You still have a design surface. Master pages. User controls. All that stuff still applies, if you want it.

But it puts you back in the driver's seat, rather than driving you around in the back seat. In the words of Scott Hanselman:

I like to think of ASP.NET MVC as the raw, acoustic version of the more heavily produced and multi-layered ASP.NET WebForms we use today.

Though when it comes to that, I like to think of ASP.NET MVC as more of an electric guitar, and you, the programmer, are the guy rocking out a Machiavellian riff with his shirt off, hair flying every which way, crowd-surfing, making love to the floor, whatever. And ASP.NET WebForms is the full 32-track 88-key digital production workstation with virtual instruments, effects, and those nifty little LED readouts.

But don't use ASP.NET MVC just because it's sexiest thing since sliced bread. Don't use ASP.NET MVC because it's what will get you the girls, even though I promise you it will. Use it because it works. It works so well that I've made a promise to myself and I hope it's one you can get on board with:

I will never again embed a form tag into a web page that's not intended to be submitted.

If that, if on nothing else, we should be able to agree.

Rock on?

Tags: ASP.NET, ASP.NET MVC

33 comment(s)

If MVC was around back in the day, maybe I would not have given up Microsoft development for good. Now that I've tasted Linux and Mac, there's really no going back though.

I'd use anything if it got me the girls. So screw any other reason ASP.NET MVC is for me!

Lovely stuff. Can't wait to get started.

Thanks for the post!

Cool, I may just give MVC a spin, in this case.

Good writeup on cleaning up ASP.NET.

An interesting implementation using MVC is Kigg - a Digg clone although what is on Codeplex doesn't work with the latest releases. I have a (somewhat) working version out at http://www.theburnlist.com/

Keep the good pokerbot stuff coming!

Dave

I hate Led Zeppelin.

I love Led Zepplin.

Should we be scared as PHP Jockeys?

...Some people never wrote a form tag while building enterprise level web apps with rapid application development mvc frameworks like http://www.atk-framework.com/ (secret tip). I love Pet Shop Boys...and its not a shame ;-)

Great post. A little light on the information but I like that you've accentuated what to me is the selling point of ASP.NET MVC, that's CLEAN MARKUP. I could give a damn about test-driven development. I could give a damn about clean separation of concerns. Just let me output clean markup so my PHP buddies stop throwing stones.

PHP produces clean markup? Gasp. What version are you using?

Upvoted just for the pic of Jimmy Page

@Ed K.: PHP doesn't produce any markup on its own. Granted, the language itself looks horrible (even though I'd rather that instead of the mixed form\runat fest). At least it doesn't require HTML hacks like ASP.NET does out of the box.

It's great to see stuff like this around. Thanks for the post!

Has anyone else gotta a threatening email from Pokerstars about Coding the Wheel?

They threatened to break my knees.

It's been 20 days since this article was posted. About time for Daniel Radcliffe to start posting here again. He still hasn't told us if he's boned the chick who plays Hermione yet.

I really hope this website is not dead, but without a post in the last month I fear the worst. RIP Coding the Wheel?

I'm hoping he's off on some secret mission...

JagBot - PokerStars sent you an email?

I spent about 2 mos part time building off of the stuff here and I'm at the point where the entire gamestate in pokerstars is captured in a class. So I have all of the communication and game logic in there. But have been stagnating on the poker part of it.

Which leads me to my point... In lieu of creating an entire bot that plays for you unattended, it may be better to just make an assistance bot. Something that allows you to play more tables. So if you are a guy who can play 4 tables comfortably, you can make a preflop only bot so you can play 12 tables. That way you are always at the computer and you don't have to worry about CAPTCHA.

this post, dont dead.

go jamesss

Lost my last 25 bucks, while playing drunken ;-)

...but now Im really able to hit the micros.

Will reaching homless state ;-)...

...so where are the news about building a pooker bot?

...of course Im doing some seriouse cooding stuff too. ;-)

c. u.

Dude! Where are you? It's been almost two months!

2+2 forum members kidnapped him...

Would believe he is catched by some poker vendors with an offer could not be rejected ;-)...hu hu hu.

Two full months... I hope you're doing good and just decided to stop posting for a while for whatever reason. Take care.

Or the greatest bluff of James D. whuah ha ha...

merry christmas feliz navidad

from peru

james devlin.

Geez, you're in PERU? Well, Merry Christmas anyways!

This page will be the last one I'm affraid : Well it was good the time this site was alive.

Thanks for the tips :)

Regards

Quote from Tenascious-D: KG: Dude, now that we have the album out ... will it make us more popular ... with the ladies? Jack: Ahh, yah.

Hi, listen, I'm pretty new on this blogosphere and Internet thing, so I don't know if there's a sort of "subscription" method that I can use xlpharmacy in order to receive notifications of your new entries...? Thing is I enjoy reading your blog a lot and I'd like to be up to date with your posts!

Use the form below to leave a comment.






Subscribe to Coding the Wheel over email or through any RSS reader. Coding the Wheel has been published since 2008.

Home | About | Contact | Subscribe Copyright © 2011 | All Rights Reserved