3

我有一个托管的 WCF 服务,它返回一个字节 [] 的 protobuf-net 序列化数据。最初这是通过默认的 webHttpBinding 设置 (SOAP) 托管的,并且一切正常。我最近发现我需要直接从我们的客户端调用 HTTP GET 和 POST,所以我认为切换到使用 RESTful 服务会更容易。我切换到使用 WebGet 属性和 WCF REST 模板。

我试图创建一个简单的网站来测试客户端,但在反序列化数据时遇到了麻烦。这是我如何调用服务的示例:

using (WebClient client = new WebClient())
{
    result = client.DownloadString(url);
}    
// Deserialize 
BinaryVehicles binVehs;
using (var ms = new MemoryStream(StrToByteArray(result)))
{
    binVehs = Serializer.Deserialize<BinaryVehicles>(ms);
}

“结果”中返回的内容示例:

我还尝试反序列化 < base64Binary > 标签之间的数据,但没有结果。有谁知道我应该如何从 WebGet 方法发送二进制 protobuf-net 数据以及我应该如何反序列化数据?谢谢。

4

1 回答 1

2

protobuf-net主要处理序列化方面(Google 的 protobuf 规范没有进一步定义)。所以它真的归结为:你如何序列化它?

我必须承认 WCF GET 方法并不是我看过的东西,所以那里没有特殊处理。一种简单的方法可能是只查看返回一个字符串,然后自己处理 base-64 编码,但老实说,如果您正在执行 HTTP GET,那么 WCF本身似乎有点矫枉过正。

我在这里写了一篇关于通过 HTTP GET 在服务器上使用 ASP.NET MVC 的 protobuf 的博客。链接的示例代码还包括与线路兼容的 ASP.NET 实现。

如果我们可以做一些适当的事情来使 WCF GET 更容易,我会全力以赴......

于 2010-07-07T09:44:36.087 回答