Надстройки и расширения среды

Надстройки предоставляют для ведущих приложений расширенные функции или службы. Приложение .NET Framework предоставляет модель программирования, которую разработчики могут использовать для разработки надстроек и их активации в своем ведущем приложении. Модель достигает этого путем создания коммуникационного конвейера, между надстройкой и узлом. Модель реализуется с помощью типов в пространствах имен System.AddIn, System.AddIn.Hosting, System.AddIn.Pipeline и System.AddIn.Contract.

Обзор включает следующие разделы.

  • Модель надстроек

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

  • Связанные разделы

  • Ссылки

ПримечаниеПримечание

Дополнительные примеры кода и CTP-версии средств построения конвейеров надстроек см. на веб-узле CodePlex в разделе, посвященном управлению расширениями и надстройками.

Модель надстроек

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

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

Конвейер надстройки

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

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

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

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

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

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

Дополнительные сведения о разработке сегментов конвейера см. в разделе Разработка конвейера.

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

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

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

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

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

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

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

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

Сведения об обновлении и повторном построении банка данных см. в разделе Обнаружение надстройки. Сведения об активации надстроек см. в разделах Активация надстройки и Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности.

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

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

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

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

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

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

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

Дополнительные сведения об использовании внешних процессов см. в разделе Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности.

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

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

К началу

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

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

К началу

Связанные разделы

Заголовок

Описание

Разработка конвейера

Описывается коммуникационный конвейер сегментов от ведущего приложения до надстройки. Кроме того, предоставляются примеры кода в пошаговых руководствах, где описывается построение конвейера и развертывание сегментов в конвейере в Visual Studio.

Обнаружение надстройки

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

Активация надстройки

Описывается включение и отключение надстроек.

Производительность надстроек

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

Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности

Описывается активация надстроек в различных уровнях безопасности, процессах и доменах приложений.

Практическое руководство. Использование квалификационных данных

Описывается применение и доступ для настраиваемых данных, присущих надстройкам и сегментам конвейера.

Разработка надстроек

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

Домены приложений и сборки

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

К началу

Ссылки

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

К началу