2012-11-14 12 views
5

Kontekst: Obecnie używa WCF Data Services 5.0 z Odata dla aplikacji Windows 8 Store.Kompresja Odata - czy jest JAKIEKOLWIEK wsparcie? (WCF Data Services 5.0 dla WinRT)

Próbowałem skompresować OData przychodzące przez przewód z mojej usługi już dziś i napotykając na wiele problemów związanych z obsługą.

  • serializacja binarna nie jest obsługiwana.

  • json nie jest obsługiwana (biblioteka rzuca 'application/json' nie jest obecnie obsługiwana w nagłówku Content-Type)

  • json lite nie został jeszcze wydany

  • dodanie żądania gzip w Odpowiedź HTTP działa (serwer zwraca skompresowane) - ale biblioteka po stronie klienta nie chce jej deserializacji. (wyjątki analizowania XML)

Moja ostatnia próba już była próba dorwać odpowiedzi HTTP oraz ręcznie deserializować strumienia siebie (GZipStream nie jest dostępny, ale wiem, że istnieją alternatywy 3rd Party) - ale nie mogłem znaleźć ŻADNYCH Microsoft.Data.Services.Client.WindowsStore zdarzeń/nadpisań, które odsłoniłyby strumień do mnie.

Chciałem zaimplementować OData w celu zwiększenia wydajności i wydajności w porównaniu ze standardowymi usługami sieciowymi WCF - ale bez możliwości skompresowania strumienia przez przewód, którego nie dostaję.

Czy ktoś ma jakiekolwiek doświadczenie w tej kwestii lub porady dotyczące podejścia?

+0

wiem że OData formacie XML jest gadatliwy ale ile dane są faktycznie wysyłanie? Może po prostu wyślesz mniej danych ... Czy istnieje jakiś konkretny powód, dla którego próbujesz skompresować dane? – Pawel

+1

Wysyłam minimalną ilość danych dla dowolnego ekranu interfejsu użytkownika. Dwoma urządzeniami docelowymi aplikacji są Surface RT i Windows Phone 7. Kompresja danych przez kabel ma kluczowe znaczenie dla przestrzegania ograniczeń przepustowości, jakie mogą mieć urządzenia. –

+0

W systemie Windows 7 istnieje zdarzenie o nazwie ReadingResponse w klasie DataServiceContext. Zapoznaj się z tym artykułem http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx – Syler

Odpowiedz

1

Czy stosowała te same kroki, żeby dostać json klient response.The musi wysłać nagłówek MaxDataServiceVersion: http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx

Sprawdziłem też, że OData 5.1.0 został wydany Nuget. To ma lepsze wsparcie json: https://nuget.org/packages/Microsoft.Data.Services/5.1.0

Twój Inną opcją jest użycie ASP.NET Web API i spróbuj OData wsparcia: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

+1

Dzięki za komentarz . Jednak - nie używam dll Microsoft.Data.Services, używam dll Microsoft.Data.Services.Client.WindowStore jako zużywające urządzenie jest aplikacja Windows 8 Store. Mogę zmusić serwer do wysłania OData w Json, ale klient zgłasza wyjątek NotSupported, jak na mój drugi punkt. –

+0

http://www.microsoft.com/en-us/download/details.aspx?id=30714 to pakiet usług danych WCF. Używam –

+0

Nie jestem programistą systemu Windows 8. Wygląda jednak na to, że istnieje nowa wersja narzędzi klienckich Odata dla aplikacji sklepu Windows http://www.microsoft.com/en-us/download/details.aspx?id=35461 Więcej informacji tutaj: http: //blogs.msdn .com/b/astoriateam/archive/2012/10/30/odata-client-tools-for-windows-phone-apps-teraz-available.aspx – softveda