Поделиться через


Архитектура пакета VSPackage системы управления версиями

Пакет управления версиями — это VSPackage, использующий службы, предоставляемые интегрированной среде разработки Visual Studio. В свою очередь, пакет управления версиями предоставляет свои функциональные возможности в качестве службы управления версиями. Кроме того, пакет управления версиями является более универсальной альтернативой, чем подключаемый модуль управления версиями для интеграции системы управления версиями в Visual Studio.

Подключаемый модуль управления версиями, реализующий ПОДКЛЮЧАЕМЫй модуль управления версиями, соблюдает строгий контракт. Например, подключаемый модуль не может заменить пользовательский интерфейс Visual Studio по умолчанию. Кроме того, подключаемый модуль управления версиями не включает подключаемый модуль для реализации собственной модели управления версиями. Однако пакет управления версиями преодолевает оба этих ограничения. Пакет управления версиями имеет полный контроль над интерфейсом управления версиями пользователя Visual Studio. Кроме того, пакет управления версиями может использовать собственную модель управления версиями и логику, а также определить все пользовательские интерфейсы, связанные с системой управления версиями.

Компоненты пакета системы управления версиями

Как показано на схеме архитектуры, компонент Visual Studio с именем Stub системы управления версиями является VSPackage, который интегрирует пакет управления версиями с Visual Studio.

Заглушка системы управления версиями обрабатывает следующие задачи.

  • Предоставляет общий пользовательский интерфейс, необходимый для регистрации пакета управления версиями.

  • Загружает пакет управления версиями.

  • Задает пакет управления версиями как активный или неактивный.

    Заглушка системы управления версиями ищет активную службу для пакета системы управления версиями и направляет все входящие вызовы служб из интегрированной среды разработки в этот пакет.

    Пакет адаптера управления версиями — это специальный пакет управления версиями, который предоставляет Visual Studio. Этот пакет является центральным компонентом для поддержки подключаемых модулей системы управления версиями на основе API подключаемого модуля управления версиями. Если подключаемый модуль управления версиями является активным подключаемым модулем, заглушка системы управления версиями отправляет события в пакет адаптера системы управления версиями. В свою очередь, пакет адаптера управления версиями взаимодействует с подключаемым модулем управления версиями с помощью API подключаемого модуля управления версиями, а также предоставляет пользовательский интерфейс по умолчанию для всех подключаемых модулей управления версиями.

    Если пакет системы управления версиями является активным пакетом, с другой стороны, заглушка системы управления версиями напрямую взаимодействует с пакетом с помощью интерфейсов пакета управления версиями пакета Sdk Для Visual Studio. Пакет управления версиями отвечает за размещение собственного пользовательского интерфейса системы управления версиями.

    Source Control Architecture graphic

    Для пакета управления версиями Visual Studio не предоставляет код системы управления версиями или API для интеграции. Сравните это с подходом, описанным в статье "Создание подключаемого модуля управления версиями", где подключаемый модуль управления версиями должен реализовать жесткий набор функций и обратных вызовов.

    Как и любой VSPackage, пакет управления версиями — это COM-объект, который можно создать с помощью CoCreateInstance. VSPackage предоставляется интегрированной среде разработки Visual Studio путем реализации IVsPackage. При создании экземпляра VSPackage получает указатель сайта и IServiceProvider интерфейс, обеспечивающий доступ VSPackage к доступным службам и интерфейсам в интегрированной среде разработки.

    Для написания пакета системы управления версиями на основе VSPackage требуется более сложный опыт программирования, чем написание подключаемого модуля API на основе подключаемого модуля управления версиями.