Add-In-Leistung
Die Leistung von Add-Ins kann durch domänenneutrales Laden für den Pipelinevertrag verbessert werden. Die Aktivierung kann durch Erstellen systemeigener Abbilder für Pipelinesegmente verbessert werden.
Verbessern von domänenübergreifenden Aufrufen durch domänenneutrales Laden
Wenn ein Add-In in eine separate Anwendungsdomäne geladen wird, werden Aufrufe zwischen dem Host und dem Add-In von der Pipeline über die Grenze der Anwendungsdomäne hinweg gemarshallt. Die Leistung dieser domänenübergreifenden Aufrufe wird erheblich verbessert, wenn die Assembly, die den Vertrag enthält, als domänenneutral geladen wird.
Die Assembly muss über einen starken Namen verfügen und im globalen Assemblycache installiert sein. Außerdem muss die Assembly über das LoaderOptimizationAttribute mit dem LoaderOptimization.MultiDomainHost- oder dem LoaderOptimization.MultiDomain-Flag verfügen.
Verbessern der Aktivierung durch Vermeiden der Verwendung des JIT-Compilers
Der JIT-Compiler (Just in Time) verursacht erheblichen Leistungsaufwand durch die Aktivierung von Add-Ins, vor allem, wenn das Add-In in einer separaten Anwendungsdomäne aktiviert wird. Beachten Sie die folgenden Richtlinien, um eine Verwendung des JIT-Compilers zu vermeiden:
Geben Sie den Pipelineassemblys starke Namen, und installieren Sie sie im globalen Assemblycache.
Erstellen Sie mit dem Ngen.exe (Native Image Generator) systemeigene Abbilder für die Pipelineassemblys.
Vergewissern Sie sich, dass die Assembly, die den Vertrag enthält, als domänenneutral geladen wurde, wie im vorherigen Abschnitt erläutert.
Hinweis
Dieser Schritt ist von höchster Bedeutung.Wenn der Vertrag nicht als domänenneutral geladen wurde, kann keine der Add-In-seitigen Komponenten systemeigene Abbilder verwenden.
Wenden Sie das LoaderOptimizationAttribute mit dem MultiDomainHost- oder dem MultiDomain-Flag auf die Hostassembly an, sodass systemeigene Abbilder der .NET Framework-Assemblys für mehrere Anwendungsdomänen freigegeben werden.
Hinweis
Beim Ausführen im Debugger macht sich die Leistungsverbesserung nicht bemerkbar, da der Hostprozess (vshost.exe) nicht für das Freigeben einer Assembly eingerichtet ist.Sie können den Hostprozess deaktivieren, dies wird jedoch nicht empfohlen.Während der Ausführung im Debugger sollte die Leistung nicht gemessen werden.
Siehe auch
Referenz
Ngen.exe (Native Image Generator)