Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Composite WPF applications with Prism

Más Contenido Relacionado

Audiolibros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo

Composite WPF applications with Prism

  1. 1. Composite WPF with Prism
  2. 2. План Зачем нужны модульные приложения? Модульность с помощью Prism
  3. 3. Зачем нужна модульность? Слабое связывание, driving app to DIP Система плагинов Уменьшение влияния одной части системы на другую Параллельная разработка Performance / memory usage
  4. 4. Typical composite application
  5. 5. Starting the composite application development
  6. 6. Shell
  7. 7. Shell Ближайший аналог - master page в ASP.NET UI элемент верхнего уровня (Main window) Определяет верхний уровень структуры UI и placeholder’ы для контента (регионы) Не знает и не имеет прямых зависимостей от модулей Создаётся и показывается bootstrapper’ом Находится в исполняемой .exe сборке
  8. 8. Bootstrapper
  9. 9. Bootstrapper Ответственный за инициализацию Инициализирует компоненты Prism Находится в исполняемой .exe сборке Создаётся и запускается в OnStartUp App.xaml.cs
  10. 10. Bootstrapping process Создание и конфигурация каталога модулей Создание и конфигурация IoC контейнера Конфигурация регионов Создание и инициализация Shell Инициализация модулей
  11. 11. Region
  12. 12. Region Placeholder для загрузки других элементов UI в Shell Доступны через IRegionManager View injection View discovery Prism navigation API
  13. 13. View injection <ItemsControl RegionManager.RegionName=’’ToolbarRegion’’ /> ContentView view = ... IRegion contentRegion = regionManager.Regions[‘‘ContentRegion’’]; contentRegion.Add(view); <ItemsControl RegionManager.RegionName=’’ContentRegion’’ />
  14. 14. View discovery <ItemsControl RegionManager.RegionName=’’ToolbarRegion’’ /> regionManager.RegisterViewWithRegion(‘‘Co ntentRegion’’, typeof(ContentView)); <ItemsControl RegionManager.RegionName=’’ContentRegion’’ />
  15. 15. Module Набор логически объединенных UI элементов, сервисов, данных Набор общих компонент Могут разрабатываться и тестироваться независимо друг от друга Могут находится в разных сборках Зависят друг от друга через абстракции
  16. 16. Module catalog Объявление списка всех доступных модулей Порядок загрузки модулей Зависимости между модулями Может задаваться в коде, xaml, config файле или загружаться из директории
  17. 17. Module interface IModule { void Initialize(); } Регистрация маппингов в IoC container Начальная конфигурация
  18. 18. Общение между компонентами Общие сервисы Event aggregator / event bus
  19. 19. Event aggregator
  20. 20. Event aggregator Используется для коммуникации между слабосвязанными компонентами Pub/sub модель События строго типизированны
  21. 21. Event public class SymbolSelectedEvent : CompositePresentationEvent<string> { } Чаще объявляется в общей сборке для возможности кросс-модульного использования Наследуется от CompositePresentationEvent<T> T - тип полезной нагрузки, передаваемой подписчикам
  22. 22. IEventAggregator class SymbolsViewModel(IEventAggregator aggregator) { aggregator.GetEvent<SymbolSelectedEvent>(). Subscribe(SymbolChanged); } Регистрируется в IoC контейнере на этапе bootstrapping’а DI через конструктор

×