Выполняется ли служба WCF в потоке пользовательского интерфейса или в потоке асинхронных запросов в Windows Phone 7?

#c# #.net #multithreading #wcf #windows-phone-7

#c# #.net #многопоточность #wcf #windows-phone-7

Вопрос:

Как указано в вопросе, какой поток используется при доступе к службе WCF?

Большинство веб-сервисов, на которые я подписался, я использовал HttpWebRequest, потому что он не блокирует поток пользовательского интерфейса. Но когда я получаю доступ к API Bing, он использует службу WCF. Является ли это реализацией WebClient или HttpWebRequest?

Снаружи это больше похоже на WebClient, потому что не требует вызова BeginInvoke для маршалирования данных в потоке пользовательского интерфейса? Это точно?

Ответ №1:

В Windows Phone нет службы WCF — API на этой платформе содержит только код для клиентской части WCF (доступ к службам).

Вы не можете заблокировать поток пользовательского интерфейса с помощью обоих HttpWebRequest и WebClient (например, используя BeginGetResponse и DownloadAsync , соответственно). Если я правильно помню, клиент WCF в телефоне использует HttpWebRequest внутренне, но это деталь реализации, ее можно изменить в любое время. И все вызовы WCF с платформы Windows Phone (а также Silverlight) должны быть асинхронными (т. Е. синхронной поддержки нет).