0

我正在使用 WCF 开发 Web 服务,我想使用用 Java 编写的客户端访问它。我将使用协议缓冲区对消息进行编码(准确地说是 Marc Gravell 的protobuf-net)。

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

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

4

2 回答 2

1

如果您对 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 中与之对话应该是直截了当的。WCF/Soap 是否会为此过度杀伤是另一回事,iirc protobuf 带有自己的简单 RPC 框架。

于 2009-09-16T19:02:56.667 回答
-1

I have never used protobuf-net but interop was the whole point.

platform independent - portable between different programming architectures

于 2009-09-16T18:16:18.597 回答