Accesso a un servizio WCF tramite Java
-
07-07-2019 - |
Domanda
Sto sviluppando un servizio web usando WCF, a cui voglio accedere usando un client scritto in Java. Codificherò i messaggi usando Protocol Buffers (con protobuf-net di Marc Gravell esatto).
È possibile raggiungere questo obiettivo o il client deve essere scritto anche in .NET? So che i dati serializzati con i buffer di protocollo sono binari, ma non so se WCF aggiunge eventuali metadati specifici della piattaforma in cima ai messaggi di protocollo codificati.
Non mi interessa se il servizio WCF è RESTful, basato su SOAP o qualunque altra forma di supporto WCF, voglio solo codificare il payload effettivo tramite PB. È possibile e, se lo è, apprezzerei molto un breve esempio.
Soluzione
Se programmate il vostro servizio WCF per prendere un array di byte, potete riempire quello che volete, come un messaggio protobuf. Potrebbe essere semplice come
[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.
}
}
Configura l'endpoint WCF come SOAP, quindi parla con quello da Java dovrebbe essere diretto. Se WCF / Soap sarebbe eccessivo per questa è un'altra questione, iirc protobuf viene fornito con un proprio framework per RPC semplice.
Altri suggerimenti
Non ho mai usato protobuf-net ma l'interop era il punto.
indipendente dalla piattaforma - portatile tra diverse architetture di programmazione