lunes, 27 de octubre de 2008

Ejemplo de Remoting con C#

Hola, a continuación un ejemplo de cómo hacer Servidor de Remoting en C#.

Archivo de la interfaz IProgram.cs esta interfaz se le proporciona al cliente, por lo que se recomienda que las interfaces esten en una libreria comun, y no en el mismo proyecto que el Servidor, para que tanto el cliente como el Servidor hagan referencia a esas Interfaces. Los métodos de estas interfaces son los que definiran las funciones que seran expuestas en el servidor, y los objetos del servidor deberan implementar estas interfaces




Archivo de la interfaz Program.cs
Los servidores deberan tener objetos que hereden de MarshalByRefObject e implementar las interfaces necesarias para exponer los métodos. Se debera registrar un canal, puede ser TCP o HTTP, el primero puede correr en un servidor StandAlone y el Segundo en un servidor IIS, Se registra el Servicio como Singleton o como SingleCall, y se le ad un URI “Uniform Resource Identifier”, Los métodos para registrar los Puertos y los objetos remotos son:
TcpChannel channel = new TcpChannel(2323);
ChannelServices.RegisterChannel(channel,false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Program), "Server", WellKnownObjectMode.Singleton);




En este caso el Servidor se esta llamando a si mismo como si fuera un cliente, pero podra ser invocado desde cualquier aplicación con la instrucción:
IProgram p = (IProgram)Activator.GetObject(typeof(IProgram), "tcp://localhost:2323/Server");




Asi el cliente invoca al servidor y la interfaz IProgram instancia un proxy al objeto remoto

No hay comentarios: