Pergunta

Estou desenvolvendo um serviço web usando WCF, o que eu quero de acesso utilizando um cliente escrito em Java. I irá codificar as mensagens utilizando o protocolo de buffers (com protobuf-net de Marc Gravell ser exato).

Esta é possível achive ou deve o cliente ser escritos em .NET bem? Eu sei que os dados serializados com o Protocolo Buffers é binário interopable mas eu não sei se WCF adiciona qualquer meta-dados específicos da plataforma no topo do protocolo de mensagens codificadas.

Eu não me importo se o serviço WCF é RESTful, baseados em SOAP ou quaisquer outras formas WCF-apoio, eu só quero que a carga real a ser codificados usando PB. Isso é possível e se for, eu gostaria muito que um exemplo breve.

Foi útil?

Solução

Se você programar seu serviço WCF para tomar um array de bytes, você pode encher o que quiser lá dentro, como um protobuf message.Could ser tão simples 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.
        }

    }

Configurar o endpoint WCF como SOAP, em seguida, falar com que a partir de Java deve ser reto foreward. Wether WCF / Soap seria um exagero para isso é outro assunto, IIRC protobuf vem com seu próprio quadro para a simples RPC.

Outras dicas

Eu nunca usei protobuf-net, mas interoperabilidade foi o ponto inteiro.

plataforma independente - portátil entre diferentes arquiteturas de programação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top