Erneuern von Leases
Nach dem Erstellen einer Lease kann ILease.CurrentLeaseTime als einzige Eigenschaft der Lease geändert werden. Eine Lease kann auf zwei Arten erneuert werden: Ein Client kann ILease.Renew direkt aufrufen, oder es kann Verbindung mit einem Sponsor aufgenommen werden, um die Lease zu erneuern.
Sponsoren
Sponsoren warten auf Anforderungen einer Hostanwendungsdomäne, um die Lease eines bestimmten Objekts zu verlängern. Sponsoren implementieren ISponsor und werden beim Lease-Manager registriert, indem sie einen Verweis auf die Lease erhalten und dann ILease.Register aufrufen. Wenn viele Clients je Remoteobjekt vorhanden sind, ist es im Allgemeinen effizienter, das Remoteobjekt eine Anforderung an einen der Clients für eine Leaseerneuerung senden zu lassen, anstatt alle Clients Anforderungen an das Remoteobjekt senden zu lassen.
Hinweis: |
---|
Ab .NET Framework, Version 1.1 erfordert die Registrierung eines Sponsors für eine Beteiligung an der Lebensdauer eines Serverobjekts die automatische Deserialisierungseinstellung Full bei der Serveranwendungsdomäne und beim Sponsor. Weitere Informationen finden Sie unter Automatische Deserialisierung in .NET-Remoting. |
Die Verwendung von Sponsoren ermöglicht außerdem eine dynamische Erneuerungsrichtlinie für eine große Anzahl von Clients. Dies kann eine effektive Methode bei der Lösung von Parallelproblemen sein, wo mindestens ein Client mehreren Remoteobjekten ein zu lösendes Problem stellt. Wenn ein Remoteobjekt eine Lösung zurückgibt, wird der Sponsor benachrichtigt, und alle anderen Remoteobjektleases können ablaufen.
Diese Methode ist bei der Migration von Remoteobjekten zu einem anderen Computer ebenfalls nützlich, weil das Remoteobjekt von seinem aktuellen Speicherort Verbindung mit dem Client aufnimmt und der Client nicht nach dem Objekt suchen muss.
Es ist auch wichtig zu bedenken, dass der Sponsor möglicherweise schlecht zu erreichen ist, wenn er sich in einem großen Netzwerk oder sogar im Internet mit vielen Firewalls befindet. Sie können dem dadurch entgegenwirken, dass Sie Sicherungssponsoren einrichten oder die Sponsoren nahe der Hostanwendungsdomäne platzieren, wo sie einigermaßen zuverlässig erreicht werden können.
Der Lease-Manager der Hostanwendungsdomäne verwaltet eine Liste der Sponsoren. Wenn ein Sponsor die Dauer einer Lease erneuern muss, wird der Sponsor am Anfang der Liste zur Erneuerung der Dauer aufgefordert. Wenn ein Sponsor nicht innerhalb der ILease.SponsorshipTimeout-Zeitspanne antwortet, wird er aus der Liste entfernt, und der nächste Sponsor auf der Liste wird aufgerufen.
Verwenden eines Sponsors zum Erneuern einer Lease
Sponsor werden in Lebensdauerleases einbezogen, indem sie die Lease für einen bestimmten Objektverweis erhalten, sich als Sponsor registrieren und darauf warten, dass der Remote-Lease-Manager ISponsor.Renewal aufruft. Eine Objektlease wird durch den Aufruf von RemotingServices.GetLifetimeService abgerufen, bei dem das Objekt, für das die Lease erforderlich ist, als Parameter angenommen wird. Dieser Aufruf ist eine statische Methode der RemotingServices-Klasse. Wenn das Objekt ein lokales Objekt der Anwendungsdomäne ist, ist der Parameter für diesen Aufruf ein lokaler Verweis auf das Objekt, und die zurückgegebene Lease ist ein lokaler Verweis auf die Lease. Wenn das Objekt ein Remoteobjekt ist, wird der Proxy als Parameter übergeben. Beachten Sie, dass die Lease selbst ein MBR-Objekt (Marshal-By-Reference-Objekt) ist. Wenn Sie eine Lease für ein Remoteobjekt abrufen, erhalten Sie folglich einen Proxy für die Lease. Wenn Sie die Methoden der Lease aufrufen, führen Sie daher Remoteaufrufe des Serverprozesses aus.
Anschließend registrieren Sie den Sponsor beim Remote-Lease-Manager, indem Sie Register aufrufen und den Sponsor sowie ein optionales TimeSpan-Objekt übergeben, sofern das Objekt gerade erst erstellt wurde.
Wenn die Lease für dieses Objekt abläuft, könnte der Lease-Manager einen Rückruf an den Remotesponsor vornehmen. Der Rückgabewert des Sponsors für seine Implementierung von Renewal wird zur neuen Leasedauer.
Siehe auch
Aufgaben
Gewusst wie: Erneuern einer Lease
Referenz
<lifetime>-Element
Schema für Remoteeinstellungen
Konzepte
Remotingbeispiel: Lebensdauer
Lebensdauerleases
Initialisieren von Leases
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.