Pregunta

Estoy desarrollando un servicio web usando WCF, al que quiero acceder usando un cliente escrito en Java. Codificaré los mensajes usando Protocol Buffers (con protobuf-net de Marc Gravell para ser exacto).

¿Es posible lograr esto o el cliente también debe estar escrito en .NET? Sé que los datos serializados con Protocol Buffers son interopables binarios, pero no sé si WCF agrega metadatos específicos de la plataforma sobre los mensajes de protocolo codificados.

No me importa si el servicio WCF es RESTful, basado en SOAP o cualquier otra forma de soporte WCF, solo quiero que la carga útil real se codifique usando PB. ¿Es esto posible? Si es así, agradecería mucho un breve ejemplo.

¿Fue útil?

Solución

Si programa su servicio WCF para tomar una matriz de bytes, puede introducir lo que quiera allí, como un mensaje protobuf. Podría ser tan simple como

  [ServiceContract]
    public interface IMessageService{
        [OperationContract(IsOneWay = true)]
        void SendMessage(byte[] msg);
    }

  [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
   public class MessageService: IMessageService{

        public void SendMessage(byte[] msg) {
          //decode the protobuf msg and deal with it.
        }

    }

Configure el punto final WCF como SOAP y luego hable con eso desde Java debería ser directo y directo. Si WCF / Soap sería excesivo porque este es otro asunto, iirc protobuf viene con su propio marco para RPC simple.

Otros consejos

Nunca he usado protobuf-net, pero la interoperabilidad fue el punto central.

  

plataforma independiente - portátil entre diferentes arquitecturas de programación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top