COM+-Just-in-Time-Aktivierungskonzepte

Der JIT-Aktivierungsdienst (Just-In-Time) ermöglicht COM+, ein Objekt zu deaktivieren, während ein Client noch einen aktiven Verweis auf dieses Objekt enthält. Wenn der Client das nächste Mal eine Methode für das Objekt aufruft, von dem der Client glaubt, dass es noch aktiv ist, reaktiviert der COM+ JIT-Aktivierungsdienst das Objekt transparent für den Client, just-in-time.

Der Standard Vorteil der Com- und JIT-Aktivierung besteht darin, dass Sie Clients ermöglichen können, Verweise auf Objekte so lange zu speichern, wie sie sie benötigen, ohne dabei unbedingt wertvolle Serverressourcen wie z. B. Arbeitsspeicher zu binden. Weitere wichtige Vorteile sind die folgenden:

  • Die Verwendung des COM+ JIT-Aktivierungsdiensts vereinfacht das Programmiermodell für den Client erheblich, da der Client nicht darüber nachdenken muss, wie er teure Serverobjekte und Serverressourcen verwendet. Ohne JIT-Aktivierung können Clients eine erhebliche Einbuße verursachen, wenn sie häufig Objekte aufrufen und freigeben müssen.

    Hinweis

    Sie können diesen Leistungsvorteil mithilfe des COM+-Objektpoolingdiensts weiter verfeinern. Durch das Pooling von JIT-aktivierten Objekten können Sie die Reaktivierung von Objekten für Clients erheblich beschleunigen und gleichzeitig alle Ressourcen wiederverwenden, die sie enthalten, sodass Sie genauer steuern können, wie viel Arbeitsspeicher von einem bestimmten Objekt auf dem Server verwendet wird. Weitere Informationen finden Sie unter Objektpooling und COM+-JIT-Aktivierung.

     

  • Bei verteilten Anwendungen ist ein teurer Netzwerk-Roundtrip für die Erstellung jedes Objekts erforderlich. Je weiter der Client vom Server entfernt ist, desto höher sind die Kosten für das Aktivieren und Marshallen des Serverobjekts, das Öffnen des Kanals und das Einrichten von Proxy und Stub. Mithilfe des COM+ JIT-Aktivierungsdiensts können Sie die Häufigkeit der Objekterstellung minimieren, um die Leistung Ihrer Anwendung erheblich zu verbessern.

  • Wenn Sie die COM+ JIT-Aktivierung verwenden, um die Objekte zu aktivieren, an die Clients langlebige Verweise enthalten, die sie jedoch nicht unbedingt ständig verwenden, ist der Serverspeicher nicht immer gebunden, um diese Objekte am Leben zu halten. Dies kann die Skalierbarkeit Ihrer Anwendung erheblich erhöhen. Der einzige Leistungstreffer, den Clients sehen, ist die Zeit, die COM+ benötigt, um das Objekt zu reaktivieren, in der Regel nur geringfügig mehr Zeit, als zum Zuweisen von Arbeitsspeicher für das Objekt benötigt wird, und wesentlich weniger als der Netzwerk-Roundtrip für die Erstellung von Remoteobjekten.

Aktivieren der COM+ JIT-Aktivierung

Sie können den COM+-JIT-Aktivierungsdienst für eine Komponente aktivieren, indem Sie entweder das Verwaltungstool Komponentendienste oder die Verwaltungsfunktionen verwenden. Ausführliche Informationen dazu finden Sie unter Aktivieren der JIT-Aktivierung für eine Komponente.

Die COM+-JIT-Aktivierung kann mit anderen COM+-Diensten interagieren, z. B.:

  • Wenn Ihre Komponente Transaktionen erfordert, wird automatisch die JIT-Aktivierung für sie aktiviert. Ausführlichere Informationen finden Sie unter Transaktionen und COM+-JIT-Aktivierung.
  • Wenn Ihre Komponente für die JIT-Aktivierung aktiviert ist, wird die Synchronisierung automatisch auf erforderlich festgelegt. Das bedeutet, wenn zwei Clients gleichzeitig eine JIT-aktivierte Komponente aufrufen und ein Methodenaufruf für einen von ihnen zurückgibt, wodurch das Objekt deaktiviert wird, bleibt der andere nicht hängen.

