Appendix A. MVVM Frameworks
By Muhammad Shujaat Siddiqi
The XAML community has been blessed with extraordinary developers who are always willing to volunteer their time. There are a myriad of MVVM frameworks available and it is a tough decision which one to choose from. This is because it is such a core architectural decision that it is nearly impossible to change the underlying framework in later stages of development without extreme risks. Here, MVVM Light Toolkit is our personal favorite.
Name |
Author |
License |
---|---|---|
MVVM Light Toolkit |
Laurent Bugnion |
MIT |
Prism |
Microsoft Patterns and Practices Team |
Microsoft Patterns and Practices License (Custom) |
Calcium |
Daniel Vaughan |
BSD |
Caliburn |
Rob Eisenberg |
MIT |
Cinch |
Sacha Barber |
MS-PL |
Catel |
Geert Van Horrik |
MS-PL |
As a guideline, we should be looking at how any particular framework will help us in incorporating MVVM in our design without sacrificing other enterprise architecture design requirements. We should also look at how loosely coupled it is with its own features. If a framework supports all these features but it forces you to use a particular Dependency Injection mechanism then you would definitely have to think about it. This would also help us in picking and choosing different features from different frameworks. It would be easier if they allow such choices. The base feature set to look for is as follows:
INotifyPropertyChanged Implmementation (for base view model)
ICommand Implementation
Messenger (Mediator)
Dialog support
Validation (for base view model)
Supported platforms (WPF, SL, WP, WinRT)
Project templates and quick starts
Documentation and active online community
In addition to the preceding features , these frameworks have also been incorporating other features (for example, logging) in order to be a complete enterprise application framework. You can also use those features when comparing these frameworks but since they are not particularly related to MVVM, we haven't discussed them here.