2012-11-14 14 views
5

Contesto: Attualmente si utilizza WCF Data Services 5.0 con Odata per un'applicazione di Windows 8 Store.Compressione Odata - C'è QUALSIASI supporto? (WCF Data Services 5.0 per WinRT)

Ho cercato di comprimere l'OData in arrivo dal mio servizio di oggi e l'esecuzione di numerosi problemi relativi al supporto.

  • serializzazione binaria non supportata.

  • JSON non è supportato (biblioteca getta 'application/json' non è attualmente supportato in header Content-Type)

  • JSON lite non è ancora stato rilasciato

  • aggiungendo richieste gzip nella La risposta http funziona (il server ritorna compresso) - ma la parte client lib non sembra voler deserializzarla. (eccezioni xml parsing)

Il mio tentativo finale di oggi è stato quello di cercare di ottenere una sospensione della risposta HTTP, e per deserializzare manualmente il flusso di me stesso (GZipStream non è disponibile, ma so che ci sono alternative 3rd parti) - ma non sono riuscito a trovare QUALSIASI Microsoft.Data.Services.Client.WindowsStore eventi/sostituzioni che avrebbero esposto il flusso a me.

Volevo implementare OData per sfruttare i guadagni in termini di prestazioni ed efficienza rispetto ai servizi Web WCF standard, ma senza alcun modo di comprimere il flusso sul cavo non ne ho alcuno.

Qualcuno ha qualche esperienza in questo, o un consiglio su come avvicinarsi?

+0

So che formato OData XML è prolisso, ma la quantità di dati in realtà si sta l'invio? Forse puoi solo inviare meno dati ... C'è qualche motivo specifico per cui stai provando a comprimere i dati? – Pawel

+1

Sto inviando la quantità minima di dati che posso per qualsiasi schermata dell'interfaccia utente specificata. I due dispositivi di destinazione per l'applicazione sono Surface RT e Windows Phone 7. La compressione dei dati sul filo è fondamentale per rispettare le eventuali restrizioni della larghezza di banda dei dispositivi. –

+0

Per Windows Phone 7, c'è un evento chiamato ReadingResponse esposto nella classe DataServiceContext. Leggi questo articolo http://blogs.msdn.com/b/astoriateam/archive/2011/10/04/odata-compression-in-windows-phone-7-5-mango.aspx – Syler

risposta

1

Avete seguito la stessa procedura qui per ottenere JSON cliente risposta.L'elettrodo deve inviare intestazione MaxDataServiceVersion: http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened-to-application-json-in-wcf-ds-5-0.aspx

ho anche verificato che odata 5.1.0 è stato rilasciato su NuGet. Questo ha il migliore supporto JSON: https://nuget.org/packages/Microsoft.Data.Services/5.1.0

L'altra opzione è quella di utilizzare asp.net web API e cercare il supporto odata: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData

+1

Grazie per il tuo commento . Tuttavia, non sto utilizzando la DLL Microsoft.Data.Services, sto utilizzando la DLL Microsoft.Data.Services.Client.WindowStore poiché il dispositivo che consuma è un'applicazione di Windows 8 Store. Sono in grado di ottenere il server per inviare OData in Json, ma il client lancia un'eccezione NotSupported secondo il mio secondo punto. –

+0

http://www.microsoft.com/en-us/download/details.aspx?id=30714 è il pacchetto di servizi dati WCF che sto utilizzando –

+0

Non sono uno sviluppatore di Windows 8. Ma sembra che ci sia una nuova versione degli strumenti client Odata per le app di Windows Store http://www.microsoft.com/en-us/download/details.aspx?id=35461 Ulteriori informazioni qui http: //blogs.msdn .com/b/astoriateam/archive/2012/10/30/odata-client-tools-per-windows-phone-apps-now-available.aspx – softveda

Problemi correlati