Auslösen der Deaktivierung

COM+ deaktiviert ein Objekt basierend auf der status des Doneness-Bits im Objektkontext. Ihr Objekt kann dieses Bit verwenden, um zu signalisieren, ob es während eines bestimmten Methodenaufrufs abgeschlossen ist, d. h. bereit für die Deaktivierung. Weitere Informationen finden Sie unter Festlegen des Bits "Done Bit".

Verwenden der Auto-Done-Eigenschaft

Mit dem Component Services-Verwaltungstool können Sie eine Methode so konfigurieren, dass das Objekt bei der Rückgabe der Methode automatisch deaktiviert wird. (Anweisungen zum Festlegen dieser Eigenschaft finden Sie unter Aktivieren von Auto-Done für eine Methode .) Wenn Sie diese Option auswählen, können Sie die sich wiederholenden Methodenaufrufe für die Abstimmung in Transaktionen entfernen. Da die Standardeinstellung für das Konsistenzbit True ist, wird IObjectContext::SetComplete automatisch aufgerufen, wenn Sie auch das erledigte Bit in True geändert haben und sie keine Aktion ausführen, um diese Einstellungen zu ändern.

Es gibt jedoch eine Einschränkung für dieses Verhalten: COM+ untersucht das HRESULT, das die Methode zurückgibt. Wenn dieses HRESULT auf einen Fehler hinweist, wird das Konsistenzbit auf False festgelegt, und das Ergebnis entspricht dem, wenn Sie IObjectContext::SetAbort aufgerufen hätten.

Zusammenfassend gilt Folgendes, wenn Sie auto-done für eine Methode auswählen und keine Aktion zum Festlegen von Bits ausführen und ein HRESULT(hr) zurückgegeben wird:

Verwenden von IObjectControl zum Verwalten der Objektaktivierung und -deaktivierung

Sie können die IObjectControl-Schnittstelle implementieren, damit die COM+-Runtime die Deaktivierung und Reaktivierung für Ihre Objekte automatisch verwaltet. Wenn ein Objekt diese Schnittstelle implementiert, ruft COM+ IObjectControl::D eactivate auf, wenn das Objekt deaktiviert wird, und IObjectControl::Activate , wenn es reaktiviert wird. Diese Methoden ermöglichen die automatische Kontextinitialisierung bei der Objektaktivierung und bereinigen des Zustands bei der Deaktivierung.

Wenn Sie Objekte poolen, die DIE COM+-JIT-Aktivierung verwenden, wird dringend empfohlen, IObjectControl zu implementieren. Weitere Informationen finden Sie unter Objektpooling und COM+-JIT-Aktivierung.

Zustandslosigkeit und JIT-Aktivierung

Transaktionsobjekte sind notwendigerweise zustandslos, da Sie den Zustand nicht über eine Transaktionsgrenze hinweg freigeben können. Daher würden Sie die JIT-Aktivierung nur verwenden, wenn Ihr Objekt keinen Zustand enthält, der bei der Deaktivierung verloren geht. Andernfalls verstoßen Sie gegen die Isolation der Transaktionen. Aufgrund der natürlichen Verwendungsmuster von Transaktionsobjekten – sie erledigen eine Arbeitseinheit und geben das Objekt frei, wenn die Transaktion committet oder abbricht – sind DIE JIT-Aktivierung und automatische Transaktionen eng miteinander verbunden. Wenn Sie ein Objekt so konfigurieren, dass Transaktionen erforderlich sind, wird die COM+ JIT-Aktivierung automatisch aktiviert.

COM+ Just-in-Time-Aktivierungsaufgaben

Objektpooling und COM+-JIT-Aktivierung

Transaktionen und COM+ JIT-Aktivierung