Ответ 1
Вариант 1: HttpClient, если вам не требуется детерминированное уведомление о прогрессе, это то, что вы хотите использовать. Пример.
public async Task<string> MakeWebRequest()
{
HttpClient http = new System.Net.Http.HttpClient();
HttpResponseMessage response = await http.GetAsync("http://www.example.com");
return await response.Content.ReadAsStringAsync();
}
Вариант 2. Когда вам понадобятся уведомления о ходе работы, вы можете использовать DownloadOperation или BackgroundDownloader. Это sample в MSDN - хорошее начало.
Вариант 3. Поскольку вы упомянули веб-службу и если она возвращает XML, вы можете использовать XmlDocument.LoadFromUriAsync, который вернет вам XML-документ, Пример
public async void DownloadXMLDocument()
{
Uri uri = new Uri("http://example.com/sample.xml");
XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(uri);
//do something with the xmlDocument.
}
Когда вы разрабатываете для Metro инфраструктуру .Net, будет ограничена по сравнению с настольной версией. Если вы видите, что ошибка имени не найдена, это обычно связано с этим фактом. Эта ссылка в MSDN содержит список пространств имен, классов, доступных для метро.