Friday, September 6, 2013

Why and How ASP.NET Web Forms Were so Crucial in the Success of .NET

I have been using ASP.NET just about since it's inception to the public around 2002ish (see: TechEd 2001 throws .NET to developers or .NET Release Date Announced (way to go VSLive! SanFran 02') for a little nostalgia). Nowadays it seems the dirty word of web technology is to even mention 'web forms' to be used typically in favor of MVC. This however is a misnomer because web forms are still a good tool in the proverbial toolbox of engineering technologies. I have done both and they both have their place. Personally as an architect I prefer MVC because of it's architecture compared to the event driven web forms, but honestly I like the RAD aspect of server controls. Yes I said it, the UI part in web forms is a bit easier than working with HTML helpers in MVC. Not that I would pick a web forms project simply because of that, but I still like it. It's easy, and easy is good.

I actually got in a mild argument on a Stack Overflow chat about 6 months ago as I was being discounted as a 'seasoned professional' because I had only done MVC for the last few years. It didn't take long for other 'seasoned professionals' to back me up and explain to this newb to pipe down a bit. Web forms have a deep history in the 10+ year history of .NET.

I'm not writing here about the differences (I've done that previously: ASP.NET Web Forms vs. ASP.NET MVC) but rather shed light to those newer to the industry of why web forms played such a crucial piece in the success of .NET. If you are a new developer to the industry (< 5 years experience) you may only know MVC and be one in the camp bashing web forms. Please take note that ASP.NET's version of MVC may have never existed if web forms didn't exist with their programming style to bridge the gap to .NET years ago.

Let me elaborate. Circa late 90's early 2000's a huge majority of developers on the Microsoft Stack were using a product (we all love, right?) called Visual Studio 6.0, a.k.a. VB6. And all of us were creating Windows Forms applications (and maybe a few COM components or ActiveX controls too). Those WinForm apps were all using an event driven (button click behind a form) style of programming. There were also those doing C++ at the time as well and they were eyeing another gap to bridge which VB6 did not have and that was true Object Oriented programming.

Along comes this new IDE and technology called VS.NET with it's .NET framework. I remember when 'Google Groups' was still big on the internet for forums usage and a lot in the industry made remarks like, "This .NET thing will not catch on" or "I've still to see why I need to move to .NET because I can do everything I need with VB6 or ASP". Luckily I was never of that attitude and was with companies willing to move quickly to .NET and away from VB6.

There really were (2) main technologies to develop in when VS.NET came about: WinForms and ASP.NET Web Forms (maybe 3 if you count .asmx web services which was the most touted but not required for use in building applications necessarily). The absolutely ingenious thing that Scott Gu and Microsoft did was make the ASP.NET programming model identical in most aspects to that of WinForm and yes even VB6. Let me demonstrate: "OK, take this new 'web page' called Default.aspx and drag a Button control onto the form. Now double click that button and their is your event handler. Now run the application. Guess what? You just built a web site." :D  The response: "What?!?!?! That was just like my VB6 apps, maybe this whole web apps technology and .NET is worth a try." Also thank goodness for C# as well to bridge this gap in the same manner for C++ developers looking for a little familiarity of their own and some true OO programming. I think in the same respect most C++ developers would have become Java developers if C# was not born. That's completely analogous to the importance of web forms played for bringing VB6 devs to .NET.

I remember back in the early 2000's there was stiff competition from Java, Perl, PHP, and the like as prominent technologies to win over devs off the Microsoft languages and IDEs from the soon to be retired Visual Studio 6.0. Now MVC (Model-View-Controller) is an old architecture concept that dates back to the 70's and 80's from Smalltalk but arguably is a tad more complex to learn than the RAD drag-and-drop event based programming model. Imagine if there were no web forms when VS.NET appeared in late 2001 and they introduced ASP.NET MVC only. Sure there would be some hardcore devs that would have like it, but the majority of the millions of VB6 developers would have taken 1 look at that and said, "No thank you". Web forms and their almost identical to VB6 style of programming (other than being stateless as probably the biggest difference) was absolutely key in my opinion to the success and adoption of VS.NET and .NET in general.

Kudos to those that probably thought along these lines when coming up with the .NET framework. Now 12+ years later and there is a SLEW of technologies at our fingertips on the Microsoft stack like our friend ASP.NET MVC. However we might not be anywhere close to where we are today without ASP.NET web forms and it's close to Windows Forms - VB6 programming similarities to bring over and attract the masses. So this may not make you choose web forms today as technology #1 to being your new project, but at least understand it's importance in the world of .NET.