A couple months ago I participated in a friendly “smackdown” of MVVM frameworks at the North Texas Silverlight User Group. To sum up the exchange, I represented the Prism offering from the Microsoft Patterns and Practices group (which is awesome by the way for composite applications), Dave Yancey presented Jounce, Bonas Khanal presented MVVM Light, and Justin Weinberg presented Caliburn Micro. If you want more information about my provocative post title, you’ll need to get the context from my video in the list below.
Of course is not, it's more MVP / MVC - isch. I don't quite understand most projects insisting on using PRISM. why exactly does it give you in real life complex apps? due to view first nature of PRISM, sooner or later you end up abstracting views only to be able to unit test. Regions not supporting nested scenarios (to be honest they are via some nasty workarounds i.e. unique region name or scoped subregion), no view model lifecycle (I would not call IActiveAware handy as it requires to be implemented on the view, and view is responsible of passing activity status to view model). event aggregator? - without proper vm lifecycle it is tricky to know when to unsubscribe and the whole application will leak memory. Not to mention lack of a simple features like mvvm way of handling of dialogs. Every WPF / Silverlight project I had been involved that used PRISM ended up with some hairy framework built on top of PRISM "framework" that does not really make MVVM easier. Caliburn/Caliburn.Micro on the other hand is a different story. Once you have used viewModel first approach I don't think you would be tempted to PRISM. View model composition, advanced lifecycle management, handling of dialogs, will make your life easier...
ReplyDelete