Cómo crear acceso de cliente al servidor remoto mediante Visual C#

Para obtener una versión de este artículo para Microsoft Visual Basic .NET, consulte
300943 .

Este artículo hace referencia a los siguientes espacios de nombres de la Biblioteca de clases de Microsoft .NET Framework:
  • System.Runtime.Remoting
  • System.Runtime.Remoting.Channels
  • System.Runtime.Remoting.Channels.Tcp

EN ESTA TAREA

Resumen

En este artículo paso a paso se muestra cómo crear un cliente que tiene acceso a un servidor remoto. Este cliente puede estar ubicado en el mismo equipo, en otro equipo o en otra red. El presente artículo se basa en el siguiente artículo de Microsoft Knowledge Base:
307445 Crear un servidor remoto mediante Microsoft Visual C# .NET

Requisitos

En esta lista se indican el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitará:

  • Microsoft Visual Studio .NET o Microsoft Visual Studio 2005
En este artículo se da por supuesto que está familiarizado con los temas siguientes:
  • Visual Studio .NET o Visual Studio 2005
  • Redes
También debe generar las aplicaciones que se describen en
307445 antes de iniciar el procedimiento descrito en este artículo.

Cómo crear un cliente de un servidor remoto

  1. Cree una nueva aplicación de consola en Visual C# .NET o en Visual C# 2005. Se creará Class1 de manera predeterminada.

    Nota
    En Visual C# 2005 se crea Program.cs de forma predeterminada.
  2. Cambie el nombre Class1.cs por ClientApp.cs.
  3. Agregue una referencia al espacio de nombres System.Runtime.Remoting al proyecto.
  4. Agregue una referencia al ensamblado ServerClass.dll que creó en
    307445 .

    Un cliente tiene tres formas diferentes de hacer referencia a objetos remotos y cada una de ellas se resuelve en tiempo de compilación. En este ejemplo se utiliza la primera opción (a).
    1. Compile el objeto de servidor y especifique el archivo .exe o .dll como una referencia para el compilador cuando compile el cliente. Este método resulta útil cuando los componentes del servidor y los componentes del cliente se desarrollan en el mismo sitio.
    2. Derive el objeto de servidor de una clase de interfaz y compile el cliente con la interfaz. Este método resulta útil cuando los componentes del servidor y los componentes del cliente no se desarrollan en el mismo sitio. La interfaz o las interfaces se pueden compilar en una biblioteca de vínculos dinámicos (DLL) y enviarse a los sitios cliente según sea necesario En la medida de lo posible, evite cambiar una interfaz publicada.
    3. Utilice la herramienta SoapSUDS para extraer los metadatos necesarios de un objeto de servidor en ejecución. Este método resulta útil cuando los componentes del servidor y los componentes del cliente se desarrollan en sitios diferentes y no hay disponibles clases de interfaz. Apunte la herramienta SoapSUDS a un identificador de recursos uniforme (URI) remoto y genere los metadatos necesarios como un archivo de código fuente o como un archivo DLL. Es importante señalar que la herramienta SoapSUDS sólo extrae metadatos, pero no genera el código fuente del objeto remoto.
  5. Use la instrucción using de los espacios de nombres Remoting, Remoting.Channels y Remoting.Channels.TCP, y el nombre de clase ServerClass, para que no se le pida calificar declaraciones en esos espacios de nombre más adelante en el código. Debe emplear la instrucción using antes de cualquier otra declaración.
    using System;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;
    using ServerClass;
  6. Declare una variable para inicializar un objeto TcpChannel que el cliente utilizará para conectarse a la aplicación de servidor. Utilice el método RegisterChannel para registrar el canal con los servicios de canal. Agregue el siguiente código de declaración en el procedimiento Main de Class1:
    TcpChannel chan = new TcpChannel();
    ChannelServices.RegisterChannel(chan);
  7. Declare y cree una instancia del servidor remoto. En este ejemplo, utilice el método GetObject del objeto Activator para crear una instancia del objeto myRemoteClass y especifique los siguientes parámetros:
    • El nombre de tipo completo del objeto que se está registrando (en este ejemplo, ServerClass.myRemoteClass), seguido del nombre del ensamblado ServerClass. Debe especificar aquí tanto el nombre del espacio de nombres como el nombre de la clase. Como no especificó un espacio de nombres en la sección anterior, se utilizará el espacio de nombres raíz predeterminado.
    • Active el URI del objeto. El URI debe incluir el protocolo (TCP), el nombre del equipo (localhost), el puerto (8085) y el extremo del objeto de servidor (RemoteTest). Para tener acceso al servidor remoto ServerClass que está ubicado en el servidor local, utilice el URI "tcp://localhost:8085/RemoteTest".
      myRemoteClass obj = (myRemoteClass) Activator.GetObject(typeof(myRemoteClass),
      "tcp://localhost:8085/RemoteTest");
      if (obj == null)
      System.Console.WriteLine("Could not locate server");
      else
      if (obj.SetString("Sending String to Server"))
      System.Console.WriteLine("Success: Check the other console to verify.");
      else
      System.Console.WriteLine("Sending the test string has failed.");
  8. Utilice el método ReadLine del objeto Console para mantener la aplicación cliente en funcionamiento.
    System.Console.WriteLine("Hit <enter> to exit...");
    System.Console.ReadLine();
  9. Genere el proyecto.
  10. Asegúrese de que la aplicación de servidor se está ejecutando. (Es el archivo EXE que creó en
    307445 .)
  11. Ejecute el proyecto y pruebe la comunicación entre el cliente y el servidor.

Referencias

Para obtener una introducción general de .NET Remoting, consulte la Guía del programador de Microsoft .NET Framework.

Para obtener más información acerca de la clase TcpChannel, visite el siguiente sitio Web de Microsoft: Para ver una introducción a Microsoft .NET Remoting Framework (artículos técnicos de carácter general sobre desarrollo .NET), visite el siguiente sitio Web de Microsoft:
Introducción a Microsoft .NET Remoting Framework
http://msdn2.microsoft.com/en-us/library/ms973864.aspx
Para obtener más información acerca de .NET Remoting, visite el siguiente sitio Web de Microsoft: Para obtener más información acerca de los métodos Activator.GetObject y Type.GetType, consulte la documentación de la biblioteca de clases de .NET Framework.

Para obtener más información general acerca de Visual C# .NET, vea el siguiente grupo de noticias Usenet:
microsoft.public.dotnet.languages.csharp
http://go.microsoft.com/fwlink/?linkid=5217
Para obtener más información al respecto, consulte los libros siguientes:
Tom Archer Inside C# Microsoft Press, 2001
Charles Petzold Programming Microsoft Windows with C# Microsoft Press, 2001

Mickey Williams Microsoft Visual C# (Core Reference) Microsoft Press, 2002
Propiedades

Id. de artículo: 307739 - Última revisión: 9 may. 2007 - Revisión: 1

Comentarios