Actualmente estoy buscando en Thrift para usar como un marco de RPC para nuestras aplicaciones (principalmente escrito en C# y Silverlight). Llegué a implementar un servicio y consumirlo desde una aplicación de consola C# (usando un socket como transporte).¿Cómo implemento un servicio C# Thrift y lo consumo con un cliente de Silverlight?
Para el C# código del lado del servidor de mi código parecía: (básicamente copiar los tutoriales incluidos con el código fuente)
MyServiceHandler handler = new MyServiceHandler();
MyService.Processor processor = new MyService.Processor(handler);
TServerTransport serverTransport = new TServerSocket(9090);
TServer server = new TSimpleServer(processor, serverTransport);
server.Serve();
Para el código del lado del cliente que parecía:
TTransport transport = new TSocket("localhost", 9090);
TProtocol protocol = new TBinaryProtocol(transport);
MyService.Client client = new MyService.Client(protocol);
transport.Open();
client.SomeServiceCall();
Sin embargo , consumiremos el servicio de un cliente de Silverlight y, desafortunadamente, no hay soporte para sockets en Silverlight for Thrift. Supongo que me veo forzado a usar la comunicación HTTP entre el cliente y el servicio, usando las clases ThrowClip de Thrift y THttpHandler. No pude encontrar ningún ejemplo de cómo hacer esto, ¿puede alguien señalarme en la dirección correcta? Algún ejemplo de servidor y código del lado del cliente sería apreciado.
Con Silverlight, * y sus muchas y variadas consideraciones de seguridad *, el patrón generalmente es llamar a servicios externos desde el servidor/servicio web de Silverlight u otro servicio WCF o RIA en su hosting. Esto significa que su aplicación Silverlight tiene un único puerto de escala para cualquier servicio. ¿Puedes proporcionar algún código de muestra? –
Agregué un código de muestra –
¿Cómo es MyService? – Chazt3n