Главная » C#, Windows Runtime, XAML, Разработка для Windows 8 » Работа с сетью Windows   8

0

Способность   сетевого  взаимодействия в     Metro-приложениях    позволяют создавать различные сценарии работы клиентской части с облаком, оставаться онлайн  и  др.  Широкие  возможности Windows   8   позволяют использовать различные программные интерфейсы для обмена данными между приложением и удаленной точкой подключения в  интернете или приватной сети. В случаях, когда  мы  не  можем  использовать простые  механизмы  доступа  к  сетевым ресурсам, платформа предоставляет непосредственно использования TCP и UDC протоколов для создания своих собственных высокоуровневых протоколов.

Асинхронное программирование

В виду того, что все взаимодействие нашего приложения с внешним окружением проходит в асинхронном режиме, сначала мы рассмотрим модель асинхронного программирования в Windows 8.

Асинхронная   модель   программирования  в      .Net   Framework    существует достаточно давно. Но именно в Windows 8 эта модель стала использоваться уже на уровне самой ОС. То есть все взаимодействие приложения с возможностями платформы происходит асинхронно. Такой уровень интеграции данной модели программирования в  платформу стал возможен с появлением модификатора async и оператора await. Модификатор async указывает компилятору, что метод или лямбда-выражение  являются асинхронными. А метод с оператором await действует как асинхронный метод. Асинхронный метод может быть реализован несколькими  способами,  но  в    любом   случае  не  будет  возникать ошибка компиляции при отсутствии оператора await. Компилятор всего лишь выведет предупреждение об отсутствии оператора await и сам метод будет выполняться синхронно.

Модификатор async не является обязательным. Его можно применять к методам, лямбда-выражениям или анонимным методам. Оператор await также является не обязательным.

По своей природе асинхронные методы – это методы, которые не  блокируют операции.  Выражение  await  в   асинхронном  методе  не  блокирует  текущий поток во время выполнения задачи. Вместо этого, оставшаяся часть метода (код, который  расположен  ниже  вызова  асинхронного  метода)  «запаковывается» в метод обратного вызова и выполняется после работы асинхронного метода.

Приведем пример работы с асинхронным методом:

private async Task<byte[]> GetURLContentsAsync(string url)

{

. . .

using (WebResponse webResponse = await webRequest.GetResponseAsync())

. . .

}

Более подробную информацию о работе асинхронных методов  вы можете получить на сайте MSDN (http://msdn.microsoft.com/en-us/library/hh191443(v=vs.110).aspx).

Сергей Лутай, Сергей Байдачный, Windows 8 для C# разработчиков

По теме:

  • Комментарии