Compartir a través de


Generar una aplicación host

La clase RemotableType definida en el tema Generar un tipo de uso remoto no es especial por sí misma. Para que los objetos de otros dominios de aplicación puedan crear instancias de este objeto de manera remota, es preciso generar una aplicación host o de escucha con el fin de realizar dos acciones:

  • Elegir y registrar un canal, que es un objeto que controla los protocolos de red y los formatos de serialización en nombre del usuario.
  • Registrar el tipo con el sistema .NET remoting de modo que pueda utilizar el canal con el fin de escuchar las solicitudes de dicho tipo.

.NET Framework incluye dos canales predeterminados, HttpChannel (que utiliza el formato SOAP) y TcpChannel (que utiliza el formato binario). HttpChannel es un canal apropiado para empezar ya que, en algunos casos, se puede utilizar mediante los servidores de seguridad sin abrir ningún puerto y es compatible con los protocolos estándar de seguridad y autenticación. Para obtener más información sobre cómo elegir los canales apropiados para cada caso, vea Canales.

Las aplicaciones de escucha se pueden generar mediante cualquier tipo de dominio de aplicación: una aplicación de formularios Windows Forms, una aplicación Web de ASP.NET, una aplicación de consola, un servicio de Windows (también denominado servicio de Windows NT), o cualquier otro dominio de aplicación administrada. Dado que la configuración remota se realiza por cada dominio de aplicación, el dominio de aplicación debe ejecutarse para poder escuchar las solicitudes.

Nota   A diferencia de COM, la interacción remota no inicia la aplicación host o de servidor. Se trata de una importante diferencia entre .NET remoting y la activación remota en COM.

La configuración puede realizarse mediante programación o mediante un archivo de configuración de aplicaciones o equipos. El siguiente código implementa un simple dominio de aplicación host RemotableType que utiliza un archivo de configuración. (El uso de un archivo de configuración permite cambiar la configuración remota sin recompilar el ejecutable, entre otras cosas.) Para obtener información más detallada sobre la configuración de la infraestructura de .NET remoting, vea Configuración.

' Listener.vb
Imports System
Imports System.Runtime.Remoting

Public Class Listener
   Public Shared Sub Main()
      RemotingConfiguration.Configure("Listener.exe.config")
      Console.WriteLine("Listening for requests. Press Enter to exit...")
      Console.ReadLine()
   End Sub 'Main
End Class 'Listener
[C#]
// Listener.cs
using System;
using System.Runtime.Remoting;

public class Listener{
   public static void Main(){
      RemotingConfiguration.Configure("Listener.exe.config");
      Console.WriteLine("Listening for requests. Press Enter to exit...");
      Console.ReadLine();
   }
}

Para compilar esta clase en un ejecutable host o de escucha mediante las herramientas de la línea de comandos incluidas en .NET Framework SDK, guárdela como Listener.extensión_de_lenguaje (o utilice otro nombre de archivo, donde la extensión de lenguaje es el lenguaje que desee compilar). Guarde el archivo en el mismo directorio donde guardó RemotableType.dll que ha generado en el tema Generar un tipo de uso remoto. En el símbolo del sistema de dicho directorio escriba el siguiente comando:

[Visual Basic]

vbc /r:RemotableType.dll Listener.vb

[Visual Basic]

[C#]

csc /noconfig /r:RemotableType.dll Listener.cs

[C#]

En este ejemplo, el nombre de archivo es:

[Visual Basic]

Listener.vb

[Visual Basic]

[C#]

Listener.cs

[C#]

La clase Listener debe poder encontrar el archivo Listener.exe.config para cargar la configuración de la clase RemotableType. Este archivo de configuración debe guardarse en el mismo directorio que Listener.exe; en caso contrario, no se encontrará y se iniciará una excepción. El siguiente código muestra el archivo de configuración Listener.exe.config de este dominio de aplicación host o de escucha.

<configuration>
   <system.runtime.remoting>
      <application>
         <service>
            <wellknown 
               mode="Singleton" 
               type="RemotableType, RemotableType" 
               objectUri="RemotableType.rem"
            />
         </service>
         <channels>
            <channel ref="http" port="8989"/>
         </channels>
      </application>
   </system.runtime.remoting>
</configuration>

El sistema de interacción remota utiliza la información de este archivo para escuchar y enrutar las solicitudes remotas hacia una instancia de un tipo de uso remoto. En el archivo se especifica el modo de activación de servidor Singleton, el nombre de tipo y el ensamblado del tipo en cuyo nombre debe escucharse, así como el identificador URI (Identificador uniforme de recursos) o el nombre externo del objeto. (Para obtener más información sobre los identificadores URI de objetos y la interacción remota, vea Direcciones URL de activación.) En el archivo se indica asimismo al sistema de interacción remota que escuche las solicitudes en el puerto 8989 mediante el HttpChannel proporcionado por el sistema.

Nota   Si bien hay pocos valores en el anterior archivo de configuración, la mayoría de los problemas relacionados con el uso de .NET remoting se producen debido a que algunos de estos valores son incorrectos o no corresponden a los valores de configuración de las aplicaciones de cliente. Es fácil escribir incorrectamente un nombre, olvidar un puerto u omitir un atributo. Si tiene algún problema con la aplicación de interacción remota, compruebe primero los valores de configuración.

Vea también

Generar una aplicación .NET Remoting básica | Configuración | Esquema de la configuración de la interacción remota | Activación del servidor | WellKnownObjectMode.Singleton