Платформа управляемой расширяемости
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2022 г. ) |
![]() | |
Разработчик(и) | Майкрософт |
---|---|
Стабильная версия | Версия 1 в .NET Framework 4.0 / 12 апреля 2010 г |
Предварительный выпуск | Предварительный просмотр версии 2 5 / 19 декабря 2011 г |
Репозиторий | github |
Написано в | .NET-языки |
Операционная система | Окна |
Платформа | .NET Framework |
Тип | Фреймворк веб-приложений |
Лицензия | МОЯ лицензия [1] |
Веб-сайт | документы |
Managed Extensibility Framework ( MEF ) — это компонент .NET Framework 4.0, предназначенный для создания легких расширяемых приложений. Его цель — позволить разработчикам приложений .NET находить и использовать расширения без необходимости настройки. Он также направлен на то, чтобы позволить разработчикам расширений легко инкапсулировать код и избегать хрупких жестких зависимостей. Более того, он направлен на то, чтобы расширения можно было повторно использовать в разных приложениях. [2] MEF был представлен как часть .NET 4.0. [3] и Сильверлайт 4 . Позже с выпуском .NET 4.5 он был улучшен за счет добавления поддержки универсальных типов и введения модели расширения на основе соглашений. [4]
Обзор
[ редактировать ]MEF стремится решить проблему расширяемости среды выполнения. Без MEF любое приложение, желающее поддерживать модель плагинов, должно создавать собственную инфраструктуру с нуля. Эти плагины часто зависят от приложения и не могут быть повторно использованы в нескольких реализациях.
- Целью MEF является предоставление хост-приложению стандартного способа раскрытия себя и использования внешних расширений. Расширения по своей природе могут повторно использоваться в различных приложениях. Тем не менее, расширение все равно может быть реализовано с учетом особенностей приложения. Сами расширения могут зависеть друг от друга, и MEF стремится убедиться, что они соединены вместе в правильном порядке, избавляя разработчика от необходимости делать это вручную.
- MEF предлагает приложению набор подходов к обнаружению, позволяющих находить и загружать доступные расширения.
- MEF позволяет помечать расширения дополнительными метаданными, что призвано облегчить расширенные запросы и фильтрацию.
Дизайн
[ редактировать ]Грубо говоря, ядро MEF состоит из каталога и CompositionContainer. Каталог отвечает за обнаружение расширений, а контейнер координирует создание и удовлетворяет зависимости.
- Первоклассным гражданином MEF является класс ComposablePart. Составная часть предлагает один или несколько экспортов, а также может зависеть от одной или нескольких внешних услуг или импорта. Составная часть также управляет экземпляром, который может быть экземпляром объекта заданного типа (он есть в реализации MEF по умолчанию). [ нужны разъяснения ] . Однако MEF является расширяемым, и могут быть предоставлены дополнительные реализации ComposablePart, если они соответствуют контрактам импорта/экспорта.
- Экспорт и импорт имеют контракт. Контракты являются мостом между экспортом и импортом. Экспортный контракт может состоять из дополнительных метаданных, которые можно использовать для фильтрации при его обнаружении. Например, это может указывать на конкретную возможность, которую предлагает экспорт.
- Контейнер MEF взаимодействует с каталогами, чтобы иметь доступ к составным частям. Сам контейнер разрешает зависимости части и предоставляет экспорт внешнему миру. Экземпляры составных частей можно добавлять непосредственно в контейнер.
- ComposablePart, возвращаемый каталогом, скорее всего, будет расширением приложения. Он может иметь импорт (зависимости) от компонентов, предлагаемых хост-приложением, и, скорее всего, будет экспортировать другие.
- Реализация составной части MEF по умолчанию использует метаданные на основе атрибутов для объявления экспорта и импорта. Это позволяет MEF определять, какие части, импорт и экспорт доступны посредством обнаружения.
Ссылки
[ редактировать ]- ^ «МЭФ» . Гитхаб . 15 октября 2021 г.
- ^ Канджилал, Джойдип (7 июля 2016 г.). «Как работать с Managed Extensibility Framework в C#» . Инфомир . Проверено 25 июня 2022 г.
- ^ Проншинске, Митч (12 апреля 2010 г.). «Что нового в VS2010 и .Net 4?» . ДЗона . Проверено 25 июня 2022 г.
- ^ Фогель, Эрик (12 февраля 2010 г.). «Усовершенствования платформы управляемой расширяемости в .NET 4.5» . Журнал VisualStudio . Проверено 25 июня 2022 г.
Дальнейшее чтение
[ редактировать ]- Ликнесс, Джереми (2011). Основы управляемой платформы расширяемости (MEF) . Аддисон-Уэсли. ISBN 978-0132929400 .
- Верма, Ришаб (2020). Разработка расширяемости Visual Studio: расширение интегрированной среды разработки Visual Studio для повышения производительности, качества, инструментов и анализа . Апресс. ISBN 978-1484258538 .
- Харрис, Алан (2010). Pro ASP.NET 4 CMS: расширенные методы для разработчиков C#, использующих .NET 4 Framework . Апресс. ISBN 978-1430227137 .
- Нагель, Кристиан; Эвджен, Билл; Глинн, Джей; Уотсон, Карли; Скиннер, Морган (2010). Профессиональный C# 4.0 и .NET 4 . Джон Уайли и сыновья. ISBN 978-0470632536 .
Внешние ссылки
[ редактировать ]