2012-11-14 37 views
5

上下文:当前将WCF Data Services 5.0与Odata一起用于Windows 8商店应用程序。Odata压缩 - 有没有支持? (适用于WinRT的WCF数据服务5.0)

一直在试图压缩来自我今天的服务的线路上的OData,并且遇到许多围绕支持的问题。

  • 不支持二进制序列化。不支持

  • JSON(库抛出 '应用/ JSON' 当前未在Content-Type头支持)

  • JSON精简版是尚未释放

  • 添加在gzip的请求http响应工作(服务器返回压缩) - 但客户端库似乎并不想反序列化它。 (XML解析例外)

我最后一次尝试今天尝试并获得HTTP响应的保持和手动反序列化流自己(GZipStream不可用,但我知道有第三方的替代品) - 但我找不到任何Microsoft.Data.Services.Client.WindowsStore事件/覆盖,将暴露给我的流。

我想实现OData以利用标准WCF Web服务的性能和效率增益 - 但无法通过电缆压缩流,我没有得到任何。

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

+0

我知道的OData xml格式是冗长,但你有多少数据实际上发送?也许你可以发送更少的数据......你有什么具体的理由来试图压缩数据? – Pawel

+1

我发送给任何给定UI屏幕的最小数据量。该应用的两个目标设备是Surface RT和Windows Phone 7.通过电缆压缩数据对于尊重设备可能具有的任何带宽限制至关重要。 –

+0

对于windows phone 7,在DataServiceContext类中有一个名为ReadingResponse的事件。阅读本文http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx – Syler

回答

1

你有没有遵循相同的步骤,在这里得到JSON response.The客户端发送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网站的API,并尝试OData的支持: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

+1

感谢您的评论。但是 - 我没有使用Microsoft.Data.Services DLL,我使用Microsoft.Data.Services.Client.WindowStore DLL作为消费设备是Windows 8商店应用程序。我已经能够让服务器在Json中发送OData,但客户端会根据我的第二个bulletpoint抛出一个NotSupported异常。 –

+0

http://www.microsoft.com/en-us/download/details.aspx?id=30714是我正在使用的WCF数据服务包 –

+0

我不是Windows 8开发人员。但似乎有一个新版本的Odata客户端工具的Windows应用商店http://www.microsoft.com/en-us/download/details.aspx?id=35461更多信息在这里http://blogs.msdn 。com/b/astoriateam/archive/2012/10/30/odata-client-tools-for-windows-phone-apps-now-available.aspx – softveda