Having read a great variety of forum and blog posts, I met a lot of misconceptions about ASP.NET that definitely made people to turn away from ASP.NET. I won't argue whether ASP.NET is better than PHP (or Ruby on Rails) or not, instead I'll try to bust those myths.
The common myths are:
- ASP.NET is slow
- ASP.NET produces non XHTML compliant code
- ASP.NET validators work in IE only
- ASP.NET produces dirty HTML code that is full of tables
- ASP.NET is only about drag-n-drop controls
- ASP.NET doesn't allow you to use any other databases except Microsoft SQL Server
- ASP.NET doesn't allow you to use friendly URLs
ASP.NET is slow
That is certainly wrong. This misconception is caused by dynamic compilation, when an ASP.NET application is accessed for the first time it gets compiled unless it wasn't pre-compiled before. This leads to a delay in page loading. However, the next requests are served much faster.
ASP.NET produces non XHTML compliant code
Wrong. In fact, ASP.NET since its 2.0 version produces XHTML compliant code.
ASP.NET Validators work in IE only
First, all ASP.NET validators perform server-side validation that is surely cannot be browser dependent. Second, client-side validation works in any modern browser.
ASP.NET produces dirty HTML code that is full of tables
Well, some ASP.NET controls really output the code that is full of tables, however due to the extensible nature of ASP.NET you can write your own adapters that will extend the current controls and make them produce clean tableless code. Actually, you don't need to write adapters yourself, there is already a good set of ones available for free download.
ASP.NET is only about drag-n-drop controls
No. Although Visual Studio allows you drag controls from the Toolbox in the
visual or in the source code, you still can write code yourself, IntelliSense helps a lot with that. Even if you use the drag-n-drop method and the visual tools, you still can see all the changes in the source view. Basically, those tools don't hide anything from you, they just generate the code that you can always view and modify.
ASP.NET doesn't allow you to use any other databases except Microsoft SQL Server
No. You can you any database that has a .NET provider. At the present time, you can find providers for MySQL, Oracle, DB2, PostgreSQL, Informix, Sybase, sqlite.
ASP.NET doesn't allow you to use friendly URLs
No. Just read some tutorials, for example, this one. There is also a module for IIS 7 that provides a mod_rewrite style of URL rewriting.
ASP.NET MVC Framework
If you want to have 100% control over HTML code, then you should definitely have a look at ASP.NET MVC Framework.
I think there are some more misconceptions. Anyway, if you already developer web sites with ASP.NET, then you are likely to know the truth, however if you develop web application with some other tools or want to start web programming, I recommend to take a closer look at ASP.NET. Sometimes, it is not a best option to read opinions on web forums that tend to be biased sometimes. You'd better visit some comprehensive resources, like www.asp.net and msdn.microsoft.com.