我正在使用WCF开发Web服务,我想使用Java编写的客户端访问它。我将使用Protocol Buffers对消息进行编码(确切地说是Marc Gravell的protobuf-net。)
这是否可以实现或者客户端也必须用.NET编写?我知道使用Protocol Buffers序列化的数据是二进制可互操作的,但我不知道WCF是否在编码的协议消息之上添加了任何特定于平台的元数据。
我不关心WCF服务是RESTful,基于SOAP还是WCF支持的其他形式,我只想要使用PB对实际有效负载进行编码。这是否可能,如果是的话,我非常感谢一个简短的例子。
答案 0 :(得分: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应该直截了当。 Wher / Soap更糟糕,因为这是另一回事,iirc protobuf带有自己的简单RPC框架。
答案 1 :(得分:-1)
我从未使用过protobuf-net,但互操作才是重点。
平台独立 - 可在不同编程架构之间移植