Choosing an MVVM Framework
|August 27, 2011||Posted by david under Programming|
I have recently begun planning a new project, and I needed to do all the standard pre-project decision making on build runners, test frameworks, continuous integration tool, IoC, and since it was going to need a UI, an MVVM framework. These decisions are usually quite quick since I tend to reuse the same things I used for my last project. However, every so often I take the time to evaluate the field of choices.
In the project, I had re-evaluated my source code control (moving back to github from Kiln). I changed my build runner from MSBuild to psake, and added Nuget as a tool in my build process. In what was the most time intensive change, I changed my CI tool from from Hudson to Jenkins. I say this was time intensive, because it is still an ongoing issue for me. I wanted to move to TeamCity, but it would require me to restructure my projects to use less solutions that were chunkier (many more projects), instead of preferred model of more specialized solutions. This is because of the build configuration limit on the free version (20). I am still rethinking this, so who knows.
This process repeated for most of my baseline tools, and then came the choice for the MVVM framework. I have been a long time user of Caliburn.Micro since it delivers the functionality I want, is lightweight, works in WPF, Silverlight, and the Windows Phone 7. However, I hear good things about the MVVM Light Toolkit (I even used it earlier on), and Cinch. I know there are more, but those I hear about most often. So I started looking around, and found Jeremy Alles MVVM Chooser App. This was a great launching point to see the different frameworks that are our there.
I spent some time going through the different frameworks, and came back to Caliburn.Micro. While familiarity was a contributing factor, I keep coming back to CM just matching my style for working with MVVM. I have not found anything I needed to do, that I could not do with CM. So CM once again makes the bar for me.