12
Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition Максим Павловский twitter: @paulousky www.maxpaulousky.com

Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition

  • Upload
    wells

  • View
    66

  • Download
    1

Embed Size (px)

DESCRIPTION

Максим Павловский twitter: @ paulousky www.maxpaulousky.com. Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition. Отличия MEF от MEF for Silverlight. Введён класс CompositionInitializer - PowerPoint PPT Presentation

Citation preview

Page 1: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition

Максим Павловский

twitter: @paulouskywww.maxpaulousky.com

Page 2: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Отличия MEF от MEF for Silverlight

Введён класс CompositionInitializerПозволяет инициализировать объекты в любом месте программы, используя глобальный контейнер;

Класс DeploymentCatalogРеализует поддержку отложенной загрузки *.xap файлов и рекомпозиции сущностей;

Класс CompositionHostПринимает на вход каталоги, которые содержат сборки для создания композиции;

Класс ExportFactory<T>Используется для многократного создания экземпляров экспортируемых сущностей;

Page 3: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Динамическая загрузка XAP файловprivate void ComposeContainer(){ _aс = new AggregateCatalog(); CompositionHost.Initialize(_aс); CompositionInitializer.SatisfyImports(this);}

private void LoadXapFile(string url){ DeploymentCatalog catalog = new DeploymentCatalog(url); catalog.DownloadAsync(); _ac.Catalogs.Add(catalog);}

Page 4: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Динамическая загрузка XAP файлов

Демонстрация

Page 5: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Нововведения Prism 4

Подержка .Net 4 и Siverlight 4;Поддержка Mef контейнера;Поддержка Windows Phone 7;

Динамическая загрузка xap файлов

Page 6: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Алгоритм миграции на Prism 4 Mef edition

Изменения в ссылках внешние сборки:+ System.ComponentModel.Composition;+ Microsoft.Practices.Prism;+ Microsoft.Practices.Prism.MefExtensions;- Microsoft.Practices.Unity;- Microsoft.Practices.Composite;- Microsoft.Practices.Composite.Presentation;- Microsoft.Practices.Composite.UnityExtensions;

Page 7: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Алгоритм миграции на Prism 4 Mef edition

Изменяем namespace c Microsoft.Practices.Composite… на Microsoft.Practices.Prism… ;Убраем IUnityContainer из конструкторов и добавляем атрибут [ImportingConstructor];Добавляем использование атрибута [Export(typeof(<Type>))];Существующие ViewModel наследуем от NotificationObject для упрощения работы с INotifyPropertyChanged;

Page 8: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Алгоритм миграции на Prism 4 Mef edition

Для каждого модуля добавляем атрибут [ModuleExport(typeof(<ModuleType>))];Изменяем вызов RaisePropertyChanged на RaisePropertyChanged(() => <FieldName>);Переписываем Bootstrapper:

Перенаследуем от MefBootstrapper;Добавляем переопределённый метод ConfigureAggregateCatalog(), где регистрируем изначально доступные сборки;Инициализация модулей через каталог не меняется;Переопределяем метод InitializeShell(): Application.Current.RootVisual = (ShellView)this.Shell;

Page 9: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Алгоритм миграции на Prism 4 Mef edition

Следует избегать добавления Prism сборок в каждый *.XAP файл. Им следует выставить CopyLocal = False;

Можно воспользоваться add-on к Visual Studio Xaps Minifier

В ModuleCatalog следует использовать полное квалифицированное имя сборки: “<ModuleNamespace>, <ModuleAssembly>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”

Page 10: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Играция на Prism 4 Mef edition

Демонстрация

Page 11: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Полезные ссылки

Prism http://compositewpf.codeplex.comManaged Extensibility Framework http://mef.codeplex.comVS2010 add-on Xaps Minifier http://bit.ly/XapsMin;

Page 12: Использование  MEF  для разработки  Silverlight  приложений. Миграция на     Prism 4 MEF edition

Спасибо! Ваши отзывы будут очень полезны