Attivazione Just-in-Time (JIT)

Con il servizio di attivazione Just-in-Time (JIT) di COM+, le risorse server inattive vengono utilizzate in modo più efficiente. Quando un componente è configurato in modo da fruire dell'attivazione JIT, COM+ potrà disattivarne un'istanza anche se un client mantiene ancora un riferimento all'oggetto. Quando il client effettuerà una nuova chiamata a un metodo dell'oggetto, COM+ riattiverà l'oggetto in modo trasparente al client (just in time, al volo).

Nota   Per un componente compatibile JIT, l'oggetto viene attivato al momento della creazione.

Quando la chiamata del metodo viene restituita, l'oggetto viene nuovamente disattivato, ma il contesto rimane in memoria. L'oggetto disattivato rilascia tutte le risorse, compresi i blocchi sugli archivi dati di grandi dimensioni.

Nota   Ai fini delle prestazioni, anziché implementare un finalizzatore in una classe derivata da ServicedComponent, è preferibile inserirne la relativa logica nel metodo DisposeObject. Benché disponga di un finalizzatore, il proxy di ServicedComponent chiama il finalizzatore della classe derivata da ServicedComponent tramite reflection.

Per utilizzare l'attivazione JIT, applicare l'attributo JustInTimeActivationAttribute a una classe derivata da System.EnterpriseServices.ServicedComponent. Per essere certi che l'oggetto venga disattivato quando la chiamata del metodo viene restituita, è anche necessario impostare nell'oggetto il bit di operazione completata. Per i componenti transazionali, è possibile applicare AutoCompleteAttribute a una classe oppure chiamare ContextUtil.SetComplete o ContextUtil.SetAbort. Per i componenti non transazionali, chiamare ContextUtil.DeactivateOnReturn.

Nota   Poiché per le transazioni automatiche è necessario adottare l'attivazione JIT, questa verrà implicitamente abilitata per tutte le classi configurate in modo da utilizzare le transazioni automatiche.

Nell'esempio che segue viene mostrato come abilitare l'attivazione e la disattivazione JIT per le istanze della classe TestObjectPooling.

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

Vedere anche

Riepilogo dei servizi COM+ disponibili | JustInTimeActivationAttribute | Spazio dei nomi System.EnterpriseServices