Надстройки и расширения среды
Надстройки предоставляют для ведущих приложений расширенные функции или службы. Приложение .NET Framework предоставляет модель программирования, которую разработчики могут использовать для разработки надстроек и их активации в своем ведущем приложении. Модель достигает этого путем создания коммуникационного конвейера, между надстройкой и узлом. Модель реализуется с помощью типов в пространствах имен System.AddIn, System.AddIn.Hosting, System.AddIn.Pipeline и System.AddIn.Contract.
Обзор включает следующие разделы.
Модель надстроек
Отличия между надстройками и основными приложениями
Связанные разделы
Ссылки
![]() |
---|
Дополнительные примеры кода и CTP-версии средств построения конвейеров надстроек см. на веб-узле CodePlex в разделе, посвященном управлению расширениями и надстройками. |
Модель надстроек
Модель надстроек состоит из ряда сегментов, из которых состоит конвейер надстройки (также известный как конвейер взаимодействия), который ответственен за все взаимодействие между надстройкой и основным приложением. Конвейер — это симметричная модель взаимодействия сегментов, которые обмениваются данными между надстройкой и основным приложением. Разработка этих сегментов между основным приложением и надстройкой предоставляет требуемые уровни абстракции, которые поддерживают управление версиями и изоляцию надстройки.
На следующем рисунке показан конвейер.
Конвейер надстройки
Сборки для этих сегментов могут и не находиться в том же домене приложения. Можно загрузить надстройку в собственный домен приложения, в существующий домен приложения или даже в домен приложения основного приложения. Можно загрузить несколько надстроек в один домен приложения, что позволяет надстройкам совместно использовать ресурсы и контексты безопасности.
Модель надстройки поддерживает рекомендованные, но необязательные границы между основным приложением и надстройкой, которая называется границей изоляции (или границей удаленного взаимодействия). Эта граница может быть границей домена приложения или процесса.
Сегмент контракта посередине конвейера загружается как в домен приложения основного приложения, так и в домен приложения надстройки. Контракт определяет виртуальные методы, которые используются основным приложением и надстройкой для совместного обмена типами.
Чтобы пройти границы изоляции, типы должны быть или контрактами, или сериализуемыми типами. Типы, которые не являются ни тем, ни другим, должны быть преобразованы в контракты сегментами адаптера в конвейере.
Сегменты представления конвейера являются абстрактными базовыми классами или интерфейсами, которые предоставляют основному приложению и надстройке представление используемых ими методов, как определено в контракте.
Дополнительные сведения о разработке сегментов конвейера см. в разделе Разработка конвейера.
В следующих разделах описываются функциональные возможности модели надстройки.
Независимое управление версиями
Модель надстроек позволяет раздельно управлять версиями основных приложений и надстроек. В результате в модели надстроек допускаются следующие сценарии:
Создание адаптера, который позволяет основному приложению использовать надстройку, созданную для предыдущей версии основного приложения.
Создание адаптера, который позволяет основному приложению использовать надстройку, созданную для следующей версии основного приложения.
Создание адаптера, который позволяет основному приложению использовать надстройки, созданные для другого основного приложения.
Обнаружение и активация
Можно активировать надстройку с помощью маркера из коллекции, которая представляет обнаруженные надстройки в банке данных. Надстройки обнаруживаются посредством поиска типа, который определяет представление основного приложения, связанное с надстройкой. Можно найти определенную надстройку по типу, который определяет эту надстройку. Банк данных состоит из двух файлов кэша: хранилища конвейера и хранилища надстройки.
Сведения об обновлении и повторном построении банка данных см. в разделе Обнаружение надстройки. Сведения об активации надстроек см. в разделах Активация надстройки и Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности.
Уровни изоляции и внешние процессы
Модель надстроек поддерживает несколько уровней изоляции надстройки от своего основного приложения и других надстроек. Ниже приведены эти уровни, начиная с наименее изолированного:
Надстройка находится в том же домене приложения, что и основное приложение. Такой подход не рекомендуется, потому что отсутствует изоляция и возможности выгрузки, которые появляются при использовании разных доменов приложения.
Несколько надстроек загружаются в один домен приложения, который отличается от домена приложения основного приложения.
Каждая надстройка загружается отдельно в свой собственный домен приложения. Это наиболее распространенный уровень изоляции.
Несколько надстроек загружаются в один домен приложения во внешнем процессе.
Каждая надстройка загружается отдельно в свой собственный домен приложения в отдельном процессе. Это сценарий наибольшей изоляции.
Дополнительные сведения об использовании внешних процессов см. в разделе Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности.
Управление жизненным циклом объекта
Так как модель надстроек распространяется на домены приложения и границы процессов, одной сборки мусора будет недостаточно для освобождения и удаления объектов. Модель надстроек предоставляет механизм управления жизненным циклом, в котором используются маркеры и подсчет ссылок, и который не требует дополнительного программирования. Дополнительные сведения см. в разделе Управление жизненным циклом объекта.
К началу
Отличия между надстройками и основными приложениями
Отличия между надстройкой и основным приложением заключается в том, что основное приложение активирует надстройку. Основное приложение может быть больше надстройки, например текстовый редактор и его модули проверки орфографии, или же основное приложение может быть меньше надстройки, например клиент обмена мгновенными сообщениями, который использует проигрыватель мультимедиа. Модель надстроек поддерживает надстройки в клиентских и серверных сценариях. Примерами серверных надстроек служат надстройки, предоставляющие для почтовых серверов проверку на наличие вирусов, фильтрацию нежелательной почты и защиту протокола IP. Примерами клиентских надстроек могут быть надстройки для текстовых редакторов, специальные функциональные возможности графических программ и игр, а также проверка на наличие вирусов в локальных клиентов электронной почты.
К началу
Связанные разделы
Заголовок |
Описание |
---|---|
Описывается коммуникационный конвейер сегментов от ведущего приложения до надстройки. Кроме того, предоставляются примеры кода в пошаговых руководствах, где описывается построение конвейера и развертывание сегментов в конвейере в Visual Studio. |
|
Описывается, как надстройки могут стать обнаруживаемыми для ведущих приложений. |
|
Описывается включение и отключение надстроек. |
|
Описывается, как использовать независимую от доменов загрузку сборки и собственные изображения для повышения производительности надстроек. |
|
Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности |
Описывается активация надстроек в различных уровнях безопасности, процессах и доменах приложений. |
Практическое руководство. Использование квалификационных данных |
Описывается применение и доступ для настраиваемых данных, присущих надстройкам и сегментам конвейера. |
Описывается разработка надстройки для использования требуемых сегментов конвейера надстройки. |
|
Описывается связь между доменами приложений, обеспечивающими границу изоляции для безопасности, надежности, управления версиями и сборок. |
К началу
Ссылки
К началу