Руководство разработчика по .NET Framework. Обзор надстройки

Модель программирования .NET Framework для надстроек поддерживает разработку конвейера взаимодействия, который разрешает размещение надстроек в различных настраиваемых сценариях.

 

Модель надстроек состоит из ряда сегментов, из которых состоит конвейер надстройки (также известный как конвейер взаимодействия), который ответственен за все взаимодействие между надстройкой и основным приложением. Конвейер - это симметричная модель взаимодействия сегментов, которые обмениваются данными между надстройкой и основным приложением. Разработка этих сегментов между основным приложением и надстройкой предоставляет требуемые уровни абстракции, которые поддерживают управление версиями и изоляцию надстройки.

На следующем рисунке показан конвейер.

Конвейер надстройки
Модель конвейера надстройки.

Сборки для этих сегментов могут и не находиться в том же домене приложения. Можно загрузить надстройку в собственный домен приложения, в существующий домен приложения или даже в домен приложения основного приложения. Можно загрузить несколько надстроек в один домен приложения, что позволяет надстройкам совместно использовать ресурсы и контексты безопасности.

Модель надстройки поддерживает рекомендованные, но необязательные границы между основным приложением и надстройкой, которая называется границей изоляции (или границей удаленного взаимодействия). Эта граница может быть границей домена приложения или процесса.

Сегмент контракта посередине конвейера загружается как в домен приложения основного приложения, так и в домен приложения надстройки. Контракт определяет виртуальные методы, которые используются основным приложением и надстройкой для совместного обмена типами.

Чтобы пройти границы изоляции, типы должны быть или контрактами, или сериализуемыми типами. Типы, которые не являются ни тем, ни другим, должны быть преобразованы в контракты сегментами адаптера в конвейере.

Сегменты представления конвейера являются абстрактными базовыми классами или интерфейсами, которые предоставляют основному приложению и надстройке представление используемых ими методов, как определено в контракте.

В следующих разделах описываются функциональные возможности модели надстройки.

Независимое управление версиями

Модель надстроек позволяет раздельно управлять версиями основных приложений и надстроек. В результате в модели надстроек допускаются следующие сценарии:

  • Создание адаптера, который позволяет основному приложению использовать надстройку, созданную для предыдущей версии основного приложения.

  • Создание адаптера, который позволяет основному приложению использовать надстройку, созданную для следующей версии основного приложения.

  • Создание адаптера, который позволяет основному приложению использовать надстройки, созданные для другого основного приложения.

Обнаружение и активация

Можно активировать надстройку с помощью маркера из коллекции, которая представляет обнаруженные надстройки в банке данных. Надстройки обнаруживаются посредством поиска типа, который определяет представление основного приложения, связанное с надстройкой. Можно найти определенную надстройку по типу, который определяет эту надстройку. Банк данных состоит из двух файлов кэша: хранилища конвейера и хранилища надстройки.

Уровни изоляции и внешние процессы

Модель надстроек поддерживает несколько уровней изоляции надстройки от своего основного приложения и других надстроек. Ниже приведены эти уровни, начиная с наименее изолированного:

  • Надстройка находится в том же домене приложения, что и основное приложение. Такой подход не рекомендуется, потому что отсутствует изоляция и возможности выгрузки, которые появляются при использовании разных доменов приложения.

  • Несколько надстроек загружаются в один домен приложения, который отличается от домена приложения основного приложения.

  • Каждая надстройка загружается отдельно в свой собственный домен приложения. Это наиболее распространенный уровень изоляции.

  • Несколько надстроек загружаются в один домен приложения во внешнем процессе.

  • Каждая надстройка загружается отдельно в свой собственный домен приложения в отдельном процессе. Это сценарий наибольшей изоляции.

Управление жизненным циклом объекта

Так как модель надстроек распространяется на домены приложения и границы процессов, одной сборки мусора будет недостаточно для освобождения и удаления объектов. Модель надстроек предоставляет механизм управления жизненным циклом, в котором используются маркеры и подсчет ссылок, и который не требует дополнительного программирования.

 Отличия между надстройками и основными приложениями

Отличия между надстройкой и основным приложением заключается в том, что основное приложение активирует надстройку. Основное приложение может быть больше надстройки, например текстовый редактор и его модули проверки орфографии, или же основное приложение может быть меньше надстройки, например клиент обмена мгновенными сообщениями, который использует проигрыватель мультимедиа. Модель надстроек поддерживает надстройки в клиентских и серверных сценариях. Примерами серверных надстроек служат надстройки, предоставляющие для почтовых серверов проверку на наличие вирусов, фильтрацию нежелательной почты и защиту протокола IP. Примерами клиентских надстроек могут быть надстройки для текстовых редакторов, специальные функциональные возможности графических программ и игр, а также проверка на наличие вирусов в локальных клиентов электронной почты.


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=23926