Rinnovo 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).
Dopo aver creato un lease, l'unica proprietà che può essere modificata sul lease è ILease.CurrentLeaseTime. Ci sono due modi per rinnovare un lease: un client può chiamare direttamente ILease.Renew o può essere contattato uno sponsor con la richiesta di rinnovare il lease.
Sponsor
Gli sponsor attendono richieste da un dominio di applicazioni host per estendere il lease di un determinato oggetto. Gli sponsor implementano ISponsor e vengono registrati col gestore di lease ottenendo un riferimento al lease e chiamando ILease.Register. In generale, quando ci sono molti client per oggetto remoto, è più efficiente far inviare all'oggetto remoto una richiesta di rinnovo del lease a uno dei client piuttosto che far inviare a tutti i client richieste all'oggetto remoto.
Nota: |
---|
A partire dalla versione 1.1 di .NET Framework, registrare uno sponsor per la partecipazione alla durata di un oggetto server necessita dell'impostazione di deserializzazione automatica Full sia sul dominio dell'applicazione server che sullo sponsor. Per informazioni dettagliate, vedere Deserializzazione automatica in .NET Remoting. |
L'utilizzo di sponsor fornisce anche criteri di rinnovo dinamico fra un numero elevato di client. Ciò può rivelarsi efficace per la soluzione di problemi in parallelo, dove uno o più client danno a più oggetti remoti un problema da risolvere. Quando un oggetto remoto restituisce una soluzione, lo sponsor riceve una notifica e consente a tutti gli altri lease dell'oggetto remoto di scadere.
Questo approccio è utile anche per la migrazione di oggetti remoti a un computer diverso poiché l'oggetto remoto contatta il client dalla sua posizione corrente e non è il client a doverlo cercare.
È anche importante notare che lo sponsor potrebbe essere difficile da raggiungere se si trova in una grande rete o anche su Internet con molti firewall. È possibile aggirare questo problema con sponsor di backup, o posizionando gli sponsor vicino al dominio dell'applicazione host dove possono essere raggiunti con un buon grado di sicurezza.
Il gestore di lease del dominio dell'applicazione host gestisce un elenco degli sponsor. Quando uno sponsor è necessario per rinnovare la durata del lease, è lo sponsor in cima all'elenco a dover rinnovare la durata. Se lo sponsor non risponde nell'intervallo di tempo ILease.SponsorshipTimeout, viene rimosso dall'elenco e viene chiamato il prossimo sponsor nell'elenco.
Utilizzo di uno sponsor per rinnovare un lease
Gli sponsor partecipano ai lease di durata ottenendo il lease per un particolare riferimento all'oggetto, registrandosi come sponsor e attendendo che il gestore di lease remoto chiami ISponsor.Renewal. Un lease dell'oggetto si ottiene chiamando RemotingServices.GetLifetimeService, che prende l'oggetto per il quale il lease è richiesto come parametro. Questa chiamata è un metodo statico della classe RemotingServices. Se l'oggetto è locale rispetto al dominio dell'applicazione, il parametro a questa chiamata è un riferimento locale all'oggetto e il lease restituito è un riferimento locale al lease. Se l'oggetto è remoto, il proxy viene passato come parametro. Notare che il lease stesso è un oggetto con marshalling per riferimento (MBR), pertanto quando si ottiene un lease per un oggetto remoto, si ottiene un proxy al lease. Quando si effettuano chiamate ai metodi sul lease, quindi, si effettuano chiamate remote al processo server.
Si registra quindi lo sponsor con il gestore di lease remoto chiamando Register e passando lo sponsor e un oggetto TimeSpan facoltativo, se l'oggetto è stato appena creato.
Quando il lease per questo oggetto scade, il gestore di lease potrebbe richiamare lo sponsor remoto. Il valore restituito dallo sponsor per l'implementazione di Renewal diviene la nuova durata del lease.
Vedere anche
Attività
Riferimento
Elemento <lifetime>
Schema delle impostazioni remote
Concetti
Esempio di .NET Remoting: durate
Lease di durata
Inizializzazione dei lease