Designing an extensible XAML client application with WPF, Silverlight and Metro involves a lot more than just knowing how to load a plug-in interface to invoke some functionality. You need to be able to add whole new sets of functionality including a data model, logic, and views for presentation. And if you do it right, you should be able to do all that without disturbing or even changing any of the core application logic or other views. This session will show you how you can achieve that with a combination of the Managed Extensibility Framework (MEF), the MVVM design pattern, and a little bit of help from the Prism Framework. You will learn how to set up a little bit of base class infrastructure in the core application that can then be easily built upon with extensions. You'll see how you can plug in views and view models and model objects and still have those integrated with existing parts of the application they are plugged into, but in a loosely coupled way. You'll walk away with a baseline architecture and sample code for achieving it that will let you grow and extend your WPF and Silverlight client apps over time without needing to constantly crack open the core code and do surgery to add new features. You'll also see what the path to building similar applications in Metro looks like.
You will learn:
- How to define core application abstractions that let you extend your application from release to release
- How to use MEF to plug in new functionality
- How to use MVVM to dynamically compose views and view models in the main application without it having explicit knowledge of every view