Thursday, May 21, 2009

Classic ASP vs. ASP.Net

Just what is the difference between the deceptively similar technologies of ASP and ASPX? What does it say about a website that still uses ASP pages versus one that uses ASPX pages?

In speaking with people every day, it seems this is a pretty common point of confusion. Most people who aren’t developers figure that since “ASP” is so close to “ASPX” that the differences between the two technologies can’t be all that extensive. After all, ASP is technically 75% of ASPX, so upgrading to ASPX will only give 25% more in features or capabilities. When I tell them that the differences between the two technologies are pretty vast, they are often quite surprised.

From a user’s perspective, it is hard to make the differences obvious. After all, a web page that ends with an .asp extension can look pretty similar to a web page that might end with an .aspx extension. The two pages might even have the same functionality and operate in much the same way. So then what is the difference, and why does anyone care?

Back in 1996 (or thereabouts) when Microsoft came out with Active Server Pages (ASP), the web was still in its infancy. ASP was a new technology which solved a lot of the limitations of HTML and CGI, and was very easy to use. Because of this, ASP caught on and became hugely popular. ASP is a server based technology, where the server can perform some function and the client’s browser can just see the output. For example, an ASP page can ask you for some contact information in a form, once you press the Submit button, the ASP code on the server will gather your responses and send out an email, and then generate a message that gets sent to the user saying “Thank you for your submission”. The client entered the data and saw the thank you message, and the server did the work of gathering the data and sending the email.

In 2001, Microsoft released the first version of ASP.NET. Web pages that end with “.aspx” are pages using this newer technology, whereas pages ending with “.asp” still use the older technology, commonly referred to as “Classic ASP”.

One of the biggest problems with Classic ASP was that it was so darned easy to use, anyone with some basic knowledge could create ASP pages. Once ASP started to catch on, anyone and everyone suddenly became a “web developer” and was creating website code which was (and in many cases, still is) being used in production environments all around the globe. As a true developer, this was extremely frustrating, because my profession was being flooded with amateurs and websites were being created left and right using all kinds of poor coding practices.

The other big problem with ASP was that for any task, there are an average of 10 ways to accomplish it. There are very few standards with Classic ASP. Whichever way the web developer felt like solving a problem, that’s how it was done without regard to programming standards, memory utilization, bandwidth, cpu cycles, scalability, etc. And with many ASP developers not being real “web developers”, the code that was being generated and put into production was many times poorly designed and completely inefficient. Out of the 10 ways to write a block of code, it was rare that the “best” option was chosen.

So along comes ASP.NET, a new technology which is very impressive, and very different from Classic ASP. Perhaps the biggest difference between the two is that Classic ASP is an interpreted language, whereas ASP.NET is a compiled language. With Classic ASP, all you needed was FTP access to the web server, and you have all of the code for all of the features of the website. With ASP.NET, if all you have is FTP access, then it is possible you only have access to the front end graphics and web page html code, but none of the actual source code being used to provide the back end features of the site. ASP.NET effectively split the source code which runs on the server from the client code which is sent to the users browser.

The other major advancement with ASP.NET is that it is harder to develop in. Many of those Classic ASP “web developers” were unable to make the transition to the more structured ASP.NET platform. ASP.NET is more of a true programming platform, it is fully object oriented, supports inheritance and delegation and remoting and all of those advanced programming features foreign to Classic ASP developers.

Lastly, perhaps the most important concept regarding ASP.NET is simply that it is a current generation platform for websites. Classic ASP is part of the previous generation of web technologies and has dwindling support from Microsoft and is riddled with security flaws. There are many thousands of developers out there still coding web pages in Classic ASP and selling them to clients who don’t know any better. ASP.NET came out in 2001, which means that it is now 6 years old and for an internet technology, that’s a lifetime. If your programmer is still developing your site in Classic ASP, it’s time to ask him why. ASP.NET is quicker to program in, has much more company and community support, and has a virtually endless amount of 3rd party companies writing software to integrate and improve the features and capabilities of it.

If your website is still using Classic ASP, it is now time to upgrade. If your developer is still suggesting Classic ASP over ASP.NET, it is time to get a new developer.