While I was doing the dishes today, I was thinking about the programming model of ASP.NET and the fact that I don't like it (just as don't like doing the dishes). The model it uses for developing web applications just doesn't feel right to me. Now I have to admit, that I don't have that much experience with developing ASP.NET applications, except some small projects with just a few pages. When I finished these projects, I had the feeling that I did a terrible job. The code is wrote is just not that maintainable as I want it to be. I think this feeling originates from the fact that the most important code of a web page is scattered all of the place.
Then I came up with using some presentation patterns like Model View Presenter. This approach results in a more testable design and a better Separation of Concerns. But still I am convinced that it's too easy to clutter up the code, as this approach requires a lot of self-discipline.
While I was reading my daily portion of blog posts, I came across some rants of another tormented soul:
- Can Microsoft's Developer Division Compete Moving Forward?
- Clarifying my Microsoft Developer Division Rant
Microsoft chose to shoehorn an event model onto the web and use a page-oriented implementation. Not only did they get the medium wrong, they also got the model wrong. And this decision resulted in an outrageously complex pipeline processing model with tons of code that is hard to debug or even understand, and that requires lots of high end developers to figure it out and repeatedly explain to newbies what they need to do just be able to do some of the simplest things, things that are brain-dead easy in PHP for example.
I'm glad that I'm not the only one who feels this way.
How can something like Open-Source PHP on Apache take on mighty Microsoft's ASP.NET and IIS, and win? Because they answer the right questions, and they did so in far less than a decade.
I can only agree that the open-source community does a much better job in providing innovating stuff than Microsoft does. A few examples are:
... just to name a few. Using these libraries makes me focus on the Domain Model, solving the real-world problems, instead of focusing on technology.
I think I'm going to keep an eye on MonoRail as it looks very good.
PS: I still believe that Microsoft is doing a great job with the .NET Framework: I find that WCF and especially WPF is very innovative.