Microsoft’s Biggest Mistake with ASP.NET

ppl-group-015I read this article from Rick Strahl, ASP.NET gets no Respect – Rick Strahl’s Web Log, and the comments that follow with great interest because just like Rick, I don’t understand why everyone isn’t using ASP.NET. It was while I was reading the comments that I think I finally got it.

Back in the day, microsoft and Borland both came out with a C++ framework for writing Windows applications. One looked a lot like the Win32 API that everyone was already using but suffered from not really being a good object model. The other had a great object model but suffered from being more difficult to understand. The one everyone already understood is the one that most people decided to use, even though it was a poor object oriented model. Technically superior or usable? Which would you choose?

Fast forward to 2002. Most of the developers at the time have been programming now for the web using primarily batch-processing-based language. PHP, ASP, Perl, to name some of the more popular languages of the time. Are any of these languages object-oriented? (OK, some are barely, but not like .NET or Java.) Are any event-based? And what does Microsoft give us? An object-oriented, event-based programming environment for the web.

This was great if you were an old-timer used to programming for Windows. But what if all you ever did was program for the web? This programming model is SO far removed from what most people think web development is supposed to look like that they drown in the “complexity” before they ever get to a point where they can appreciate the elegance and productivity it provides.

If you go read the comments on his post, you will see a list of several “problems.” Many of these “problems” people are having are because they just don’t understand how to use .NET.

For example, one problem someone mentions is that they have to wait for the compile process to complete before the web site comes up so you can test it. I guess they don’t realize that they can turn that feature off.

Others complain that trying to make the web page do “something out of the ordinary” gets complex and is a hack. But I would suggest that is only because they don’t understand the event model. Once you know what events fire when and how to tap into them, you can make the web page do anything you want.

Still others complain that the viewstate feature and the Page model bloat the application. OK, but you can turn off viewstate if you want and you can use JSON and MVC frameworks if you really want light. I would suggest though that it would be better to set up a web farm to handle the extra load (if there really is one) and just get the app up and running.

And yet another complains that visual studio is too slow. C’mon, man! Get a new computer. Anything less than 2 gigs for a developer is just CHEAP! It ain’t slow with the right hardware!

Some of the other problems are more religious in nature. Security, etc. There’s no helping that.

The real problem is that this model is so far removed from what most people understand web development to be that they have nothing to leverage as they learn this new model. That’s a real problem. Because it doesn’t matter how much better the platform is technically–if enough people don’t understand it, it is doomed.

Related Post

