Dienst-Grundlagen
Ein Dienst ist ein Vertrag zwischen zwei VSPackages. Ein VSPackage stellt einen bestimmten bereit, das von Schnittstellen festgelegt wird, sodass ein anderes VSPackage nutzt. Visual Studio ist auch eine Auflistung von VSPackages VSPackages anderem das Dienste bereitstellt.
Beispielsweise können Sie den SVsActivityLog-Dienst verwenden, um eine IVsActivityLog-Schnittstelle zu erhalten, die Sie verwenden können, um auf den Aktivitätsprotokoll zu schreiben. Weitere Informationen finden Sie unter Gewusst wie: Verwenden Sie das Aktivitätsprotokoll.
Dienste haben kein discoverability. Deshalb muss der Bezeichner des Diensts (SID) einer Dienst kennen, die Sie in Anspruch nehmen möchten, und Sie müssen wissen, welche Schnittstellen er bereitstellt. Die Referenzdokumentation für den Dienst stellt diese Informationen.
VSPackages das bereitstellen, Dienste werden Dienstanbieter bezeichnet.
VSPackages anderen Diensten bereitgestellt wird, werden globale Dienste aufgerufen.
Dienste, die nur VSPackages zu, das sie implementiert, oder zu allen Objekten wird, werden lokale Dienste aufgerufen.
Dienste werden bei Bedarf geladen wird, d. h. beim Laden der Dienstanbieter, die er den Dienst bereitstellt, über ein anderes VSPackage angefordert wird.
Um bedarfsgesteuertes Laden zu unterstützen, registriert die globalen Dienstanbieter Dienste mit Visual Studio. Weitere Informationen finden Sie unter Registrieren von Diensten.
Nachdem Sie ein Dienst erhalten, verwenden Sie QueryInterface (für nicht verwalteten Code) oder eine Umwandlung (verwalteter Code) die gewünschte Schnittstelle abgerufen. Beispiel:
TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
GetService(typeof(SVsActivityLog)) as IVsActivityLog;
Verwalteter Code ist ein Dienst anhand des Typs an, während nicht verwaltetem Code einen Dienst mit seinem GUID verweist.
Wenn Visual Studio VSPackages geladen wird, führt es einen Dienstanbieter zu VSPackages, um den VSPackage-Zugriff globale Dienste zu vermitteln. Dies wird als VSPackage „Positionierung“.
VSPackages kann Dienstanbieter für die Objekte handeln, die sie erstellen. Zum Beispiel könnte ein Formular eine Anforderung gesendet hat einen Rahmen, dessen Farben für die die Anforderung zu Visual Studioführte.
Verwaltete Objekte, die tief geschachtelt sind oder nicht vorhanden, rufen GetGlobalService möglicherweise für direkten Zugriff auf globale Dienste an. Weitere Informationen finden Sie unter Gewusst wie: GetGlobalService Verwendung.
Siehe auch
Referenz
Umwandlung und Typkonvertierungen (C#-Programmierhandbuch)