Question

Je développe un service Web utilisant WCF, auquel je souhaite accéder à l'aide d'un client écrit en Java. Je vais encoder les messages en utilisant des tampons de protocole (avec protobuf-net de Marc Gravell exact).

Est-ce possible d’atteindre ou le client doit-il également être écrit en .NET? Je sais que les données sérialisées avec des tampons de protocole sont des interopables binaires, mais je ne sais pas si WCF ajoute des métadonnées spécifiques à la plate-forme au-dessus des messages de protocole codés.

Je me moque de savoir si le service WCF est RESTful, basé sur SOAP ou sous toute autre forme prise en charge par WCF, je souhaite simplement que la charge utile réelle soit encodée à l'aide de PB. Est-ce possible et si c'est le cas, j'apprécierais beaucoup un bref exemple.

Était-ce utile?

La solution

Si vous programmez votre service WCF pour qu'il prenne un tableau d'octets, vous pouvez y insérer ce que vous voulez, comme un message protobuf. Pourrait être aussi simple que

  [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.
        }

    }

Configurez le point de terminaison WCF en tant que SOAP, puis communiquez avec celui de Java devrait être droit devant. Si WCF / Soap serait exagéré car c’est un autre problème, iirc protobuf est livré avec son propre cadre pour un simple RPC.

Autres conseils

Je n'ai jamais utilisé protobuf-net, mais l'interopérabilité était le but principal.

  

indépendant de la plate-forme - portable entre différentes architectures de programmation

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top