2011-05-17 211 views
2

我们正在寻找使用'协议缓冲区'在.net客户端和java服务器之间进行通信。使用protobuf-net与WCF客户端和一个java服务器

理想情况下,我们希望通过WCF使用protobuf-net,因为我们与其他服务的其他通信的其余部分都通过WCF堆栈。

我有一个概念证明.net WCF客户端使用protobuf-net端点行为与.net WCF服务器对话,似乎工作正常。

我的问题是我们如何去配置java服务器发送proto-buf到我们的WCF客户端?即我们是否需要将java服务器作为SOAP服务公开给WCF,并通过它发送原始buf?

回答

0

在这种情况下谁的唯一,我会强烈建议使用定期协议的SOAP,并将byte[]Stream(或其他任何工作)公开为有效负载 - 然后在您的应用程序中处理编码。在WCF

串行器钩意味着它是很大程度上类似于byte[]有效载荷(在每个参数/结果的基础上),但我不能保证它会WCF的外部容易地解构。

此外......如果您将它描述为包含BLOB的SOAP消息,那么您对SOAP是真实的。

+0

谢谢你的帮助。我们确实想要保留WCF堆栈,所以会试着按照Jon的建议重新构建有效负载,如果我们不能这样做,就会回到常规SOAP。将以任何方式发布我们的发现。 – 2011-05-18 08:05:28

+0

@Edward - 它仍然是WCF - 它不会在WSDL中具有强类型定义(只是'byte []') – 2011-05-18 08:20:27

1

如果你的WCF客户端正在使用protobuf-net端点,它不使用SOAP吗?我不能说我已经亲自使用protobut-net,但我知道这是一个替代到SOAP。基本上,看看它使用的协议,并实现与servlet相同的协议。说实话,我希望这是相当简单的。

如果一切正常,你可以为开源贡献的servlet,我怀疑你是不是想做到这一点:)

+0

I **认为**端点作为SOAP端点公开,protobuf-net添加了一个WCF端点行为,该行为对SOAP消息主体进行编码/解码并将其解码到Base64中。 我猜我需要在Java端模仿这种行为 – 2011-05-17 19:05:50

+0

@Edward:如果它确实*就是这么做的,那么在Java端可能很容易 - 你只需要公开一个soap服务一个方法接受一个字节数组并返回一个字节数组。我建议你使用Wireshark或Fiddler来验证这是第一步。 – 2011-05-17 19:28:48