Freigeben über


Just-in-Time-Aktivierung

Mit Hilfe des COM+-Dienstes JIT-Aktivierung (Just-in-Time) können im Leerlauf befindliche Serverressourcen produktiver verwendet werden. Wenn eine Komponente für JIT-Aktivierung konfiguriert wurde, kann eine ihrer Instanzen durch COM+ deaktiviert werden, während ein Client weiterhin einen aktiven Verweis auf das Objekt beibehält. Wenn der Client das nächste Mal eine Methode für das Objekt aufruft, wird das Objekt bedarfsorientiert (d. h. just in time) für den Client transparent reaktiviert*.*

Hinweis   Für eine Komponente, die für JIT-Aktivierung konfiguriert ist, wird das Objekt bei seiner ersten Erstellung aktiviert.

Wird durch die Methode ein Wert zurückgegeben, wird das Objekt durch den COM+-Dienst wieder deaktiviert. Der Kontext bleibt aber im Speicher erhalten. Das deaktivierte Objekt gibt alle Ressourcen wieder frei, einschließlich der Sperren für umfangreiche Datenspeicher.

Hinweis   Hinsichtlich der Leistung ist es günstiger, in einer von der ServicedComponent abgeleiteten Klasse keinen Finalizer zu implementieren. Ordnen Sie diese Logik stattdessen in der DisposeObject-Methode an. Obwohl der ServicedComponent-Proxy über einen Finalizer verfügt, wird der Finalizer durch Reflektion in der von der ServicedComponent abgeleiteten Klasse aufgerufen.

Zum Aktivieren der JIT-Aktivierung wird das JustInTimeActivationAttribute-Attribut für eine von der System.EnterpriseServices.ServicedComponent abgeleitete Klasse angewendet. Darüber hinaus muss das Vollzugsbit des Objekts festgelegt werden, um sicherzustellen, dass das Objekt bei der Rückgabe des Methodenaufrufs deaktiviert ist. Bei Transaktionskomponenten können Sie entweder das AutoCompleteAttribute auf eine Klasse anwenden oder ContextUtil.SetComplete oder ContextUtil.SetAbort aufrufen. Für nicht transaktionale Komponenten rufen Sie ContextUtil.DeactivateOnReturn auf.

Hinweis   Für automatische Transaktionen ist JIT-Aktivierung erforderlich. Daher erfolgt die JIT-Aktivierung implizit, wenn Klassen für automatische Transaktionen konfiguriert werden.

Im folgenden Beispiel wird gezeigt, wie die JIT-Aktivierung und -Deaktivierung für Instanzen der TestObjectPooling-Klasse eingeschaltet wird.

<JustInTimeActivation()> _
Public Class TestObjectPooling 
Inherits ServicedComponent
[C#]
[JustInTimeActivation]
public class TestObjectPooling : ServicedComponent

Siehe auch

Zusammenfassung verfügbarer COM+-Dienste | JustInTimeActivationAttribute | System.EnterpriseServices-Namespace