Подход к конфигурированию MEF без использования атрибутов
Подход к конфигурированию MEF без использования атрибутовПодход к конфигурированию MEF без использования атрибутов
______________
______________
✅ ️Наши контакты (Telegram):✅ ️
✅ ️ ▲ ✅ ▲ ️✅ ▲ ️✅ ▲ ️✅ ▲ ✅ ️
______________
______________
Подход к конфигурированию MEF без использования атрибутов
Подход к конфигурированию MEF без использования атрибутов
Работа с составными компонентами
Подход к конфигурированию MEF без использования атрибутов
Знакомство с MEF
Подход к конфигурированию MEF без использования атрибутов
NET 4 Framework предлагаются две технологии для написания гибких приложений, которые динамически загружают дополнения. Одной технологией является MEF Managed Extensibility Framework — управляемая платформа расширений , вторая технология, доступная, начиная с. В ней используется канал pipeline для коммуникаций между дополнением и приложением-хостом, что делает процесс разработки более сложным, но также обеспечивает разделение дополнений по разным доменам приложений или даже разным процессам. В этом отношении MEF является более простой из двух технологий. MEF состоит из частей и контейнеров, как показано на рисунке. Контейнер находит части в каталоге. Каталог находит части внутри сборки или папки. Контейнер подключает импорты к экспортам и таким образом делает части доступными приложению-хосту:. Это полная картина того, как загружаются части. Они находятся в каталоге. Каталог использует экспорты для нахождения частей. Поставщик экспорта обращается к каталогу, чтобы предложить экспорты из каталога. Множественные поставщики экспорта могут быть соединены в цепочки для настройки экспорта, например, со специальным поставщиком экспорта, который допускает только части для определенных пользователей или ролей. Контейнер использует поставщиков экспорта для подключения импортов к экспортам, и сам по себе является поставщиком экспорта. MEF состоит из трех больших категорий: Классы хостинга включают каталоги и контейнеры. Примитивные классы могут использоваться в качестве базовых классов при расширении архитектуры MEF для использования других приемов соединения экспортов и импортов. Естественно, классы, составляющие реализацию основанного на атрибутах механизма с рефлексией, такие как атрибуты Export и Import, и классы, которые представляют расширяющие методы для облегчения работы с частями, основанными на атрибутах, также являются частями MEF. Реализация MEF основана на атрибутах, с помощью которых помечаются части для экспорта и отображают их на импорты. Технология является гибкой и позволяет реализовать другие механизмы на основе использования абстрактного базового класса ComposablePart и расширяющих методов с механизмами на базе рефлексии из класса ReflectionModelServices. Эта архитектура может быть расширена для наследования классов от ComposablePart и предоставления дополнительных расширяющих методов, которые извлекают информацию из дополнений через другие механизмы. Начнем демонстрацию работы с архитектурой MEF с простого примера. Приложениехост может динамически загружать дополнения. В MEF дополнение называется частью part. Части определены, как экспорты и загружаются в контейнер, который импортирует части. Контейнер находит части с использованием каталога catalog. В каталоге перечислены части. В данном примере простое консольное приложение служит хостом, позволяющим подключать дополнения-калькуляторы из библиотеки. Чтобы обеспечить независимость хоста и дополнения-калькулятора, потребуется создать три сборки. Одна сборка SimpleContract хранит контракты, используемые и сборкой дополнения, и исполняемым хостом. Сборка дополнения SimpleCalculator реализует контракт, определенный сборкой контракта SimpleContract. Хост использует эту сборку для вызова дополнений. Метод GetOperations возвращает список всех операций, поддерживаемых дополнением-калькулятором, а с помощью метода Operate операция вызывается. Этот интерфейс гибок в том смысле, что калькулятор может поддерживать различные операции. Если бы интерфейс определял методы Add и Substract вместо гибкого метода Operate , для поддержки операций Divide и Multiply потребовалась бы новая версия интерфейса. С помощью интерфейса ICalculator, как определено в этом примере, калькулятор может предоставлять любое количество операций с любым числом операндов:. Интерфейс ICalculator использует интерфейс IOperation для возврата списка операций и их вызова. В ней содержатся только простые интерфейсы. Сборка дополнений SimpleCalculator содержит классы, реализующие интерфейсы, которые определены контрактами. Класс Operation реализует интерфейс IOperation. Этот класс содержит только два свойства, как определено в интерфейсе. Интерфейс определяет средства доступа get для свойств; внутреннее средство доступа set используется для установки свойств изнутри сборки:. Класс Calculator обеспечивает функциональность данного дополнения, реализуя интерфейс ICalculator. Класс Calculator экспортируется как часть, что определено атрибутом Export. Этот атрибут определен в пространстве имен System. Composition в одноименной сборке:. Приложение-хост является простым консольным приложением. Дополнение использует атрибут Export для определения того, что должно экспортироваться; в приложении хосте атрибут Import определяет, что им должно использоваться. Здесь атрибут Import аннотирует свойство Calculator, который устанавливает и получает объект, реализующий ICalculator. Таким образом, здесь может использоваться любое дополнение-калькулятор, которое реализует этот интерфейс:. В методе Main консольного приложения создается новый экземпляр класса Program и вызывается метод Run. В методе Run создается каталог DirectoryCatalog, инициализируемый дополнением AddInDirectory, который настроен в конфигурационном файле приложения. AddInDirectory использует свойство проекта Settings для применения строго типизированного класса с целью доступа к специальной конфигурации. Класс CompositionContainer — это репозиторий частей. Данный контейнер инициализируется DirectoryCatalog для получения частей из папки, обслуживаемой этим каталогом. ComposeParts — расширяющий метод, который расширяет класс CompositionContainer и определяется классом AttributedModelServices. Этот метод требует частей, передаваемых в аргументах атрибута Import. Поскольку класс Program имеет атрибут Import со свойством Calculator, экземпляр класса Program может быть передан в этот метод. Экспорты находятся и отображаются с помощью реализации импортов. После успешного вызова этого метода могут быть использованы экспорты, отображенные на импорты. Если не все импорты отображены на соответствующие экспорты, генерируется исключение типа ChangeRejectedException, которое записывает сообщение об ошибке и завершает метод Run. С помощью свойства Calculator могут использоваться методы из интерфейса ICalculator. Метод GetOperations вызывает методы ранее созданного дополнения и возвращает четыре операции. После опроса пользователя, какая операция должна быть вызвана, и запроса значений операндов вызывается метод дополнения Operate. Итак, вы увидели, что собой представляют импорты, экспорты и каталоги архитектуры MEF. Нашли ошибку или опечатку? Выделите текст и нажмите Поменять цветовую гамму сайта? Пройди тесты C тест легкий. Чайхана Mix, Оренбург, Оренбургская область. Где можно купить курительные смеси в донецке. Подход к конфигурированию MEF без использования атрибутов Подход к конфигурированию MEF без использования атрибутов Подход к конфигурированию MEF без использования атрибутов Рады представить вашему вниманию магазин, который уже удивил своим качеством! И продолжаем радовать всех! Мы - это надежное качество клада, это товар высшей пробы, это дружелюбный оператор! Такого как у нас не найдете нигде! Наш оператор всегда на связи, заходите к нам и убедитесь в этом сами! В Телеграмм переходить только по ссылке, в поиске много фейков!
Купить закладку МЕСКАЛИН Армавир
Льгов купить LSD-25 в марках 250мк
Подход к конфигурированию MEF без использования атрибутов
Кокаин (VHQ, HQ, MQ, первый, орех) Новый Уренгой
Белинский купить закладку HQ Гашиш NO NAME
Alcatel-Lucent Catalog
Отзывы про Трава, дурь, шишки Каменск-Уральском
Подход к конфигурированию MEF без использования атрибутов
Гашишное масло как употреблять
Паттайя купить Кокаин Супер Качества [Ecuador]
Подход к конфигурированию MEF без использования атрибутов
Купить кокаин закладкой Сан-Паулу
Мет, метамфа телеграмм Северск
Работа разработчиком C# в Минске
Дешево купить Конопля Сергиев Посад
Подход к конфигурированию MEF без использования атрибутов
Купить экстази (МДМА) Святой Константин и Елена
Подход к конфигурированию MEF без использования атрибутов