Share via


Cómo: Generar una aplicación host

Por sí misma, la clase RemotableType definida en el tema Cómo: Generar un tipo utilizable de forma remota no es especial. Para permitir a los objetos de otros dominios de aplicación crear remotamente instancias de ese objeto, debe generar un host o aplicación de agente de escucha que desempeñe las siguientes tareas:

  • Elija y registre un canal, que es un objeto que administra los protocolos de redes y formatos de serialización en su nombre.

  • Registre su tipo con el sistema .NET Remoting para que pueda utilizar su canal con el fin de realizar escuchas para las solicitudes para su tipo.

.NET Framework incluye tres canales predeterminados, canal Http (que utiliza de forma predeterminada el formato SOAP), canal Tcp (que utiliza de forma predeterminada el formato binario) y IpcChannel (que utiliza de forma predeterminada el formato binario). canal Http se puede utilizar a través de los cortafuegos sin abrir un puerto y admite seguridad estándar y protocolos de autenticación. Para obtener más información sobre cómo elegir los canales que mejor se adaptan a su escenario, vea Canales.

Puede generar aplicaciones de agente de escucha mediante cualquier tipo de dominio de aplicación: una aplicación de Windows Forms, una aplicación Web de ASP.NET, una aplicación de consola, un servicio de Windows (también conocido como un servicio de Windows NT) o cualquier otro dominio de aplicación administrada. Dado que la configuración remota se hace para cada dominio de aplicación, el dominio de aplicación se debe ejecutar para realizar las escuchas de las solicitudes.

Nota:

A diferencia de COM, la comunicación remota no inicia el host o la aplicación de servidor para usted. Ésta es una diferencia importante entre .NET Remoting y la activación remota en COM.

La configuración se puede realizar mediante programación o utilizando un archivo de configuración de la aplicación o del equipo.

El sistema remoto utiliza la información de este archivo para realizar escuchas y para enrutar las solicitudes remotas a una instancia de un tipo utilizable de forma remota. El archivo especifica el modo de activación del servidor, el nombre de tipo y el ensamblado del tipo en el nombre del que se realizan las escuchas y el objeto Identificador uniforme de recursos (URI) o nombre externo del objeto. (Para obtener más información sobre objetos URI y comunicación remota, vea Direcciones URL de activación.)

Nota:

Aunque en el archivo de configuración precedente solamente hay algunos valores, la mayoría de los problemas al utilizar .NET Remoting se producen porque algunos de estos valores no coinciden con los valores de configuración de las aplicaciones del cliente. Resulta fácil escribir un nombre de forma errónea, olvidar un puerto o descuidar un atributo. Si tiene problemas con su aplicación remota, compruebe primero sus valores de configuración.

Utilizar un archivo de configuración le permite cambiar la configuración remota sin volver a compilar su aplicación ejecutable, entre otras cosas. Para obtener más información acerca de la configuración de la infraestructura de .NET Remoting, vea Esquema de configuración de la comunicación remota.

Nota:

Vea Cómo: Compilar y ejecutar una aplicación remota básica para obtener instrucciones completas sobre cómo generar y ejecutar este ejemplo.

Para implementar un dominio de la aplicación host simple que utiliza un archivo de configuración

  1. Continuando desde Cómo: Generar un tipo de objeto utilizable de forma remota, cree otro directorio en remoting y llámelohost. Cree un archivo de configuración para la clase remota. La aplicación host debe poder cargar la configuración para la clase remota y, por consiguiente, el archivo de configuración debería estar guardado en el mismo directorio que el ensamblado de la aplicación host o no se encontrará y se producirá una excepción. El código siguiente muestra un archivo de configuración que especifica que el objeto remoto es un Singleton, su implementación es una clase llamada RemotableType situada en un ensamblado llamado RemotableType. A continuación, se registra un HttpChannel que realiza escuchas en el puerto 8989. Guarde este archivo en el directorio remoting\listener. El nombre del archivo debería seguir el modelo de app-name.exe.config. En este caso, se denomina listener.exe.config.

    <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>
    
  2. Cree un nuevo archivo de origen para el idioma de su elección. En la parte superior del archivo de origen, importe el espacio de nombres System.Runtime.Remoting siguiente:

    Imports System
    Imports System.Runtime.Remoting
    
    using System;
    using System.Runtime.Remoting;
    
  3. En el método Main, cargue el archivo de configuración que configura la clase remota, muestre un mensaje que permita al usuario saber que se está ejecutando el host y, a continuación, espere a la pulsación de una tecla. Guarde este archivo en el directorio remoting\listener.

    Public Class Listener
        Public Shared Sub Main()
            RemotingConfiguration.Configure("Listener.exe.config", False)
            Console.WriteLine("Listening for requests. Press enter to exit...")
            Console.ReadLine()
        End Sub
    End Class
    public class Listener
    {
        public static void Main()
        {
            RemotingConfiguration.Configure("Listener.exe.config", false);
            Console.WriteLine("Listening for requests. Press enter to exit...");
            Console.ReadLine();
        }
    
    }
    
  4. Copie el RemotableType.dll de generado en Cómo: Generar un tipo de objeto utilizable de forma remota en el directorioremoting\listener. La aplicación host debe hacer referencia a este ensamblado. Compile esta clase en una aplicación ejecutable escribiendo el comando siguiente:

    vbc /r:RemotableType.dll Listener.vb
    csc /noconfig /r:RemotableType.dll Listener.cs
    
  5. Ahora tiene un ensamblado llamado Listener.exe. Intente ejecutarlo ahora para ver si la configuración tiene éxito. Se puede mostrar un diálogo de seguridad si un cortafuegos bloquea actualmente el puerto 8989. En ese caso, haga clic en el botón "Desbloquee" para abrir el cortafuegos de forma temporal en ese puerto.

  6. Para obtener información sobre cómo utilizar el tipo utilizable de forma remota, vea Cómo: Generar una aplicación cliente.

Ejemplo

' Listener.vb
Public Class Listener
    Public Shared Sub Main()
        RemotingConfiguration.Configure("Listener.exe.config", False)
        Console.WriteLine("Listening for requests. Press enter to exit...")
        Console.ReadLine()
    End Sub
End Class
// Listener.cs
using System;
using System.Runtime.Remoting;

public class Listener
{
    public static void Main(string[] args)
    {
        RemotingConfiguration.Configure("Listener.exe.config", false);
        Console.WriteLine("Listening for requests. Press enter to exit...");
        Console.ReadLine();
    }
}

Consulte también

Tareas

Cómo: Generar una aplicación host

Referencia

Esquema de configuración de la comunicación remota

Conceptos

Configuración de aplicaciones remotas
Activación del servidor

Otros recursos

Generar una aplicación básica de comunicación remota de .NET Framework

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.