Compartir a través de


Activación del cliente

Los objetos activados en el cliente son aquellos cuya duración está controlada por el dominio de aplicación que realiza la llamada, igual que si el objeto fuera local en el cliente, es decir, si perteneciera al mismo. Con la activación en el cliente, se origina un viaje de ida y vuelta al servidor cuando el cliente intenta crear una instancia del objeto servidor y se crea el proxy de cliente mediante una referencia a un objeto (ObjRef) obtenida al volver de la creación del objeto remoto en el servidor. Cada vez que un cliente crea una instancia de un tipo activado en el cliente, esa instancia sólo prestará servicio a esa referencia en particular en ese cliente concreto hasta que su concesión venza y se recicle su memoria. Si un dominio de aplicación que realiza una llamada crea dos instancias nuevas del tipo remoto, cada una de las referencias del cliente invocará sólo a la instancia del dominio de aplicación de servidor desde la que se devolvió la referencia.

En COM, para guardar un objeto en memoria, los clientes guardan una referencia al mismo. Cuando el último cliente libera su última referencia, el objeto se puede eliminar a sí mismo. La activación del cliente proporciona el mismo control por parte del cliente sobre la duración del objeto de servidor, pero sin la complejidad que supone mantener referencias o hacer ping constantemente para confirmar la existencia continua del servidor o del cliente. En cambio, los objetos activados en el cliente utilizan Concesiones del período de duración ** para determinar cuánto tiempo deberían seguir existiendo. Cuando un cliente crea un objeto remoto, puede especificar un período predeterminado durante el que debe existir el objeto. Si el objeto remoto llega al límite de su duración predeterminada, se pone en contacto con el cliente para preguntarle si debe continuar existiendo y, si es así, durante cuánto tiempo más. Si el cliente no está disponible en ese momento, también se especifica un tiempo predeterminado durante el que el objeto servidor debe esperar mientras intenta ponerse en contacto con el cliente, antes de ofrecerse él mismo al recolector de elementos no utilizados. Puede que el cliente incluso solicite una duración predeterminada indefinida, con lo que de hecho impide que el objeto remoto se recicle hasta que el dominio de aplicación de servidor se desactive. La diferencia entre esto y una duración indefinida activada en el servidor es que un objeto de duración indefinida activado en el servidor atenderá todas las solicitudes de ese tipo por parte de clientes, mientras que las instancias activadas en el cliente sólo atienden al cliente y a la referencia responsables de su creación. Para obtener más información, vea Concesiones del período de duración.

Para crear una instancia de un tipo activado en el cliente, los clientes configuran su aplicación mediante programación o mediante un archivo de configuración, y llaman a new (New en Visual Basic) o pasan la configuración del objeto remoto en una llamada a Activator.CreateInstance. En el ejemplo de código siguiente se muestra una llamada en la que se supone que se ha registrado un TcpChannel para escuchar en el puerto 8080.

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
   );

Vea también

Activación | Configuración | Activación del servidor | Concesiones del período de duración