The Friendly Web Guys

The Jimmyweb Blog

ASP.NET is almost certainly the wrong technology for your website project

18th
September

2010

Posted by - under Developer, News 21 Comments

Often, when we are pitching for new website projects, one of the requirements specified by the client is that we build the site using Microsoft’s .NET (“Dot Net”) technology.

This request is a usually the result of the company I.T manager/CIO/ Systems Administrator/Consultant recommending a solution to stakeholders which they are familiar with.

In many cases, it is bad advice and should be ignored!

For simplicity’s sake, throughout the rest of this article I shall refer to your I.T Manager/CIO/Systems Administrator/Consultant as your “I.T Expert”.

.NET in a nutshell

In early 2002, Microsoft released their next generation of web application technology – the .NET framework. This superseded the old ASP (Active Server Page) technology which until then, had been Microsoft’s key technology for building dynamic, database driven websites and web applications.

.NET was not just an updated version of ASP – it was a completely rewritten, far more powerful and complex development framework which embraced the Object-Oriented approach to programming and introduced a new paradigm for building web applications using Microsoft technologies.

Since the initial launch of .NET, the framework has been improved, features added and more sophisticated tools for building and maintaining websites with .NET have been made available. The most notable of these being Microsoft Visual Studio, a complete IDE (Integrated Development Environment) for building websites with .NET

Your I.T Expert only knows Microsoft Technology

Before I begin, I want to make it clear that I am not implying that your IT Expert is incompetent. I will even go so far as to say that your IT Expert is possibly the best in their field and knows their technology inside out. (I also want to make it clear that this is not an anti-Microsoft rant, we use and love Microsoft products on a daily basis!)

The issue here is that most corporate I.T Experts administer predominantly Microsoft-based systems and technology: Windows Servers, Windows XP/Windows 7 Workstations, Microsoft Outlook, Microsoft Office (Work, Excel and Powerpoint), Microsoft Access Databases etc

They are often Microsoft-certified, are comfortable and familiar with the Microsoft technology, have a Microsoft rep who visits them regularly, they go to Microsoft launches, and generally live and breathe Microsoft on a day to day basis.

Thus, when called upon to provide their expert advice on a proposed website project, their immediate response is “built it in .NET”.

The problem here is that even thought your I.T Expert is very skilled in looking after corporate I.T environments, they most likely know very little about building and maintaining websites and web applications. It is just not a skill that is generally required by your I.T Expert.

The end-result of this is that companies spend a lot of time and money building web projects in .NET which could have been built faster, more cost effectively and with more flexibility using alternative technologies.

The problems with .NET

Overhead

.NET is very big and very powerful. It is used to build large corporate applications. This power comes with an overhead though. For most websites it is the equivalent of using a front end loader to move a few handfuls of dirt.

Expense

.NET applications usually use Microsoft SQL Server as the back end database. SQL Server is very powerful, and also very expensive. Again it is way more grunt than most websites/web applications need. It also requires IIS, Microsoft’s web server. This kind of hosting is more expensive, and performs less well, than its open-source counterparts.

Rapid Development

Modern web development is about fast, iterative development cycles. .NET is quite rigid and makes rapid development much harder. This leads to longer development cycles, overdue projects and blown budgets.

Search Engine Optimisation

The rigid structure of .NET makes Search Engine Optimisation harder to perform. Compromises often have to made in SEO strategies to accommodate the shortcomings of the framework.

Standards Compliant Code

It is difficult, if not impossible, to generate fully standards-compliant HTML using the .NET framework. If you care about good quality code, this becomes a real problem.

Javascript-based postbacks

.NET uses a mechanism called “Postbacks” for many of its interactive features. Unfortunately Postbacks require Javascript to be enabled in the browser using the site/application. This presents accessibility issues for internet devices without javascript and for disabled users.

Usability

Even though this is not directly a fault of the framework, for some reason .NET application are far more likely to contain critical usability problems. This is probably a cultural issue to do with the development tools and the developers themselves rather than the framework, but nonetheless it needs to be a consideration when building a website or web application.

Compiled Proprietary Code

.NET code for web projects is often compiled before deployment, with the source code being controlled by whoever originally developed the project. This essentially binds you to the vendor that built it. When you try to move to another vendor, often the original vendor will refuse to supply the source code.

Sometimes .NET is the right technology to use

There are some scenarios where the selection of .NET is appropriate. These would be situations where a website needs to integrate tightly with some kind of internal corporate systems which are built in .NET.

