ASP.Net:Coding in the Land of the Lost

I recently helped out on a ASP.Net project after doing projects in other Web Application stacks for a couple of years. And let me tell you it was painful. I haven't done any research into what Microsoft is promising in the next version to come out with Visual Studio 2008 but getting back into this stuff made my brain hurt.

I would tend to categorize ASP.Net development as abuse of your technical resources. The process is indeed painful for one reason or another. And it's a bit baffling to me why there is so much demand for it.

For example, the whole idea of Web Forms/Postbacks etc... which has it's roots in RAD development dating all the way back to VB6(revolutionary in it's time), is a common way to get something up and running quickly but you will hit a brick wall quickly as the complexity of the application arises. The idea of dragging and dropping a prebuilt component onto a form and writing code in your even handlers will get you up and running quickly.

A developer can be somewhat productive with this IF they have a decent IDE that supports it.

In VB6, Microsoft's officially endorsed solution was to use another language(VC++/ATL recommended) if you needed something crazy like threading. And then you would package it as an activeX component to be used in your sweet VB app. I don't recall there being any better solution at the time, so developers would just deal with it as a professional annoyance.

It seems to me that the capabilities of VB6 carried through to ASP.Net, but the tools for doing things that MS didn't think anyone would need are lacking is a recipe for frustration and headaches. Add to this that, there are choices out there that can do everything ASP.net does and then some. It often brings to question why am I doing this? And of course the answer is often "Because they pay me to do it..."

Outside of Microsoft the rest of the world pretty much regardless of language has settled on the idea of a true Model View Controller Pattern. Which gives you a true separation of data vs. presentation with a very flexible dispatching mechanism. The lack of an alternative dispatching mechanism is my main beef with ASP.Net. Without this a moderately complex Web Application will end up causing a lot of pages to be written, as well as possibly a lot of user controls, and some hand rolled method of communication between pages. The quality of which is solely dependent the abilities of the developer. The IDE won't help you at all with this.

The last time I had to write a dispatching mechanism on top of a bunch of webforms for something, it quickly got out of hand. The best approach it seemed was to write a fancy base class for it and have all your forms inherit from it. It quickly began to feel as if I had built this house of cards, and every statement I wrote could potentially bring the whole thing crashing down. For those that may be curious, it was a wizard like UI that coordinated data entry as a series of steps, which required that every page written have access to the state from the previous step, and have the ability to invoke other steps based on whatever criteria was applicable.

That was about 4 years ago. And it doesn't seem like anything has improved.I did some brief researching yesterday to determine whether Microsoft has an answer to the "My app is too complex for your Webforms paradigm" problem, there were mentions of some articles in Patterns and Practices, a blog post or 2 about someone writing something similar to Rails or some such.

In doing this research I came to realize, that Microsoft is inevitably competing with developers now. Take Nunit for instance. Nunit was modeled after Junit, and is pretty much the de-facto way of getting a unit test suite up and running. Microsoft of course acknowledges the value of unit testing but instead of embracing Nunit or the idea of Nunit, they have to come up with something new. It's always coming in the next version just hang in there. I suspect, something similar for web application stacks such as rails.

If I were to write an ASP.net framework based on those concepts found in rails(as if), best case scenario might be people will use it, I'd be famous, rich even. But more likely, it would put me in a position where I would be a competitive threat to MS, regardless of how successful it might be. Hey man, I'm just trying to do my job. remember? "DEVELOPERS DEVELOPERS DEVELOPERS!!!!!!!!!!!!!"

Still waiting for the Official Microsoft endorsed ORM by the way.

So what do I do? Well, for one, I play with things outside of the Microsoft technologies to expand my horizons, and get a different perspective on how to solve problems. Some day, someone might actually pay me to use those tools. My personal fave being turbogears, I could live with Django though. But as it stands right now, the work that I get PAID for often feels like I need to give myself a lobotomy so that I am somehow blissfully unaware of how I'm being tortured writing in an IDE that is good at what it does, but will fight you every step of the way a stray outside of the acceptable use cases that the IDE was designed to support. But don't worry, it will be different in the next version coming soon maybe this year, maybe next....

It's not just ASP.net by the way. The answer is the same for ....

  • Sharepoint, why use it when there's Drupal Joomla, Wordpress? They pay me for it
  • Why use IIS when Apache is much more flexible? They pay me for it.
  • Why write in C# when I can get it done with a 10th of the code in python? They Pay me for it
  • Why ? They pay me for it.

And a brothers gotta eat.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><p> <h1><h2><h3><h4><h5><h6> <img>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • E-Mail addresses are hidden with reCAPTCHA Mailhide.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.