Компактный фреймворк с использованием веб-сервисов работает слишком медленно! - PullRequest
1 голос
/ 14 сентября 2010

У меня есть приложение в КПК с CF3.5. Я также написал веб-сервис (WCF) в .NET3.5.

есть две операции:

1) КПК запрашивает данные у WS. WS возвращает sdf (файл CE sql server) около 500 КБ. Общение в порядке. Около 5-10 секунд.

2) КПК выполняет сбор данных, а иногда возвращается на станцию ​​и подключается к WiFi. PDA проверяет, существует ли соединение с WS, запустив простую функцию true-false из WS, чтобы проверить, есть ли сбой связи. Если нет, PDA отправляет заполненный sdf-файл (700 КБ) на WS. Время от вызова функции WS из КПК до запуска функции в WS (что означает, что данные были отправлены в функцию в виде байта []) занимает около 30-40 секунд!

Почему такие большие различия в отправке / получении? Что я должен проверить на неправильную конфигурацию?

спасибо

Ответы [ 3 ]

0 голосов
/ 22 сентября 2010

Для меня это тоже похоже на сериализацию / base64.Вы можете использовать System.Diagnostics.Stopwatch, чтобы увидеть, какие части кода занимают так много времени для выполнения.Так как WCF генерирует источник для прокси в CF, вы также можете их использовать.Если вашим узким местом действительно является сериализация, вы можете захотеть использовать что-то другое, например, буферы протокола (реализация protobuf-net намного быстрее, чем WCF, она решила проблему производительности, с которой я столкнулся там некоторое время назад).Вы также можете попробовать профилировщик eqatec, который, к сожалению, больше не является бесплатным для CF, но сразу определит узкое место.

0 голосов
/ 29 сентября 2010

OK.Это было решено путем сжатия gzip байта [] перед отправкой и после отправки файла.

спасибо всем за ответы.

0 голосов
/ 14 сентября 2010

Это всего лишь предположение, но, вероятно, это процесс сериализации файла в строку в кодировке base64, который требует времени. Сколько времени занимает звонок, чтобы узнать, доступна ли услуга? Если это не то же самое 30-40 секунд, то вы знаете, что это не фактический вызов в службу, который требует времени, но что-то еще и сериализация наверняка кажется, что это будет большая часть здесь.

Сколько времени нужно, чтобы вручную сериализовать файл (возможно, сгенерированный мастером код работает плохо)? Я, наверное, проверю это и посмотрю, сколько времени это займет. Я бы также проверил (с помощью Fiddler или аналогичного), что именно происходит и когда.

...