我正在使用WCF开发Web服务,我想使用Java编写的客户端访问它。我将使用Protocol Buffers(使用Marc Gravell的 protobuf-net )对消息进行编码精确的)。

这是否可以实现或者客户端也必须用.NET编写?我知道使用Protocol Buffers序列化的数据是二进制可互操作的,但我不知道WCF是否在编码的协议消息之上添加了任何特定于平台的元数据。

我不关心WCF服务是RESTful,基于SOAP还是WCF支持的其他任何形式,我只想要使用PB对实际有效负载进行编码。这是否可能,如果是的话,我非常感谢一个简短的例子。

有帮助吗?

解决方案

如果您对WCF服务进行编程以获取字节数组,则可以在其中填充任何内容,例如protobuf消息。可以像

一样简单
  [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.
        }

    }

将WCF端点配置为SOAP,然后与之交谈 Java应该直截了当。 Wher / Soap更糟糕,因为这是另一回事,iirc protobuf带有自己的简单RPC框架。

其他提示

我从未使用过protobuf-net,但互操作才是重点。

  

平台独立 - 可在不同编程架构之间移植

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top