Подход к конфигурированию MEF без использования атрибутов

Подход к конфигурированию MEF без использования атрибутов

Подход к конфигурированию MEF без использования атрибутов

Рады приветствовать Вас!

К Вашим услугам - качественный товар различных ценовых категорий.

Качественная поддержка 24 часа в сутки!

Мы ответим на любой ваш вопрос и подскажем в выборе товара и района!

Наши контакты:

Telegram:

https://t.me/happystuff


ВНИМАНИЕ!!! В Телеграмм переходить только по ссылке, в поиске много Фейков!


Внимание! Роскомнадзор заблокировал Telegram ! Как обойти блокировку:

http://telegra.ph/Kak-obojti-blokirovku-Telegram-04-13-15

















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 тест легкий.

Купить Кокаин в Новороссийске

Managed Extensibility Framework

Картинки бошки

Купить закладки MDMA в Лянторе

Россыпь в Каргополе

Managed Extensibility Framework (MEF)

Закладки методон в Билибине

Купить Эйфоретик Красавино

Купить Кокаин в Воронеж-45

15.1. Знакомство с MEF

Купить трамадол в Нефтекамск

Купить закладки LSD в Малой Вишере

Купить Фен Арск

Влад рамм амфетамин текст

Купить закладки LSD в Каменке

Поиск по сайту

Купить Хмурый Печора

Глава 1. Введение

Купить lsd в Гусиноозерск

Подход к конфигурированию MEF без использования атрибутов

Купить закладки экстази в Перевозе

Купить Метамфетамин в Кемерове

Бокутаев Валерий

Поиск по сайту

Купить Гашиш Иваново

Гашиш в Пущине

Лучшие магазины и торговые центры Риги, Рижская область

Подход к конфигурированию MEF без использования атрибутов

Купить закладки россыпь в Петрозаводске

Купить МДМА розовые Артём

Купить закладки стаф в Циолковском

Закладки шишки ак47 в Сольвычегодске

Закладки шишки в Абакане

15.1. Знакомство с MEF

Купить Шишки Сурск

Глава 1. Введение

Report Page