Condividi tramite


Concetti di base del servizio

Un servizio è un contratto tra due package VS. Un VSPackage fornisce un set specifico di interfacce per un altro package VS utilizza. Visual Studio è una raccolta di package VS che fornisce servizi all'altro package VS.

Ad esempio, è possibile utilizzare il servizio di SVsActivityLog per ottenere un'interfaccia di IVsActivityLog, che è possibile utilizzare per scrivere nel log attività. Per ulteriori informazioni, vedere Procedura: utilizzare il registro attività.

I servizi non dispongono di ricerca agevolata. Pertanto, è necessario conoscere l'identificatore del (SID) servizio di un servizio che si desidera utilizzare e conoscere le interfacce fornite. La documentazione di riferimento per il servizio fornisce queste informazioni.

  • Package VS che fornisce servizi viene chiamato provider di servizi.

  • I servizi forniti da un altro package VS vengono chiamati servizi globali.

  • I servizi disponibili solo nel package VS che li implementa, o a qualsiasi oggetto crea, vengono chiamati servizi locali.

  • I servizi sono su richiesta caricato, ovvero, il provider di servizi viene caricato quando il servizio che fornisce è richiesto da un altro package VS.

  • Per supportare il carico su richiesta, un provider di servizi registra i servizi globali con Visual Studio. Per ulteriori informazioni, vedere Registrare servizi.

  • Una volta ottenuto un servizio, un utilizzo QueryInterface (codice non gestito) o di cast (codice gestito) utilizzare l'interfaccia desiderata, ad esempio:

    TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
    
    GetService(typeof(SVsActivityLog)) as IVsActivityLog;
    
  • Il codice gestito fa riferimento a un servizio dal tipo, mentre il codice non gestito fa riferimento a un servizio dal GUID.

  • Quando Visual Studio carica un package VS, passa un provider di servizi in un VSPackage per fornire l'accesso di un VSPackage servizi globali. Questa operazione è nota come “ubicazione„ il package VS.

  • Vspackage può essere provider di servizi per gli oggetti che creano. Ad esempio, un form può inviare una richiesta per un servizio di colore al relativo frame, che potrebbe passare la richiesta a Visual Studio.

  • Gli oggetti gestiti che sono eccessivamente annidate, o non sono collocati a tutti, possono chiamare GetGlobalService per l'accesso diretto ai servizi globali. Per ulteriori informazioni, vedere Procedura: utilizzo GetGlobalService.

Vedere anche

Riferimenti

Cast e conversioni di tipi (Guida per programmatori C#)

Cast

Concetti

Elenco di servizi disponibili

Altre risorse

servizi