Я работаю над проектом, в котором клиент Silverlight 4 вызывает веб-сервис WCF, который возвращает большой объем данных. Некоторые профилирование показало, чтоСамая быстрая привязка WCF для Silverlight 4
Фактическое выполнение метода WebService занимает менее одной секунды (вызывает другой сервер/генерирует очень большой набор данных/и т.д.., Это уже довольно оптимизированная там)
передачи данных зависит в сети, но, как правило, не проблема - он может взять все, что ему нужно
Время между клиентом получает HTTP-ответ (я вижу его завершенным в Fiddler) и событие Completed, запущенное в клиенте Silverlight: ~ 15 секунд (никакой разницы между IE/Firefox/хром)
Я полагаю, что задержка 15 секунд, в значительной степени, проведенное в десериализации.
Мое связывание использует HttpTransport
и BinaryMessageEncoding
, с компрессией gzip сверху. Сжатие Gzip, похоже, не влияет на производительность: разница между отсутствием сжатия и максимальным уровнем сжатия практически не существует. Ответ на http составляет ~ 15 Мб без сжатия и ~ 400 кб сжимается (много накладных расходов даже с бинарным XML!)
Примечание: веб-сервис является полностью ad hoc, меня не интересует интероперабельность и полная свобода в выборе протокола.
Очевидным решением будет передача меньшего количества данных, но введение подкачки потребует значительных изменений в архитектуре, которые не выполняются в настоящее время. Сокращение набора данных также довольно сложно, потому что решение полностью настраивается конечным пользователем, и, как вы знаете, пользователи не всегда знают, что делают, и создают огромные запросы.
Я остался с привязкой wcf: этот проект начался с SL 2 и развился через SL 3 и SL 4, так что, возможно, мне не хватает какого-то более быстрого связывания, введенного в Silverlight 4. Есть ли еще более быстрый кодер (или связывание), я могу использовать, чтобы избежать узкого места десериализации на клиенте?
Это хороший совет, спасибо. Я определенно реализую нечто подобное, если я не смогу улучшить реальную производительность. – 2010-12-10 08:38:19