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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top