2012-11-14 2 views
5

Kontext: Derzeit wird WCF Data Services 5.0 mit Odata für eine Windows 8 Store-Anwendung verwendet.Odata-Komprimierung - Gibt es Unterstützung? (WCF Data Services 5.0 für WinRT)

Ich habe versucht, die OData zu komprimieren, die heute von meinem Dienst über die Leitung kommen und in viele Probleme rund um den Support laufen.

  • binäre Serialisierung wird nicht unterstützt.

  • json wird nicht unterstützt (Bibliothek wirft 'application/json' derzeit nicht in Content-Type-Header unterstützt)

  • json lite freigegeben wird noch nicht

  • Zugabe von gzip-Anfragen in der http-Antwort funktioniert (Server gibt komprimiert zurück) - Client-Seite-lib scheint es jedoch nicht zu deserialisieren. (XML-Parsing Ausnahmen)

Mein letzter Versuch war heute zu versuchen, einen Halt der HTTP-Antwort zu erhalten, und manuell den Strom deserialisieren selbst (GZipStream nicht verfügbar ist, aber ich weiß, es gibt 3rd-Party-Alternativen) - aber ich konnte keine Microsoft.Data.Services.Client.WindowsStore Ereignisse/Overrides finden, die den Stream für mich offen legen würde.

Ich wollte OData implementieren, um die Leistung und Effizienzgewinne gegenüber Standard-WCF-Webdiensten zu nutzen - aber ohne Möglichkeit, den Stream über die Leitung zu komprimieren, bekomme ich keine.

Hat jemand Erfahrung damit oder einen Ratschlag, wie man sich nähert?

+0

Ich weiß, dass OData XML-Format ausführlich ist aber, wie viele Daten Sie sind eigentlich senden? Vielleicht können Sie einfach weniger Daten senden ... Gibt es einen bestimmten Grund, warum Sie versuchen, die Daten zu komprimieren? – Pawel

+1

Ich sende die minimale Menge an Daten, die ich für einen beliebigen UI-Bildschirm bekommen kann. Die beiden Zielgeräte für die Anwendung sind das Surface RT und das Windows Phone 7. Die Komprimierung der Daten über das Kabel ist entscheidend für die Einhaltung der Bandbreitenbeschränkungen der Geräte. –

+0

Für Windows Phone 7 gibt es ein Ereignis namens ReadingResponse in der DataServiceContext-Klasse. Lesen Sie diesen Artikel http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx – Syler

Antwort

1

Haben Sie die gleichen Schritte hier gefolgt json Antwort.Verfahren Client MaxDataServiceVersion Header senden hat zu bekommen: http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx

Ich habe auch, dass OData 5.1.0 wurde auf nuget veröffentlicht. Dies hat die bessere json Unterstützung: https://nuget.org/packages/Microsoft.Data.Services/5.1.0

Die andere Option ist asp.net web api zu verwenden und versuchen, die OData-Unterstützung: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

+1

Vielen Dank für Ihren Kommentar . Allerdings - ich benutze nicht die Microsoft.Data.Services dll, verwende ich die Microsoft.Data.Services.Client.WindowStore dll als das Gerät ist eine Windows 8 Store-Anwendung. Ich bin in der Lage, den Server zu veranlassen, das OData in Json zu senden, aber der Klient löst eine NotSupported-Ausnahme gemäß meinem zweiten bulletpoint aus. –

+0

http://www.microsoft.com/en-us/download/details.aspx?id=30714 ist das WCF Data Services-Paket, das ich verwende –

+0

Ich bin kein Windows 8-Entwickler. Aber es scheint, dass es eine neue Version der Odata-Client-Tools für Windows-Store-Anwendungen gibt http://www.microsoft.com/en-us/download/details.aspx?id=35461 Weitere Informationen finden Sie hier http: //blogs.msdn .com/b/astoriateam/archiv/2012/10/30/odata-client-tools-fuer-windows-phone-apps-jetzt-available.aspx – softveda

Verwandte Themen