If this is your situation, then this could be a good reason to consider .NET. Although, even in this scenario, it is not a compelling reason. .NET makes exposing web-services very easy, so even when tight integration is required, this can be achieved through a web-service layer (which also adds a layer of abstraction and security between the website and the internal application).

Conclusion

We would encourage you to be sceptical when advised to use .NET for the purpose of building a website or web application project. In all likelihood this is not the right tool for the job.

Tags used in this post:
,

Share this post:
Share Share Share Share Share

21 Comments

gravatar

James Beattie says:

September 18th, 2010

And apparently there are major security problems with .NET as well: http://www.theinquirer.net/inquirer/news/1732956/security-researchers-destroy-microsoft-aspnet-security

gravatar

theshizzle says:

September 18th, 2010

ASP.Net is not for small web sites. It’s for medium to large web sites.

I was a java programmer and was faced with gearing new sites for a major company. My options were: Java/JSP, PHP, Coldfusion and ASP.Net.

Java/JSP isn’t even close to being web developer friendly(ajax, etc..). PHP can be unstable, it’s a horrible language for enterprise architecture and coldfusion was losing market share in the web industry.

We are company that requires to be PCI compliant by Visa/MasterCard/AMEX, etc…. We had a site on PHP, we upgraded PHP and it took down the site, there was absolutely no support at PHP to help us. One rule for PCI Compliance is to upgrade all systems within 30 days of a released vendor patch. We were facing a $50,000 fine per day for not being upgraded, luckily many other sites experienced this problem and php released another update days before we were required to be compliant. Therefore PHP is definitely not the answer for PCI Compliant required sites.

ASP.Net seemed to be the most reliable, robust and efficient solution for us. We can call microsoft for support, ASP.net has a single IDE (php does not.) Many major sites are converting to .net. Dot Net is being taught in many universities and private colleges as being the technology for the web. They do not emphasize on php because it is not an enterprise language which will mean many asp.net programmers will be available for higher. ASP.Net has rapidly gained market share on other programming languages in a short amount of time according to http://www.builtwith.com.

Yes programmers are expensive, yes software is expensive, but it’s worth the reliability for our business. And I must say I love programming in .net! I did not know any .net programming when I made my decision to choose .net for our company.

gravatar

Damen says:

September 20th, 2010

While I agree with the intent….I think this is a a bit rash and ill informed, unless you are just flame-baiting. You are making broad sweeping statements about the capabilities of people and technologies. You are basing your statements on a webforms based asp.net site, this is not the way that most professional asp.net website developers do it today. You can abstract the web layer out into standards compliant clean HTML just as you can with any other tech. The off-the-shelf and idiot guide book based examples of how to do .net are pretty abhorrent and there are some ugly sites out there built with .net. You need to actually dig a little deeper to find where the real value lies.

gravatar

Gav says:

September 20th, 2010

I’d have to disagree with a lot of points here.

Overhead – yes, the .Net framework is quite large, but computers are fast these days.

Expense – if you already run Windows, IIS is free. SQL Server Express is free (runs db’s up to 4Gb). Visual Studio Express is free. If you’re doing anything more enterpris-ey its probably worth shelling out for proper tools.

Rapid Development – “.NET is quite rigid and makes rapid development much harder.”. Not my experience at all. Can you expand on this?

SEO / Standards Compliant Code / Postbacks – These have always bugged me about ASP.Net. Doesn’t matter for intranet apps, but its a big deal for public facing sites. If these are important to you, take a look at the ASP.Net MVC framework. There’s no postback model and you have full control over the output – its a bit like writing with Rails or Django.

Compiled Proprietary Code – This is a contract issue. If you want the source code, ask for it. As a developer, I wouldn’t want to have to support an application where the client can change the source code at will.

I don’t mean to try and be a M$ fanboy, but ASP.Net is the best web framework I’ve used (out of Jsp, plain PHP, Django, Rails) and doesn’t deserve to be dismissed so easily.

Also, I agree that “I.T. Experts” have no place in recommending programming technologies. Every project is different and options should be evaluated accordingly.

gravatar

Vril says:

September 21st, 2010

I know about some bottlenecks in the ASP.NET development. But the biggest part of this post is the message from the sweet 2005.

Do you know something about ASP.NET MVC framework, SQL Server Express, .NET 4.0? I’m not sure…

gravatar

Thai says:

September 21st, 2010

I love Java but saying “ASP.NET is almost certainly the wrong technology for your website project” is incorrect I think.

