After working with ASP.Net Webforms for the past decade, the time has come to move on. I have enjoyed using Webforms and I was pretty good at bending ASP.Net to my will. Having recently tried some newer web frameworks I find that I am more productive than ever before. Over the past couple of years I have dabbled with ASP.Net MVC, jQuery and even WebFormsMVP but none of them truly held my interest for long. I never felt like they really offered solutions to problems that I was worried about. Because of my involvement with DotNetNuke, and the fact that it relies heavily on Webforms, I found that I couldn’t justify the use of some of these technologies. Things like WebFormsMVP added too much friction to the way I was used to working. ASP.Net MVC couldn’t really work in any meaningful way with DotNetNuke. And jQuery was a nice add-on, but it didn’t fundamentally change the way I developed modules.
With the advent of AJAX, web developers had a powerful tool in their arsenal which allowed them to change just those portions of the screen which needed updating. This technique provided the basis for delivering a more desktop like experience to users and throughout the last decade you have seen this approach fully embraced by web-developers.
Even while AJAX was gaining prominence on the web, another major shift was happening in application development. Software engineers found that they could craft more flexible, robust and maintainable applications by adopting software practices which emphasized a clean separation between application data, application presentation and the business rules which drive the application. Several popular development patterns like Model View Controller, Model View Presenter and, more recently, Model View View Model have been used to facilitate this separation. These patterns were quickly adopted for web development but were primarily used in server side development.
Client-side MVVM pattern
This article is cross-posted from my personal blog.