Condividi tramite


Inizializzazione dei lease

Le istanze di un oggetto MarshalByRefObject (MBR, Marshal-by-Reference) possono creare i propri termini di lease o essere configurate per utilizzare le proprietà di lease specificate dall'elemento <lifetime> di un file di configurazione del computer o dell'applicazione. Le proprietà relative alla durata possono essere impostate solo quando un lease si trova nello stato iniziale, ovvero quando viene creato da InitializeLifetimeService, mentre le chiamate successive non avranno alcun effetto.

Override di InitializeLifetimeService

Quando si chiama il metodo ILease lease = (ILease)base.InitializeLifetimeService(); in un'interfaccia InitializeLifetimeService sottoposta a override, verrà restituito un lease esistente per l'oggetto. Nel caso in cui non sia presente alcun lease, ne verrà restituito uno nuovo. Le proprietà di lease possono essere impostate solo se viene restituito un nuovo lease. Di conseguenza, è necessario assicurarsi che lo stato sia LeaseState.Initial. In caso contrario, verrà generata un'eccezione.

L'unica chiamata che influisce sul servizio di durata è quella a InitializeLifetimeService dall'infrastruttura di .NET Remoting, che consente di attivare il lease. È possibile chiamare InitializeLifetimeService e creare un lease mediante altro codice. In questo caso il lease rimarrà nello stato iniziale finché non verrà restituito all'infrastruttura di .NET Remoting. Non è possibile impostare nuovi valori per un lease esistente che non sia nello stato iniziale, sebbene il lease possa essere restituito all'infrastruttura dal nuovo sink per consentire a più sink relativi a un oggetto di puntare allo stesso lease.

Non viene creato alcun lease se il tempo di lease è uguale a 0 (zero) o se viene restituito un lease con valore null. Se RenewOnCallTime è uguale a 0 (zero), non verrà creato alcun sink ma verrà creato un lease.

Nell'implementazione di InitializeLifetimeService viene in genere chiamato il metodo corrispondente della classe di base per il recupero del lease esistente per l'oggetto remoto. Se il marshalling dell'oggetto non è mai stato eseguito in precedenza, il lease restituito si trova nello stato iniziale ed è possibile impostarne le proprietà. Dopo il marshalling dell'oggetto, il lease passa dallo stato iniziale a quello attivo. Qualsiasi tentativo di inizializzazione delle proprietà di lease verrà ignorato e verrà generata un'eccezione. La chiamata a InitializeLifetimeService viene eseguita quando si attiva l'oggetto remoto. Con la chiamata di attivazione è possibile fornire un elenco di sponsor per il lease e, quando il lease è attivo, è possibile aggiungere più sponsor in qualsiasi momento.

Per ulteriori informazioni su come eseguire l'override dell'interfaccia InitializeLifetimeService, vedere asdasdasdasdasdasd.

Vedere anche

Attività

Procedura: eseguire l'override dell'interfaccia InitializeLifetimeService

Concetti

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