ASP.NET 2.0 takes away from the code-behind model

Much has been said about ASP.NET code-beside vs. code-behind when the PDC preview of Whidbey (err, VS2005) rolled out. At the time, if memory serves, the IDE added support for code-beside and seemed to deprecate the code-behind model. The outcry from developers missing code-beside centered around the ability to check code for compile errors prior to deploying the application.

The VS.Net team listened and, as of the May 2004 CTP release, brought back the ability to run a "compile" check against a web application. I put the word "compile" in quotes because no output assembly is actually generated, and therein lies one of the problems.

The deployment story of ASP.NET applications has taken a small step forward and a large step back. While it is now possible to precompile and deploy the entire web application (code and markup), it no longer appears possible to have the IDE compile just a code assembly while leaving the markup files intact and editable. The former solves the IP problem for those cases when one wants to protect the application from tampering; the latter allowed for true separation of code from layout markup. The developer used to be able to compile and deploy the application, and at a later time it was possible to make markup (or verbiage) tweaks and fixes without going back to code. It also enabled certain skinning scenarios like one I architected at work. It is beyond me why the VS.NET team chose to remove this feature from Whidbey.

Another big problem I see with ASP.NET development in Whidbey is the dumbing down of the web page code editing model. In VS.NET 2002 and 2003, one could employ a fully OO model to develop web sites. In 2005 timeframe, it looks like we are being given partial classes and editor magic and having the true power of the framework taken away from us. This is the proverbial "dumb VB approach" and again, I just don't get it. Yes, its great to be able to have a partial class with just my code and none of the declarative UI crud. But why take away the ability to build page object hierarchies? Why discourage the use of namespaces?? I may buy the argument that this direction is appropriate for the Express line of products, but the Architect edition should be geared towards enhancing the productivity of developers who build LARGE, COMPLEX applications, not dumbing down their world to make building their personal web site simpler.

Note: I realize that the framework still allows for these scenarios. It is the IDE I have the problem with, which used to enble them and no longer does.