Разработчики) | Microsoft |
---|---|
Стабильный выпуск | V1 в .NET Framework 4.0 / 12 апреля 2010 г . |
Предварительный выпуск | V2 Preview 5/19 декабря 2011 г . |
Репозиторий | github |
Написано в | .NET языки |
Операционная система | Окна |
Платформа | .NET Framework |
Тип | Фреймворк веб-приложений |
Лицензия | Лицензия MIT [1] |
Интернет сайт | документы |
Managed Extensibility Framework ( MEF ) - это компонент .NET Framework 4.0, предназначенный для создания легких расширяемых приложений. Его цель - позволить разработчикам приложений .NET обнаруживать и использовать расширения без необходимости настройки. Он также направлен на то, чтобы позволить разработчикам расширений легко инкапсулировать код и избегать хрупких жестких зависимостей. Кроме того, он нацелен на повторное использование расширений в приложениях. MEF был представлен как часть .NET 4.0 и Silverlight 4 .
Обзор [ править ]
MEF направлен на решение проблемы расширяемости среды выполнения. Без MEF любое приложение, которое хочет поддерживать модель плагина, должно создавать свою собственную инфраструктуру с нуля. Эти плагины часто зависят от приложения и не могут быть повторно использованы в нескольких реализациях.
- MEF стремится предоставить хост-приложению стандартный способ раскрытия себя и использования внешних расширений. Расширения по своей природе могут повторно использоваться в разных приложениях. Однако расширение все еще может быть реализовано способом, зависящим от приложения. Сами расширения могут зависеть друг от друга, и MEF стремится убедиться, что они связаны друг с другом в правильном порядке, избавляя разработчика от необходимости делать это вручную.
- MEF предлагает набор подходов к обнаружению для приложения, чтобы найти и загрузить доступные расширения.
- MEF позволяет помечать расширения дополнительными метаданными, что упрощает выполнение запросов и фильтрацию с расширенными возможностями.
Дизайн [ править ]
Грубо говоря, ядро MEF состоит из каталога и CompositionContainer. Каталог отвечает за обнаружение расширений, а контейнер координирует создание и удовлетворяет зависимости.
- Первоклассный гражданин MEF - это класс ComposablePart. Составная часть предлагает один или несколько операций экспорта, а также может зависеть от одной или нескольких внешних служб или операций импорта. Составная часть также управляет экземпляром, который может быть экземпляром объекта данного типа (он находится в реализации MEF по умолчанию) [ требуется пояснение ] . MEF, однако, является расширяемым, и могут быть предоставлены дополнительные реализации ComposablePart, если они соответствуют контрактам на импорт / экспорт.
- Каждый экспорт и импорт имеют Контракт. Контракты - это мост между экспортом и импортом. Контракт на экспорт может состоять из дополнительных метаданных, которые можно использовать для фильтрации при их обнаружении. Например, он может указывать на конкретную возможность, которую предлагает экспорт.
- Контейнер MEF взаимодействует с каталогами, чтобы иметь доступ к составным частям. Сам контейнер разрешает зависимости части и предоставляет экспорт во внешний мир. Экземпляры составных частей могут быть добавлены непосредственно в контейнер.
- ComposablePart, возвращаемый каталогом, скорее всего, будет расширением приложения. Он может иметь импорт (зависимости) от компонентов, предлагаемых ведущим приложением, и, вероятно, экспортировать другие.
- Реализация составной части MEF по умолчанию использует метаданные на основе атрибутов для объявления экспорта и импорта. Это позволяет MEF определять, какие части, импорт и экспорт доступны через обнаружение.
Ссылки [ править ]
Внешние ссылки [ править ]
В Викиучебнике есть книга на тему: .NET Development Foundation. |