Freigeben über


Clientaktivierung

Clientaktivierte Objekte sind Objekte, deren Lebensdauer von der aufrufenden Anwendungsdomäne gesteuert wird, so wie die Lebensdauer auch gesteuert würde, wenn das Objekt sich lokal auf dem Client befände. Bei Clientaktivierung tritt ein Server-Roundtrip auf, wenn der Client versucht, eine Instanz des Serverobjekts zu erstellen. Der Clientproxy wird mit einem Objektverweis (ObjRef) erstellt, der wiederum aus der Erstellung des Remoteobjekts auf dem Server hervorgeht. Immer dann, wenn ein Client eine Instanz eines clientaktivierten Typs erstellt, dient diese Instanz nur dem betreffenden Verweis auf diesem bestimmten Client, bis der Lease abläuft und der Speicher recycelt wird. Wenn eine aufrufende Anwendungsdomäne zwei neue Instanzen des Remotetyps erstellt, ruft jeder Clientverweis nur die bestimmte Instanz in der Serveranwendungsdomäne auf, von der der Verweis zurückgegeben wurde.

In COM enthalten Clients ein Objekt im Speicher, indem sie einen Verweis auf das Objekt enthalten. Wenn der letzte Client den letzten Verweis freigibt, kann sich das Objekt selbst löschen. Die Clientaktivierung bietet dieselbe Möglichkeit zur Steuerung der Lebensdauer des Serverobjekts durch den Client, allerdings ist dies weniger kompliziert, da keine Verweise verwaltet werden müssen und auch das ständige Senden eines Ping-Signals zur Überprüfung des Fortbestehens des Servers oder Clients entfällt. Stattdessen verwenden clientaktivierte Objekte Lebensdauer-Leases, um den Zeitraum festzulegen, in dem sie vorhanden sein sollen. Ein Client kann bei der Erstellung eines Remoteobjekts einen Standardzeitraum angeben, während dessen das erstellte Objekt vorhanden sein soll. Wenn das Remoteobjekt zum Ende der Standardlebensdauer gelangt, nimmt es Kontakt mit dem Client auf, um die Lebensdauer eventuell zu verlängern und um die eventuelle Dauer festzulegen. Wenn der Client gegenwärtig nicht verfügbar ist, wird darüber hinaus ein Standardzeitraum für die Zeit festgelegt, in der das Serverobjekt versucht, eine Verbindung mit dem Client herzustellen, bevor es sich selbst für die Garbage Collection kennzeichnet. Der Client kann auch eine unbegrenzte Standardlebensdauer anfordern, so dass das Remoteobjekt erst dann recycelt wird, wenn die Serveranwendungsdomäne beendet wird. Der Unterschied zwischen diesem Fall und einer serveraktivierten unbegrenzten Lebensdauer liegt darin, dass ein unbegrenztes serveraktiviertes Objekt alle Clientanforderungen für diesen Typ abwickelt, die clientaktivierten Instanzen jedoch nur für den Client und den Verweis da sind, der für die Erstellung verantwortlich war. Weitere Informationen finden Sie unter Lebensdauer-Leases.

Zum Erstellen einer Instanz eines clientaktivierten Typs konfigurieren Clients ihre Anwendung entweder programmgesteuert (bzw. unter Verwendung einer Konfigurationsdatei) und rufen new (New in Visual Basic) auf, oder sie übergeben die Konfiguration des Remoteobjekts in einem Aufruf von Activator.CreateInstance. Das folgende Codebeispiel veranschaulicht einen solchen Aufruf. Dabei wird davon ausgegangen, dass ein TcpChannel zum Abfragen von Anschluss 8080 registriert wurde.

Dim Object() = {New UrlAttribute("tcp://computername:8080/RemoteObjectApplicationName ")}
' Note that the second parameter (Nothing) specifies that no arguments
' are being passed.
Dim MyRemoteClass As RemoteObjectClass = _
   CType( _
      Activator.CreateInstance(GetType(RemoteObjectClass), Nothing, url), _
      RemoteObjectClass)

[C#]
object[] url = {new UrlAttribute("tcp://computername:8080/RemoteObjectApplicationName")};
// Note that the second parameter (null) specifies that no arguments
// are being passed.
RemoteObjectClass MyRemoteClass = (RemoteObjectClass)Activator.CreateInstance(
      typeof(RemoteObjectClass),
      null, 
      url
   );

Siehe auch

Aktivierung | Konfiguration | Serveraktivierung | Lebensdauer-Leases