Condividi tramite


Inizializzazione dei lease

Questo argomento è specifico di una tecnologia legacy mantenuta per una questione di compatibilità con le applicazioni esistenti di versioni precedenti e non è consigliato per il nuovo sviluppo. Le applicazioni distribuite devono ora essere sviluppate utilizzando  Windows Communication Foundation (WCF).

Quando viene creata un'istanza della classe derivata MarshalByRefObject, il framework .NET Remoting chiama il metodo InitializeLifetimeService dell'oggetto. Questo metodo restituisce un oggetto del lease che contiene i valori di durata predefiniti per l'oggetto remoto. È possibile modificare questi valori predefiniti specificando valori alternativi nel file di configurazione dell'applicazione server (utilizzando l'Elemento <lifetime>InitializeLifetimeService) o eseguendo l'override del metodo .

Se si specificano valori alternativi in un file di configurazione, si tenga presente che questo modifica i valori di durata predefiniti di tutti gli oggetti ospitati dall'applicazione server. Eseguire l'override del metodo InitializeLifetimeService consente di modificare i valori di durata predefiniti di una classe specifica.

Override di InitializeLifetimeService

Quando si esegue l'override del metodo InitializeLifetimeService, bisogna controllare il valore di CurrentState. È possibile modificare i valori del lease solo quando CurrentState è uguale a Initial.

L'unica chiamata che influisce sul servizio di durata è la chiamata a InitializeLifetimeService dall'infrastruttura .NET Remoting, che attiva il lease. Altro codice può chiamare InitializeLifetimeService e creare un lease, ma quel lease resterà nello stato iniziale finché non verrà restituito all'infrastruttura .NET Remoting.

Se InitializeLifetimeService restituisce null, la durata dell'oggetto è infinita e non è sottoposto a procedure di Garbage Collection fino a che il dominio dell'applicazione host non verrà scaricato.

L'implementazione di InitializeLifetimeService di norma chiama il metodo corrispondente della classe di base per recuperare il lease esistente per l'oggetto remoto. Se non è mai stato effettuato il marshalling dell'oggetto, il lease restituito è nello stato iniziale e le proprietà del lease possono essere impostate. Dopo che è stato eseguito il marshalling dell'oggetto, il lease va dallo stato iniziale allo stato attivo e qualsiasi tentativo di inizializzare le proprietà del lease viene ignorato e viene generata un'eccezione. Il metodo InitializeLifetimeService viene chiamato quando l'oggetto remoto viene attivato. Un elenco di sponsor per il lease può essere fornito con la chiamata di attivazione e sponsor aggiuntivi possono essere aggiunti in qualsiasi momento mentre il lease è attivo.

Per informazioni su come eseguire l'override del metodo InitializeLifetimeService, vedere Procedura: eseguire l'override dell'interfaccia InitializeLifetimeService.

Vedere anche

Attività

Procedura: eseguire l'override dell'interfaccia InitializeLifetimeService

Concetti

Rinnovo dei lease
Esempio di .NET Remoting: durate
Lease di durata