HTTP в Silverlight работает медленно, когда не работает в основном потоке - PullRequest
1 голос
/ 02 марта 2010

Я создал тестовый проект, который выполняет HTTP-запросы POST в silverlight (используя классы HttpWebRequest и WebClient). Я последовательно получаю производительность около 20 вызовов / с, что я считаю очень медленным. Единственные данные, которые я отправляю и получаю, - это небольшие строки (около 20 символов). Что меня удивило, так это то, что WCF (SOAP over HTTP) показал аналогичную производительность . Однако, когда я провел тот же тест, но убедился, что вся логика программы работает в главном потоке, производительность значительно возросла, примерно до 150 вызовов / с.

Может кто-нибудь объяснить, что может вызвать этот эффект? Я имею в виду, что многопоточность сама по себе не может вызвать такую ​​медлительность.

Примечание : все мои тесты используют локальное соединение.

Обновление : после обширных исследований я пришел к выводу, что проблема производительности присуща Silverlight v3 .

1 Ответ

1 голос
/ 02 марта 2010

Когда вы выполняете вызовы WCF без запуска отдельного потока, они выполняются в потоке пользовательского интерфейса и не выполняются сразу, а вместо этого выполняются, когда поток пользовательского интерфейса имеет достаточно времени для этого.

Проверьте это сообщение в блоге , это может быть именно то, что вы ищете. Вопреки тому, что вы нашли, он обнаружил, что вызовы WCF в фоновом потоке выполняются быстрее - очевидно, потому что поток не обязан выполнять какую-либо другую работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...