Определите размер передаваемых данных для вызова веб-службы в .NET CF - PullRequest
3 голосов
/ 11 марта 2009

Я занимаюсь разработкой клиентского приложения .NET CF и использую веб-сервисы для передачи данных. Я использую SharpZipLib для сжатия переданных наборов данных, чтобы я знал размер переданного байтового массива.

Интересно, есть ли простой способ определить полный размер запроса (заголовок html, мыльные конверты и реальные данные) для одного вызова. Я действительно хочу минимизировать затраты на соединение GPRS.

Спасибо ...

Ответы [ 3 ]

1 голос
/ 11 марта 2009

Ре общий вопрос; извините, я не знаю, кроме использования трассировки сети ...

Тем не менее, Могу ли я смиренно предложить, чтобы наборы данных и SOAP не всегда были лучшим выбором для устройств с ограниченной пропускной способностью? Сжатие делает хорошую работу, но не всегда идеально. Если вам не нужны предлагаемые функции, доступны более простые протоколы (например, POX, возможно, с использованием встроенного сжатия протоколов (GZIP / Deflate)).

На другом конце ... если вы можете сформулировать вещи как сообщения, то могут пригодиться сериализаторы, такие как protobuf-net (в сочетании с необработанными двоичными сообщениями); они очень плотные данные (такие, что попытка использовать сжатие неизбежно увеличивает размер). Тем не менее, вам необходимо выполнить собственное отслеживание данных / изменений на клиенте, а стек RPC пока еще неполон (у меня есть рабочий прототип кода, но я еще не зафиксировал его, так как я до сих пор юнит-тестирование это). Сервер также будет другим (то есть не asmx или чем-то другим - возможно, обработчик с фальсификацией или контроллер MVC).

В качестве другой альтернативы - ADO.NET Data Services могут представлять интерес, особенно в режиме JSON (для пропускной способности, опять же с использованием сжатия протокола).

0 голосов
/ 11 марта 2009

WCF поддерживает трассировку сообщений, что позволит вам увидеть размер сгенерированного сообщения SOAP +. Вы можете использовать эти файлы трассировки, чтобы определить, что вы ищете, хотя при сжатии ваших сообщений отправленные байты будут менее очевидными. Для фактического размера провода было бы неплохо. Или вы можете сжать сообщение, извлеченное из трассировки WCF, и получить грубое представление.

0 голосов
/ 11 марта 2009

Wireshark - известный инструмент для анализа протоколов. Однако это может быть излишним для ваших нужд.

Также оформить заказ Скрипач . Это проще и позволит вам отслеживать трафик с эмулятора.

tcpmon - это утилита Java, которая может находиться между сервером и клиентом. Вам нужно отредактировать конечную точку в вашем приложении, чтобы подключиться к tcpmon и настроить tcpmon для передачи всех запросов к фактической веб-службе. Это не должно занять более 10 минут - это очень простая утилита. Затем вы можете отслеживать необработанные запросы в tcpmon или захватывать трафик с помощью Fiddler.

...