beginning mef by Владимир Лисник

19
MEF Введение в Managed Extensibility Framework Владимир Лисник Software Engineer M. C. Dean

Upload: alex-tumanoff

Post on 15-Jun-2015

734 views

Category:

Education


1 download

DESCRIPTION

Введение в MEF

TRANSCRIPT

Page 1: Beginning mef by Владимир Лисник

MEF

Введение вManaged Extensibility Framework

Владимир Лисник

Software EngineerM. C. Dean

Page 2: Beginning mef by Владимир Лисник

Что такое MEF?

Инструмент позволяющий решать задачи плагинообразности

приложения

Page 3: Beginning mef by Владимир Лисник

Функциональные части

Композиция

Экпорты

Импорт

ы

Page 4: Beginning mef by Владимир Лисник

Импорт

// Импорт всех доступных расширений:

// Импорт одного расширения:контракт

контракт

тип расширения

тип расширения

точка импорта

точка импорта

Page 5: Beginning mef by Владимир Лисник

Экспорт

// Экспорт расширения:

контракт

экспортируемая часть

тип расширения

Page 6: Beginning mef by Владимир Лисник

Композиция

CompositionPart

CompositionPart

// Явная передача элементов композиции:

Page 7: Beginning mef by Владимир Лисник

Композиция

каталог

объект с точками импорта

// Ипользование каталога для композиции:

Page 8: Beginning mef by Владимир Лисник

Каталоги

AggregateCatalog AssemblyCatalog DirectoryCatalog * TypeCatalog DeploymentCatalog **

* Только в .NET Framework** Только в Silverlight

Page 9: Beginning mef by Владимир Лисник

Обзор архитектуры

// Ключевая концепция:

Page 10: Beginning mef by Владимир Лисник

Обзор архитектуры

(с) http://mef.codeplex.com/wikipage?title=Architecture&referringTitle=Documentation

Page 11: Beginning mef by Владимир Лисник

Где обитает?

System.ComponentModel.Composition.dllSystem.ComponentModel.Composition.Initialization.dll*

* Только в Silverlight

Page 12: Beginning mef by Владимир Лисник

PartCreationPolicyAttribute

// Экспорт:

// Импорт:

Page 13: Beginning mef by Владимир Лисник

Метаданные экспортов

// MetadataExportAttribute:

// Пользовательские атрибуты :

1.

2.

3.

наш атрибут (метаданные и

экспорт)

тип метаданных(все свойства

должны быть read-only)

Page 14: Beginning mef by Владимир Лисник

Доступ к метаданным

Lazy<T, TMetadata>

// Точка импорта:

// Работа с метаданными:

Page 15: Beginning mef by Владимир Лисник

Рекомпозиция

по умолчанию = false

Могут производить

рекомпозицию:

• AggregateCatalog (автоматически)

• DirectoryCatalog (вызвать Refresh)

• DeploymentCatalog (автоматически)

Page 16: Beginning mef by Владимир Лисник

Доступность

.NET Fra

mework

•Как отдельная библиотека в .NET 3.5•Поставляется в составе .NET 4.0•Доступен в .NET Framework 4 Client Profile

Silverlig

ht

•Как отдельная библиотека в Silverlight 3•Поставляется в составе Silverlight 4

Silverlight for Window

s Phone

•Не доступно

Page 17: Beginning mef by Владимир Лисник

Лицензия

MS Public License

(Проект с открытым исходным кодом)

Page 18: Beginning mef by Владимир Лисник

Ресурсы

http://mef.codeplex.com/ http://blogs.msdn.com/b/gblock/archive/tags/mef/ http://blogs.msdn.com/b/nblumhardt/archive/tags

/mef/

Page 19: Beginning mef by Владимир Лисник

Спасибо!