22 Responses to “Microsoft’s Biggest Mistake with ASP.NET”

  • Jacek:

    Uhm…I think you forgot the fact it only runs on Windows is one of the main reasons “not everyone is using ASP.Net”.

    there is a universe outside of Microsoft technologies, you know…

  • jbland:

    My problem with ASP.NET is that it tries too hard to enforce a _very_ leaky abstraction. HTML/CSS/Javascript are really not that difficult, but understanding the page lifecycle…

  • Dave:


    I didn’t forget. That falls under the category of “religious reasons.” Whic is the last thing I addressed in the post.

    I would maintain that your perception of leaky abstraction has more to do with it being designed to follow a desktop model of programming than it does with the actual framework itself.. something I also addressed in the post. All you’ve done with your comment is support my arguement that Microsoft failed to produce an abstraction that was familiar to the core of existing web developers.

  • Todd:

    It does run outside of Windows!

    Mono works fine on Linux, and there are plugins for Apache the handle ASP.NET pages, and from the browser end it doesn’t matter anyway.

    Granted, you aren’t going to have an easy time getting Visual Studio running on Linux (again, I point to you towards Mono) but ASP.NET does NOT require VS. Use inline code and you can use VI.

    Don’t get me wrong. I use both Windows and Linux and love both, and if you want to get the full “experience” from VS and ASP.NET then yeah, by all means, use Windows. But you are proving the authors point when you say it’s a Windows only technology. It means people don’t know enough about it, or have bought into the FUD.

  • shap:

    I think that MS made a pretty good attempt at unifying the desktop and web programming models. The real question is, should they have?

  • @Shap – To answer your question “should they have?” – What are your options if you are a traditional web developer? Lots. What are your options if you are a desktop developer transitioning to the web or you are someone who constantly lives in both worlds? Just ASP.Net.

    The difference is that with ASP.Net I can get as close to the metal as I want/need. With every other platform I am forced to pick one (or more) frameworks with varying levels of support, to get a fraction of the functionality that is provided out of the box with ASP.Net. In fact, if ASP.Net was so bad, why did the Java community create JSF, which is a poor attempt at providing much of the benefit that ASP.Net webforms developers take for granted.

  • Dave:

    Since this post is getting a lot of traffic and I’ve learned over the last year that not eveyone who visits this post is familiar with who I am (or what I’ve posted in the last year) let me just say…

    I love ASP.NET. I think it is the absolute best platform for developing web apps (once you understand how it works) This post is just an attempt to answer why so many people don’t feel the same way about it that I do. (or Rick does for that matter.)

  • I’m a seasoned ASP.NET developer and there are some facts we all should consider :
    1- not all ASP.NET applications are portable to Mono, only a few after some modifications.
    2- you may find cheap windows hosting but we are really missing Linux server capabilities and libraries (imagemagick, Cron, FFMPEG, …etc , feel free to name some essential libs!!, even the windows-complied versions of these libraries are out dated and missing a lot of features found on the *nix platforms)
    3- the community ! , Microsoft biggest enemy , check , only dozen of projects are active with a modest community around. on the other side Java and PHP have Millions of open-source projects and Millions of supports and users. just have a look on on #drupal on IRC.
    4- ASP.NET is suitable for office-like applications, reports ,charts blah blah blah, but once scalability is the criteria, you will find your self down grading to generic handlers (ashx) to overcome the aspx pages life cycle and viewstate. even MSDN is not using pure aspx !

  • One of the major reason that it did not catch on right away is because of the cost of web hosting. To share information and ideas ASP developer all had websites where they could demonstrate and show problems. ASP.NET hosting in the beginning was not only expensive but carried with it administration, security problems and costs that caught many shared hosting companies off guard. It was not a matter of just running a IIS web server and allowing connections to MS Access any longer. ASP.NET require much more care and knowledge for deployment also. It was no longer a matter of uploading a set of files and surfing to index.asp. When ASP.NET came along all of the things that made ASP simple, easy and popular just disappeared!

  • Dave:


    I don’t doubt your own experience. But, I’ve been hosting web sites since the Internet became available to the public. I’ve been hosting since ASP version 1 and I had an ASP.NET web site about as soon as anyone could expect after it became public. The service did not cost any more than my current ASP site.

    On the other hand if you had a cheap ASP service that ran everything as IUSR, than yeah, it probably took your host a bit more effort to get ASP.NET setup CORRECTLY. It probably FORCED your host to become more secure. Or at least woke them to the fact that they needed to be. Or, maybe your hosting company just used it as an excuse to raise prices?

    I’ve also installed ASP.NET applications on dedicated servers. I am honestly having trouble making any sense of your claims because even setting things up myself proves that it is no harder to setup ASP.NET correctly than it is to setup ASP.

    And don’t get me started on ASP being simple. I dread the day I have to maintain an old ASP site. Not that it has to be. But, the vast majority of code in ASP is a hack BECAUSE it is so “simple.” ASP.NET, primarily because it actually has some sort of architecture, forces structure and therefore makes it harder to write crappy code. You can write bad code in any language, but it is more difficult in ASP.NET than in ASP.

    And let’s not forget security issues. I’ve run into too many situations where the programmers I work with don’t even know what a SQL Injection attack or Cross Browser Scripting attack are, let alone how to prevent them. You have to really WANT to allow both of those in ASP.NET. Of course, if you try to write ASP.NET code like you wrote ASP code, you’re right, it is much harder. That’s because ASP is not ASP.NET.

    And that was the whole point of the post. Because ASP.NET is not ASP, people just don’t get it.

  • “And that was the whole point of the post. Because ASP.NET is not ASP, people just don’t get it.”

    This another point where Microsoft missed catching puting people on the bandwagon of ASP.NET. Calling it “ASP”.NET was a clear mistake. Because everyone then and many now believe that they are one and the sam because of the name and because they run on Windows IIS. If Microsoft had given the technology a completely different name like CLR.NET or SERVER.NET posibly even MSP.NET it would have made more sense during the adoption period.

    I am not saying that there were not any good IIS shared webhosts just that the industry on the whole was moving to the way of low cost hosting but with the release of ASP.NET and almost a requirement of having SQL Server 2000 that climate changed. This effected the thinking of many small businesses and web developers. If you remember hosting like DomainLX, there where hundreds of start ups just like that got toasted by ASP.NET. It was just too much trouble for the average start up host.

    What most don’t realize is that LAMP is popular not because they it is free. But because they are available to all down to the lowliest hobbyist in the basement. This is much the way that ASP was before. Not only that but there was so much of ASP and now PHP that could be commited to memory. ASP.NET is too intensive and expansive. So even though many can code using notepad.exe it is just not comfortable. ASP.NET is not scripting.

    You only have to look at the web development world today and see just how important “scriptablility” is when it comes to popularity. ASP with javascript and vbscript, Perl, PHP, Ruby all had their heyday or became popular because of their ease of use via scripting. People like making web pages with them. But others like Java, Python, C#.NET VB.NET people just don’t get excited about. While the languages themselves enjoy great success they are just too high maintenance for building websites with quickly and repetatively and like it or not most are too lazy to want to get involved with them.

    This leads me back to the belief that ASP.NET will gain popularity again if Microsoft does two things. One: make sure that the ASP.NET MVC project gets more than enough support. Two: Bring Jscript.NET out of the closet and make sure that it is the premier scripting language for Silverlight and doing web only development. Doing both of these will bring back the “scripting” to ASP.NET and allow web developers to be “web” developers and not web/desktop hybrids wandering through 15,000 windows .NET library classes to find away to aliterate their HTML forms.

  • classicman:

    To me the biggest problem to switch from classic asp to is the framework itself: I should learn how they suppose I want to do things and bend to their way.
    OO everything is great but not for the quite simple tasks I have to implement on most web sites.
    Doing even the simplest things take much more effort so productivity gets badly affected, no gain at all!

  • Dave:

    ASP.NET was not targetted to hobbiest. It was targetted to corporations. So, to ding ASP.NET because hobbiest can’t use it is not quite fair.

    While I do know that there are a few corporations who are running LAMP. The majority are using either Java and/or .NET technologies.

    Why? Because they Aren’t scripting.

    Having said that, there ARE free development environments for both of those as well so that the hobbiest are not completely left out. Microsoft even provides a pretty fair free development environment now.

    Saying that .NET is too intensive and expansive is redicoulous. First, you don’t NEED to know all of it in order to use it. Second, since it is expansive, many of the extensions “linux libraries and features” mentioned above aren’t even needed. With the exception of CRON which I’ll grant would be REALLY nice to have, I can’t think of anything I can do in PHP that I can’t also do in .NET, including image manipulation and URL rewriting.

    I don’t think either MVC or JScript are going to help things. The problem is not the technology, it is religious preference and lack of education with regard to the framework. Adding MVC adds more framework that needs to be educated. JScript is just a language to help you access the framework.

  • Dave:


    Yes, you should learn how the framework works and bend to their way. This is good advice regardless of WHO’S framework you use.

    The biggest mistake most programmers make is that they expect whatever tool they are using today to work like the tool that they were using yesterday.

    I remember when ODBC came out. Everyone wanted to use it like dBase because that’s what the majority of the Windows programmers knew at the time. And then they complained that ODBC was slow.

    Once you figured out how to actually use ODBC the way it was designed to be used, it was actually pretty fast.

    I could point to other examples as well. Using Java as though it were C++. Using C++ as though it were C. Using VB.NET as though it were VB6. In every case you could get most of what you needed to do done but you always got stuck because the new thing was not the old thing. And in every case you would decide that “it is easier to do it the old way.”

    What separates the “hobbiest” from the “programmers” is that the programmers learn to work WITH the new technology while the hobbiest work AGAINST it. To say that creating an ASP.NET site takes longer than ASP only shows that you don’t understand ASP.NET (yet.)

  • [...] Microsoft’s Biggest Mistake with ASP.NET (Dave M. Bush) [...]

  • To prove a point and I will expand on this later. Is ASP.NET to complicated and large for scripting most websites answer yes. Test it for yourself.

    Classic ASP

    1. create a simple blog and guestbook application using only one index.asp document and using only a connection to a flat-file as a database.

    2. list the steps taken and the amount of times you have to leave your coding page to do anything else.


    Classic ASP

    1. create a simple blog and guestbook application using only one index.aspx document and using only a connection to a flat-file as a database.

    2. list the steps taken and the amount of times you have to leave your coding page to do anything else.

    Now compare your lists.

  • Philip:

    The primary reason that ASP.NET has not been adopted more is because it is too tied to windows. Else, it is technically very good.

    MS should have released a run-time environment which would have allowed ASP.NET to be deployed on Apache, Zeus etc.

  • Dave:

    False test.

    First, who uses flat files anymore. XML, sure. If you want to just limit it to a file other than a proper database, that’s another thing. But, then it makes the whole thing easier for .NET. Just store your data in a dataset and use the DataSet’s Save function to save to the hard drive and Load to retrieve it from the hard drive.

    If you did that in ASP, you’d have to write it out and load it and parse it on your own. Everything else is form fields.

    Why limit to just one page if the requirements are better filled using multiple?

    But, I will go you one better.

    Simple contact us form.
    Collect Name, email address, phone number and comment. Validate that all fields have some information in them. Validate for proper format of phone number. Validate for email address that looks like an email address. Mail results to a specific email address. Make sure the validations work via JavaScript on the client side and are also revalidated on the server side in case the browser has javascript turned off. And if the form needs to be redisplayed because the validation failed on the server side, make sure the information they orginally filled in is still in the fields.

    Written using nothing but what is available in the API of ASP or ASP.NET using however many ASP pages it requires. (ie, you can’t copy and paste this code from other existing code you have hanging around.)

    Time in ASP.NET 10 – 20 minutes.
    Time in ASP 20 – 40 minutes.

    I once did a form that had about 15 fields in it that was very similar to this. I spent about 80% of my 5 hours it took to code this implementing the state management.

  • [...] Microsoft’s Biggest Mistake with ASP.NET [...]

  • [...] Microsoft’s Biggest Mistake with ASP.NET Quiet interessting article about and what microsoft could do better. (tags: microsoft c# webdev) [...]

  • Todd Trimmer:

    Visual Studio *IS* Slow! It has nothing to do with the hardware and everything to do with it not multi-threading. Basic menu operations take forever to complete. I wouldn’t care if they took 4 times longer … just as long as they DON’T PRODUCE A WAIT CURSOR! Do it in the background! Stop halting my productivity completely.

    If pure Java IDEs can do basic tasks faster than Visual Studio, then Visual Studio *IS* the problem.

  • [...] model to most web developers and allows us to write light weight code.  See my post about why classic web developers have trouble with ASP.NET for a larger discussion on this topic.  Other than it being familiar, you might also use this [...]