Odata 压缩 - 有任何支持吗? (用于 WinRT 的 WCF 数据服务 5.0)

Posted

技术标签:

【中文标题】Odata 压缩 - 有任何支持吗? (用于 WinRT 的 WCF 数据服务 5.0)【英文标题】:Odata compression - Is there ANY support? (WCF Data Services 5.0 for WinRT) 【发布时间】:2012-11-03 07:17:06 【问题描述】:

上下文:当前使用 WCF Data Services 5.0 和 Odata 用于 Windows 8 应用商店应用程序。

我今天一直在尝试压缩从我的服务通过网络传输过来的 OData,但遇到了很多围绕支持的问题。

不支持二进制序列化。

不支持 json(Content-Type 标头中当前不支持库抛出“application/json”)

json lite 尚未发布

在 http 响应中添加 gzip 请求有效(服务器返回压缩) - 但客户端库似乎不想反序列化它。 (xml解析异常)

我今天的最后一次尝试是尝试获取 http 响应,并自己手动反序列化流(GZipStream 不可用,但我知道有第 3 方替代方案) - 但我找不到任何 Microsoft.Data.Services.Client.WindowsStore 将向我公开流的事件/覆盖。

我想实施 OData 以利用标准 WCF Web 服务的性能和效率提升 - 但无法通过线路压缩流,我什么也得不到。

有没有人有这方面的经验,或如何处理的建议?

【问题讨论】:

我知道 OData Xml 格式很冗长,但您实际发送了多少数据?也许您可以发送更少的数据...您尝试压缩数据是否有任何具体原因? 我正在为任何给定的 UI 屏幕发送尽可能少的数据。该应用程序的两个目标设备是 Surface RT 和 Windows Phone 7。通过网络压缩数据对于遵守设备可能具有的任何带宽限制至关重要。 对于windows phone 7,DataServiceContext 类中公开了一个名为 ReadingResponse 的事件。阅读这篇文章blogs.msdn.com/b/astoriateam/archive/2011/10/04/… 【参考方案1】:

您是否按照此处相同的步骤获取 json 响应。客户端必须发送 MaxDataServiceVersion 标头: http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx

我还检查了 Odata 5.1.0 是否已在 nuget 上发布。这有更好的 json 支持: https://nuget.org/packages/Microsoft.Data.Services/5.1.0

您的另一个选择是使用 asp.net web api 并尝试 odata 支持: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

【讨论】:

感谢您的评论。但是 - 我没有使用 Microsoft.Data.Services dll,我使用的是 Microsoft.Data.Services.Client.WindowStore dll,因为消费设备是 Windows 8 Store 应用程序。我能够让服务器在 Json 中发送 OData,但客户端根据我的第二个要点抛出 NotSupported 异常。 microsoft.com/en-us/download/details.aspx?id=30714 是我正在使用的 WCF 数据服务包 我不是 Windows 8 开发人员。但似乎有一个新版本的用于 Windows 商店应用程序的 Odata 客户端工具microsoft.com/en-us/download/details.aspx?id=35461 更多信息在这里blogs.msdn.com/b/astoriateam/archive/2012/10/30/… Pratik,感谢您的回复。但是,除非我遗漏了什么,否则这些链接适用于 Windows Phone 8。我正在开发一个 WinRT Store 应用程序。

以上是关于Odata 压缩 - 有任何支持吗? (用于 WinRT 的 WCF 数据服务 5.0)的主要内容,如果未能解决你的问题,请参考以下文章

phonegap 中是不是有任何可用于 wi-fi direct 的插件?

Flash ActionScript 2 的压缩和解压缩工具

科尔多瓦有可用于 Wi-Fi Direct 的插件吗?

在 .NET Core Web API for MongoDB 中使用 OData

我可以在ios sdk中使用wi-fi direct api吗?

是否有用于 OData 协议 Uri 的 .NET 类包装器