“Java/JSP isn’t even close to being web developer friendly(ajax, etc..)”: don’t understand why it was said. If you use jsp alone, bring jQuery/YUI … to your jsp pages to ajaxify them. If you’re afraid of Javascript, then you can choose GWT from Google. Or if you want to stick with standards, use JSF and PrimeFaces.

I think ASP.NET is great if you have a window server, a ms sql server already.

gravatar

andanotherthing says:

September 21st, 2010

I too agree with a few of your points, ASP.NET may not be the best thing to use for small Mom and Pop type websites. .NET in general really requires a dev to know the framework quite well to use it effectively. But your facts are wrong on several cases here. And before you get any ideas about me know that I have created websites in everything from Perl to Python/Django/AppEngine to Ruby to C++ CGI to .NET, I use whatever the client wants me to use or whatever their environment affords me. I figure the bigger my toolbox the more money I can make – that simple.

.NET by no means requires the use of SQL server. It can run on various database backends, or non depending on the customer need. SQL server does NOT require IIS to run at all. And SQL Express is free and supports databases up to 4GB. But, you can just as easily use MySQL, Oracle, PostGRES, SQLite, XML files, whatever.

ASP.NET webforms are not great, but as far as rapid development I would have to greatly disagree with you. Someone who knows the framework can crank out sites just as fast using .NET as anyone else, just a matter of knowing your tools. And ASP.NET MVC is an excellent alternative which makes it even faster to develop sites that are fully compliant.

Compiled code doesn’t have to be that. The deployment model of the site will dictate whether you need binary deployment and compiled DLL’s or not. And regardless of choice, the code is available to the client if they want it, the code files are almost always deployed inline with the markup.

As stated, I agree with you on some points but not all. Prior to posting such blog entries it would behoove you to verify your facts first.

gravatar

john says:

September 21st, 2010

When discussing ASP.Net for web development these days, you really need to clarify whether you’re talking about Web Forms or MVC. It seems you’re talking about web forms. MVC addresses most of your “Problems with .Net”. And as far Expense goes, you don’t need to use Sql Server as your DB. You can use MySql, Postgres or whatever you want.

gravatar

Luciano says:

September 21st, 2010

It’s fun to read in the comments that Java/JSP is bad and that it’s not a good framework. JSP is NOT a framework. There are a lot of web frameworks in Java (and in PHP), just look around. Maybe there are too many. It’s unfair to compare ASP.NET WebForms or MVC to plain JSP/PHP.

There is something in common between ASP.NET and Java, though: their companies created some technologies like WebForms and J2EE/JSF that weren’t appreciated by developers due to many errors in their architecture. Then the community started to create alternatives (like Spring in Java and MVC in ASP.NET) and things got better. Unfortunately that means that the best solutions are not in the “standard toolbox”: we must look around and search the best tool for ourselves.

gravatar

Gernot says:

September 21st, 2010

I agree with all your points. I have quite some experience with .NET (started a very large business application as the lead developer with .NET 1.0 in 2000). I’m also experienced with Rails (fulltime working with Rails since 2007) and we are currently rewriting our large .NET based app (20 man years development) with Rails.

Our first tests show that Ruby and Rails are able to handle the massive workload and the complex business logic easily. We are writing a fraction of the code to achieve the same and we are so much faster than with .NET.

Ruby has so much power – in fact it’s the most advanced and modern language I’ve been working with and I’ve used a lot – and Rails is a great framework that is still miles ahead of anything else I know. ASP.NET MVC is in fact Rails 1.0 rewritten in C#, but it lacks the elegance of a dynamically typed language (still far too much code to write) and featurewise it is where Rails was years ago.

Add to this the great ecosystem around Ruby and Rails with tons of nice gems (plugin components) of very high quality and you might never look back :-)

gravatar

sellingerd says:

September 21st, 2010

I think you underestimate the role of IT. I would say that the IT manager should have nothing to say if your application runs on its own server and you are doing all the day-to-day administration of that system. If the IT department has to keep the machines and applications working, they should be able to have a say in how the applications are developed.

If IT is responsible for keeping an application working, it should have a say in the underlying technology.

gravatar

OnName says:

September 21st, 2010

From what i can see, you’re equating ASP.NET with Webforms. Apart from expenses, non of the other points made apply to MVC. And event the development cycles thing isn’t anything to do with ASP.NET. A badly managed project is badly managed regardless of the framework or development “Philosophy” used.

gravatar

