September 26, 2010
Over the course of my career, I’ve always thought there was a better way to develop ASP.NET applications than the traditional style of developing web applications. In my past applications early on in my career, you could see my lack of understanding of applied design patterns. At first, I attempted to do sort of an MVC approach without the ASP.NET MVC framework (this was way before the framework opened up). What I really sought to do was to apply the MVP pattern; everything I really attempted to do either required too much work, became tightly coupled, and lacked the application of helpful design patterns. As I became to learn about the MVP pattern, I saw its usefulness from separation of responsibilities to reduction of code in the code-behind. The MVP pattern isn’t the end-all-be-all of design patterns. Certainly, if other patterns make sense, I would recommend it. But MVP is a great fit for ASP.NET web forms.
What I attempted to do is give a platform not specific to ASP.NET web forms, but one that could utilize the same UI across Silverlight, windows programming, and other environments. Additionally, I wanted to provide some web-specific features too so developers could take advantage of everything the web has to offer, if they so chose. Additionally, I took extra care to ensure loose coupling, swapping out functionality if you don’t want it, and other features.
Additionally, I sought to provide AJAX-like features like the ASP.NET MVC framework, such as give the users the ability to call a method on a presenter from client-side AJAX, provide action results that the view can execute (from server or client), and some other features. It won’t look quite like ASP.NET MVC, but the capabilities would widely open up the system. Not all of this is implemented in this later release (scheduled for October or November), but it will be hopefully a benefit to someone.
I’ll be posting some articles about this framework and how to use it. The flavor of MVP you choose (supervising controlller vs. passive view) is totally up to you; both are supported. I didn’t want to require a certain style of MVP form, but leave open flexibility in the system.