Jaki jest najprostszy sposób na dodanie kompresji do WCF w Silverlight?
Mam aplikację beta 2 silverlight 2, która uzyskuje dostęp do usługi internetowej WCF. Z tego powodu obecnie może używać tylko podstawowego wiązania HTTP. Usługa internetowa zwróci dość duże ilości danych XML. Wydaje się to dość marnotrawstwem z punktu widzenia wykorzystania przepustowości, ponieważ odpowiedź, jeśli spakowana, byłaby mniejsza o współczynnik 5 (faktycznie wkleiłem odpowiedź do pliku txt i spakowałem ją).
Żądanie ma „Accept-Encoding: gzip, deflate” - Czy istnieje sposób, w jaki usługa WCF gzip (lub w inny sposób kompresuje) odpowiedź?
Znalazłem topołączyć ale z pewnością wydaje się to nieco skomplikowane, jeśli chodzi o funkcjonalność, którą należy obsłużyć natychmiast po zainstalowaniu IMHO.
OK - na początku oznaczyłem rozwiązanie wykorzystujące System.IO.Compression jako odpowiedź, ponieważ nigdy nie „mogłem” uzyskać dynamicznej kompresji IIS7. Jak się okazuje:
Kompresja dynamiczna na IIS7było pracując razem. Po prostu wtyczka Nikhil Web Developer Helper dla IE nie pokazała, że działa. Domyślam się, że odkąd SL przekazuje przeglądarkę do serwisu internetowego, przeglądarka obsługuje ją „pod osłonami”, a narzędzie Nikhila nigdy nie widzi skompresowanej odpowiedzi. Udało mi się to potwierdzić za pomocą Skrzypka, który monitoruje ruch na zewnątrz aplikacji przeglądarki. W skrzypku odpowiedź była skompresowana gzip !!
Innym problemem związanym z rozwiązaniem System.IO.Compression jest to, że System.IO.Compression nie istnieje w Silverlight CLR.
Z mojego punktu widzenia najłatwiejszym sposobem włączenia kompresji WCF w Silverlight jest włączenie kompresji dynamicznej w IIS7 i całkowity brak kodu.