Acessando um WCF-service usando Java
-
07-07-2019 - |
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.
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