I think ASP.NET really fuckup big time. I tried at least 3 development projects with it, and I found the whole package doesn’t really speed up my development time, plus it’s no fun and excitement.
Page Controller Architecture Sucks
First of all, the Page Controller (or Model-View-Presenter) method used by ASP.NET 1.0 and 2.0 is so out-dated. Once you try your hand on Model-View-Controller (MVC), especially Ruby on Rail (I tried it more than a year ago, and still find it fascinating and refreshing), there is really no turning back. Personally, MVC increased both productivity and fun level by at least 50%.
Desktop Application Framework (and Controls) on Web Sucks
The thought of Microsoft trying to emulate desktop development framework (like VB6 with forms, controls and events) on the web really screw up the whole development experience. I hate the idea of the entire ASP.NET life cycle thing (which causes a lot of cannot do and inconvenience), and the event things doesn’t really work very well for dynamically created controls (you have to re-create the controls even though you don’t need them in order for the event to be fired, then you destroyed the controls and created new ones based on the event, which is a total waste of effort and processing cycle). And those damn controls are so bulky (generate a lot redundant HTML code) and take a lot of effort to customize, and none of the commercial controls out there is really outstanding (I tried Infragistic, it’s not really great). And the use of skin file for UI customization (such as color, padding, etc) is really not as good as CSS. Even though they try to remedy it with CSS Adapters, but it’s too late of a patch work.
Where is ORM?
Where is the Object Relational Mapping? I have to write damn lots of database helper class, write my own Model/Entity class and mess with even more SQL statements. I want the Model/Entity to be automatically generated, and all the common SQL command ready to be used as methods. And also some easy syntax to specify the relationship between models. They nearest they got is Strongly Typed Data Access (using XSD), which is too rigid and very difficult to customized.
Strongly-typed Variable is not too smart
I really like VB (and VB.NET), because they take care of the internal/implicit casting (some might argue it's bad, but it save time and it's right 90% of the time) for you (short, integer and long can be interchanged easily). C# is really a pain, where it demands you to do a proper casting (you can’t assign integer to long or vice versa). Too bad VB syntax is too lengthy, and C# is too damn strict (and not really smart). Scripting language is far superior in terms of speed of coding. I don't mind case sensitivity (make the code cleaner) and variable declaration.
Wastage of Processing Cycle
ASP.NET AJAX is really easy to use, but the solution is quite pathetic and really inefficient. Basically the AJAX called the entire page again but only refreshes a specific portion. In fact, the entire ASP.NET package is a good waste of processing cycles, especially for events.
There is hope!
The good news is, MVC is becoming popular on ASP.NET, with MonoRail and ASP.NET MVC in the picture (and comparison). MonoRail had been established since 2003, and ASP.NET MVC just started by Microsoft. Microsoft really has to nail this right, and I am afraid they have done too many wrong with ASP.NET. For ORM, maybe we can look into NHibernate vs. MS Entity Framework/LinQ (and comparison).
I like the .NET Framework, Visual Studio and C# (perhaps speed of development friendly. I do agree that VB.NET is really a developer's good friend, besides the lengthy syntax).I am not really a ASP.NET fan nowadays, but sometimes I am “forced” to work on it due to customer’s demand. I might explore these options next if the opportunities arises.