James Beattie says:

September 21st, 2010

@sellingerd Ideally that would be true, but in most companies these days the IT manager is an integral part of the decision making team. So if they automatically advise “it needs to be built in .NET” as a starting point, the other decision makers in the organisation should be sceptical. At least until a more compelling reason than “all our other technology is Microsoft, thus we should do our website in .NET” is supplied.

gravatar

OnName says:

September 21st, 2010

@James Beattie,
“all our other technology is Microsoft, thus we should do our website in .NET” is supplied.” is actually a perfectly compelling reason from a human resources point of view. If you have a team of 20 .NET developers and then you go rogue and do something in Ruby and you then leave the company, the company is then left high and dry.

gravatar

Raj says:

September 21st, 2010

Asp.net has lot of good features..which i like also now a days, I cannot find much difference between windows and linux packages price.

All technologies have it own pros and cons..and it is 100% right that corporate world like to go with a product which is supported by an organization like Microsoft. They are bit reluctant to go with Open Source technologies like PHP and MYSQL…

gravatar

ringerc says:

September 22nd, 2010

IMO it’s a difference between “website” and “webapp”.

If I’m building a significantly static site, or one where the site isn’t interacting with other business systems, data sources, etc, I’ll be interested in RoR, PHP, etc.

If I’m building what’s really a web app, with integration with business systems, multiple data sources, etc, then I’ll want to look at JavaEE6 or .NET . Personally I lean toward JavaEE 6 & JSF2 despite its immaturity, as I don’t like being tied to Windows servers.

gravatar

remi bourgarel says:

September 22nd, 2010

I totally agree witht the title of your article but the content is really poor :
1/ You’re talking about webforms which is a part of .net technology (as far as I heard, asp.net mvc is really good)
2/ You dont give any exemple, you’re very vague “NET is quite rigid and makes rapid development much harder”, why is it rigid ? I use .net with Monorail framework and it’s really easy to build something in a day.
3/”NET applications usually use Microsoft SQL Server as the back end database” This is absolutely wrong, you can use mysql, oracle or whatever DBMS you want with .net , no problem with that.
4/ “Compiled Proprietary Code”, false also : you can publish your .cs files “there is “web site” and “web application”. But it’s better to publish a web application, the build time is better when you update your site. And when you buy a website there is always a clause in the contract if the code source is open or not (It’s really strange , if you work in this industry that you don’t know it).
5/”Javascript-based postbacks” also false, asp.net controls works pretty well with javascript disabled.
6/”Standards Compliant Code” give exemple.

But I agree webforms is maybe the worst solution to design web application :
- we can’t handle the html output so it cause a lot of problems (like css selector or dom manipulation are hard to make)
-black box : you don’t know what the hell is happening and why your site is so slow (mainly because of viewstate)
-page life-cycle , I really complex , tons of event and for each particular thing you have to find the right one (I think no one in the earth understand well the page life-cycle).
-false MVC : the code behind have to do some view job because webform controls are really poor.

Please know your stuff before posting.

gravatar

mark says:

September 22nd, 2010

Last I checked facebook.com ran PHP – That’s not enterprise enough for you? Please tell me how PHP isn’t ready for any size project?

gravatar

Chad Braun-Duin says:

February 11th, 2011

I agree with this article. I just finished a similar post where I argue that Viewstate in traditional ASP.Net webforms applications is the only technical reason for using .Net. Even so, Viewstate causes its own problems and limitations.

http://chadbraunduin.blogspot.com/2011/02/why-aspnet.html

gravatar

Saeed Neamati says:

June 10th, 2012

I believe that with introduction of MVC and WebMatrix, many problems you mentioned might (I repeat, might) be solved. I think Razor can beat PHP in future, provided that Microsoft work on other areas too.

gravatar

Amara says:

June 12th, 2012

I find if it is a small site to mid site it is fairly quick to make it in asp.net. Basic functionallity can be done just without any code, just drag and drop using VS2010 or so.
Regarding security issues, asp.net by default encode the user input avoiding code injection and sql injection issues. No need to worry about magic_quote on or not.
Only issue is the cost. If it is a smalll site ok, But no body has built a site of the scale like Google, Yahoo, Facebook with asp.net becasue the cost can sky-rocket as the project gets complicated. At least Microsoft has come up with $300 web edition of the server. (Probably due to the compitition with apache )
Even though I am fan of asp.net, my next project has to be done with PHP / Apache due to the cost issues.

Leave a Comment