Partilhar via


Conceitos básicos de serviço

Um serviço é um contrato entre duas VSPackages. Um VSPackage fornece um conjunto específico de interfaces para outro VSPackage consumir. Visual Studioo próprio é uma coleção de VSPackages que fornece serviços a outros VSPackages.

Por exemplo, você pode usar o serviço de SVsActivityLog para obter uma interface IVsActivityLog, que você pode usar para gravar no log de atividade. Para obter mais informações, consulte Como: usar o Log de atividade.

Os serviços não têm nenhum recurso de descoberta. Portanto, você deve conhecer o identificador de serviço (SID) de um serviço que você deseja consumir, e você deve saber quais interfaces ele oferece. A documentação de referência para o serviço fornece essas informações.

  • Os VSPackages que fornecem serviços são chamados de provedores de serviços.

  • Serviços fornecidos a outros VSPackages são chamados de serviços globais.

  • Serviços que estão disponíveis somente para o VSPackage que implementa-las ou a qualquer objeto que cria, são chamados de serviços locais.

  • Os serviços são carregados sob demanda, ou seja, o provedor de serviços é carregado quando o serviço fornece é solicitado pelo outro VSPackage.

  • Para oferecer suporte a carregamento sob demanda, um provedor de serviços registra seus serviços globais com Visual Studio. Para obter mais informações, consulte Registrando serviços.

  • Depois de obter um serviço, use QueryInterface (código não gerenciado) ou a projeção (código gerenciado) para obter a interface desejada, por exemplo:

    TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
    
    GetService(typeof(SVsActivityLog)) as IVsActivityLog;
    
  • Código gerenciado se refere a um serviço por seu tipo, ao passo que o código não gerenciado se refere a um serviço por seu GUID.

  • Quando Visual Studio cargas um VSPackage, ele passa um provedor de serviços para o VSPackage para fornecer ao acesso de VSPackage global Services. Isso é conhecido como "Localizando" o VSPackage.

  • Os VSPackages podem ser provedores de serviços para os objetos criados por eles. Por exemplo, um formulário pode enviar uma solicitação para um serviço de cor com o quadro, que pode passar a solicitação para Visual Studio.

  • Os objetos gerenciados que estão profundamente aninhados ou não localizados, podem chamar GetGlobalService para acesso direto aos serviços globais. Para obter mais informações, consulte Como: usar GetGlobalService.

Consulte também

Referência

Conversões cast e conversões de tipo (Guia de Programação em C#)

Conversão

Conceitos

Lista de serviços disponíveis

Outros recursos

Serviços