#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) должны быть асинхронными (т. Е. синхронной поддержки нет).