Compartir a través de


Configuración de objeto remoto

Los programadores que publican o usan objetos utilizados de forma remota son responsables de la configuración del sistema .NET Remoting de modo que las aplicaciones que lo utilizan funcionen correctamente. Para ello, puede usar un programa, el archivo de configuración de la aplicación o el archivo de configuración del equipo. Los administradores pueden utilizar la herramienta Configuración de .NET Framework para indicar clientes de interacción remota en diferentes extremos o para modificar la duración de los objetos activados en el cliente (<activated>) o en el servidor (<wellknown>) cuando sea necesario.

Las clases que se utilizan de forma remota se registran al colocarlas dentro del elemento <application>, que es un elemento secundario de <system.runtime.remoting>. Los objetos que consume una aplicación son agrupados por la aplicación remota en la sección <client> del elemento <application>. Los objetos que expone una aplicación se declaran dentro de una sección <service> en el nodo <application>. Si no aloja sus tipos remotos en los Servicios de Internet Information Server (IIS), puede especificar un atributo name para su aplicación que, a continuación, se convierta en parte de la dirección URL de activación, pero no es necesario en ningún caso. Para obtener detalles acerca del alojamiento en IIS, vea Alojar objetos remotos en Servicios de Internet Information Server (IIS).

Además, .NET Remoting no recoge automáticamente ningún valor de configuración de interacción remota en el archivo de configuración de la aplicación. Para configurar la interacción remota mediante un archivo de configuración, debe llamar a RemotingConfiguration.Configure. El único caso en el que el dominio de la aplicación host carga automáticamente el archivo de configuración de interacción remota es cuando el tipo que se utiliza de forma remota está alojado en IIS. En este caso, .NET Remoting sólo recogerá de forma automática la configuración del servicio del archivo Web.config. La configuración del cliente se pasará por alto hasta que el archivo de configuración vuelva a cargarse con una llamada directa al método RemotingConfiguration.Configure.

El esquema siguiente muestra la estructura de los elementos que se pueden utilizar para configurar una aplicación de modo que use .NET Remoting.

<configuration>
   <system.runtime.remoting>
      <application>
         <lifetime>
         <channels> (instancia)
            <channel> (instancia)
               <serverProviders> (instancia)
                  <provider> (instancia)
                  <formatter> (instancia)
               <clientProviders> (instancia)
                  <provider> (instancia)
                  <formatter> (instancia)
         <client>
            <wellknown> (instancia de cliente)
            <activated> (instancia de cliente)
         <service>
            <wellknown> (instancia de servicio)
            <activated> (instancia de servicio)
         <soapInterop>
            <interopXmlType>
            <interopXmlElement>
            <preLoad>
      <channels> (plantilla)
         <channel> (plantilla)
            <serverProviders> (instancia)
               <provider> (instancia)
               <formatter> (instancia)
            <clientProviders> (instancia)
               <provider> (instancia)
               <formatter> (instancia)
      <channelSinkProviders>
            <serverProviders> (plantilla)
               <provider> (plantilla)
               <formatter> (plantilla)
            <clientProviders> (plantilla)
               <provider> (plantilla)
               <formatter> (plantilla)
      <debug>

Para utilizar la configuración de interacción remota, debe llamar a RemotingConfiguration.Configure en el archivo de configuración de la aplicación. Tenga en cuenta que Common Language Runtime carga automáticamente el archivo de configuración del equipo antes de cargar el de la aplicación. No llame a RemotingConfiguration.Configure en el archivo de configuración del equipo. Si lo hace puede iniciar excepciones cuando vuelvan a cargarse algunos objetos que ya estén en la memoria.

Configuración de la duración

Para especificar una duración predeterminada para todos los objetos activados en el cliente y los objetos Singleton activados en el servidor en una aplicación, se utiliza el elemento <lifetime>. En el código siguiente se demuestra una configuración de duración muy simple.

<configuration>
   <system.runtime.remoting>
     <application>
        <lifetime 
          leaseTime = "10M" 
          sponsorshipTimeOut = "2M"
          renewOnCallTime = "2M" 
          LeaseManagePollTime = "10s"
        />
     </application>
   </system.runtime.remoting>
</configuration>

Para obtener detalles acerca de la configuración mediante programación y conceptos relacionados con la duración, vea Concesiones del período de duración.

Elementos de instancia y elementos de plantilla

Hay dos tipos de elementos relacionados con la creación de canales: elementos de plantilla y elementos de instancia. Los elementos de plantilla se utilizan para declarar un canal, un proveedor de receptores de canal de servidor o de cliente, o un formateador de receptores de canal o de servidor para utilizarlo en cualquier lugar dentro de la misma aplicación simplemente haciendo referencia al atributo ID del elemento de plantilla.

Nota   Cuando se utiliza el atributo type en un elemento de plantilla para crear una configuración predeterminada que utilice un tipo implementado por el sistema, como BinaryFormatter o HttpChannel, se debe especificar la información de tipo completa, incluida la información de versión, referencia cultural y nombres seguros. Dicha información puede obtenerse del archivo machine.config o mediante la utilidad de la caché de ensamblados global Gacutil.exe. Esto no es necesario si el tipo se define en un ensamblado que no esté en la caché de ensamblados global sino que sea localizable, o si se hace referencia al tipo en un elemento de instancia, donde se puede utilizar el atributo ref.

Por tanto, si deseara crear un HttpChannel con un nombre distinto de "http" y usarlo para la aplicación de servidor, por ejemplo, lo crearía como se muestra a continuación.

<configuration>
 <system.runtime.remoting>
    <application>
      <service>
        <wellknown 
          type="Type,Assembly" 
          mode="Singleton" 
          objectUri="endpoint"
        />
      </service>
      <channels>
        <channel ref="OtherChannel"/>
      </channel>
    </application>
    <channels>
      <channel 
        id="OtherChannel"
        type="CompleteTypeInformation including versiong and strong-name information"
      />
    </channels>
 </system.runtime.remoting>
</configuration>

Vea también

Configuración | Registrar objetos remotos mediante archivos de configuración | System.Runtime.Remoting.RemotingConfiguration (Clase) | Información general de .NET Remoting | Canales | Registro de canal | Registro en el servidor | Registro en el cliente | Registro de canal