I've just got back from a long and big project with one of our customers for whom we have created an elaborate S(ales)F(ource)A(utomation) application. I'd say it's not an application, but a system that involved an enterprise wide integration with the existing systems as well as the client running on Windows Mobile device and Tablet PC's. During the development of the project we have used the MVC pattern that I described in the posts a while ago:

http://blogs.msdn.com/priozersk/archive/2007/08/06/implementing-mvc-pattern-in-net-cf-applications-part-1.aspx

http://blogs.msdn.com/priozersk/archive/2007/08/07/implementing-mvc-pattern-in-net-cf-applications-part-2.aspx

This pattern was just slightly updated with the addition of the IModel interfaces which are managed from the Controllers and it worked pretty good for us considering the fact that we were sharing the same code files for mobile and desktop projects.

Nevertheless the usage of this pattern left some sour feeling in my mouth, because of the amount of manual coding that had to be done for each screen in the application: custom IView, Controller, IModel and implementation for each of those. So I came out of this project convinced more than never before that something must be done to improve the lives of mobile developers and decided to take the matters in my own hands and create MVC Framework which should be light and functional enough to satisfy the needs of the mobile development. I’ve taken a closer look at the MVC Framework for ASP.NET guys had been working on. Although this framework is suitable for ASP.NET development only I liked the way they used the ViewDataDictionary to pass the data between a different layers and thought that this could be a good approach for the MVC framework for WinForms as well. So I spend a weekend and have got some working code which I would like to present to a few of my loyal readers and open a discussion on the approach I am taking, validate if this framework would work for other scenarios that you can come up with. I am also planning to create a project on the CodePlex so that anybody could contribute to it. In the next few posts I will try to explain design of the framework.