Working around the worst of the .Net 1.x years
I came across this post on our link blog by K. Scott Allen, where he details the worst of the .Net 1.x years now that .Net 2.0 is on the horizon. #3 on his list is the tight integration of Visual Studio and IIS, if you’ve ever created a web application using Visual Studio, you’ll understand right away some of the gripes that he points out, including FPSE, security issues, versioning, and disappearing folders. I know that for me, learning .Net was made much more difficult having to overcome the exact problems that Allen describes, and I think that it does the developer a disservice by hiding them from the inner workings of how a .Net web app works, with the assemblies, the bin directory, etc.
The way that I make my web apps now is so much simpler. I don’t create a web project in Visual Studio, instead I simply create a class library solution, very plain, no extra directories, references, no nothing. Then I open Dreamweaver (actually VWD Express lately) and use that editor to create/modify my .aspx files. This way I can compile my code into a .dll, copy the .dll into my web apps bin directory, and I’m all set. This gives the developer more control over the build process, versioning, and it forces more understanding of how asp.net works. I’ll admit it slows you down at first because you cannot hit F5 and run your web app, but it pays dividends in the long term by affording the developer the control, rather than delegating the control to VS. Another benefit of developing in this fashion is that I can actually not use VS at all if I don’t want to. I use nant to build my projects anyways, so I have completely decoupled any dependance on VS to manage my project at all, which is important to me.
I guess my point is that I agree with Allen that the tight coupling between VS and IIS is not good, (VWD Express does an excellent job however), but by having a deeper understanding of how an asp.net application works, you can easily work around the shortcomings of the development environment.