Опубликован: 12.02.2013 | Доступ: свободный | Студентов: 791 / 47 | Длительность: 17:51:00
Специальности: Программист
Лекция 7:

Средства Windows Phone для работы с сетью

Аннотация: Телефоны на платформе Windows Phone практически всегда используют в работе подключение к сети Интернет, например, для получения увемлений или для получения и сохранения файлов в службе SkyDrive. В этом лекции вы познакомитесь с возможностями использования сетевых подключений в приложениях для Windows Phone, а также с методами обеспечения корректной работы программ при обрыве подключения к сети.

Презентацию к данной лекции Вы можете скачать здесь.

Все устройства Windows Phone могут использовать сетевые подключения к сети оператора сотовой связи и к сетям Wi-Fi. Эти две сетевых технологии являются взаимозаменяемыми. Однако, оба типа сетей не всегда бывают доступными одновременно.

Если при подключении к одной из сетей мобильной связи или Wi-Fi сигнал сети пропадёт, то это подключение прервётся. Приложения должны корректно работать в подобной ситуации — по крайней мере, выводить на экран сообщение вида: "Используемое сетевое подключение временно недоступно. Попробуйте повторить попытку позже". Предпочтительнее, если программа сохранит данные в устройстве, чтобы отправить их, когда подключение к сети будет доступно.

В эмуляторе Windows Phone доступны такие же сетевые возможности, как и в реальном устройстве. Эмулятор использует сетевые подключения компьютера, на котором он запущен. Его также можно использовать для тестирования приложений Windows Phone, использующих сетевые подключения. Однако, имеет смысл протестировать работу программы на физическом устройстве. В телефоне можно отключить сетевые службы и проверить работу приложения, чтобы быть уверенным, что оно будет работать должным образом и с низкоскоростным подключением к сети, если высокоскоростное подключение окажется недоступным.

17.1. Основные сведения о сетях

Перед изучением использования сетевых подключений в приложениях для Windows Phone необходимо ознакомиться с основными сведениями о сетях. Это необходимо для того чтобы лучше понять, как будут работать создаваемые нами программы. Подробное изучение вопросов сетевого взаимодействия устройств не входит в темы данного курса — приводится лишь некоторая базовая информация.

Сетевые сигналы

Первые компьютерные сети использовали провода для передачи сигналов данных. Современные сети могут использовать радиоволны или оптоволоконные кабели. Независимо от типа среды передачи данных основной принцип их действия заключается в том, что имеющиеся аппаратные средства могут передавать и получать данные в виде последовательностей битов.

В Windows Phone существует несколько типов сетевых сигналов, которые могут использоваться для подключения к сети: Wi-Fi, сотовая сеть и USB-подключение к программному обеспечению Zune на компьютере. Все эти технологии позволяют передавать данные между программами в телефоне и Интернетом (рис. 17.1).

Схема взаимодействия программ телефона с сетевыми подключениями

Рис. 17.1. Схема взаимодействия программ телефона с сетевыми подключениями

Программы Windows Phone взаимодействуют с интерфейсом сетевого программирования, который в свою очередь связан с тремя сетевыми технологиями. При этом, программы могут работать с подключениями различных типов без необходимости из изменения. Однако, необходимо помнить о том, что если пользователь телефона уезжает заграницу, ему может быть недоступен роуминг, и он не сможет использовать мобильный Интернет. Кроме этого, пользователь может перевести свой телефон в режим В самолёте и отключить на некоторое время все сетевые подключения.

Программа Windows Phone может определить, какие доступны подключения, с помощью методов класса DeviceNetworkInformation.

using Microsoft.Phone.Net.NetworkInformation;

...

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append("Оператор: " );
sb.AppendLine(DeviceNetworkInformation.CellularMobileOperator);

sb.Append("Сеть доступна:  ");
sb.AppendLine(DeviceNetworkInformation.IsNetworkAvailable.ToString());

sb.Append("Передача данных по сети доступна:  ");
sb.AppendLine(DeviceNetworkInformation.IsCellularDataEnabled.ToString());

sb.Append("Передача данных в роуминге доступна:  ");
sb.AppendLine(DeviceNetworkInformation.IsCellularDataRoamingEnabled.ToString());

sb.Append("Wi-Fi включён:  ");
sb.AppendLine(DeviceNetworkInformation.IsWiFiEnabled.ToString());

Этот код создаёт сообщение о состоянии телефона, которое можно вывести на экран. Также можно использовать эти значения, чтобы управлять поведением приложения в зависимости от конкретной ситуации.

Сетевые пакеты

Последовательности двоичных сигналов представляют какую-то информацию. Чтобы передавать полезную информацию, необходимо определить формат передаваемого сообщения.

Современная сеть передаёт данные частями по 8 битов, которые называют октетами. В языке C# значение одного октета можно сохранить в переменной типа byte. Октет — это наименьшая единица информации, которую можно передать по сети. Октет может быть, например, числом в диапазоне от 0 до 255, символом или частью большего элемента, например числа с плавающей точкой или файла изображения. В Интернете пакет данных может состоять из нескольких тысяч октетов.

Адресация пакетов

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

Все устройства сети могут получать и организовывать широковещательную передачу данных. Фактически, узлы сети могут принимать все сообщения, переданные по каналу Wi-Fi или проводам. При этом возникает проблема безопасности передачи информации: устройства в сети могут использовать любую информацию, которая предназначена другим устройствам. При подключении к безопасному веб-сайту компьютер кодирует все передаваемые на сайт сообщения так, чтобы другие узлы сети, которые получают эти сообщения, не могли их прочитать зашифрованную в них информацию.

Для формирования адреса узла, которому необходимо передать сообщение, существующая версия протокола IPv4, который используется в компьютерных сетях и в Интернете, использует четыре 8-битовых значения, записанных последовательно. Теоретически такой способ позволяет адресовать более 4 млрд различных систем в Интернете. Однако, на практике эта цифра оказывается существенно меньше, поскольку некоторые адреса зарезервированы для различных целей и их нельзя использовать для адресации устройства. Не так давно вышла в свет новая версия протокола IPv6, в котором каждый адрес занимает 128 битов (16 октетов). Новая версия протокола должна учесть значительное увеличение количества возможных узлов, однако его использование приводит к существенным изменениям в функционировании сети, осуществление которых требует много времени. В настоящее время сетевые возможности Windows Phone не поддерживают протокол IPv6.

Маршрутизация

Не все устройства в Интернете соединены в одну физическую сеть. По сути, Интернет объединяет большое количество отдельных сетей. Что чтобы передать сообщение из одной физической сети в другую, необходимо осуществить маршрутизацию.

Для осуществления маршрутизации между двумя сетями необходим сетевой маршрутизатор, который подключается к обеим сетям и может получать сообщения из одной сети и отправлять их в другую. В сети Интернет адрес устройства состоит из двух элементов: адреса локальной сети, в которой находится устройство, и адреса устройства в этой сети. При этом, в локальной сети любые два устройства могут обмениваться данными напрямую.

Пакеты, которые необходимо отправить с домашнего компьютера на удалённые устройства, передаются через сеть Интернет-провайдера (ISP), который передаёт эти пакеты к следующей системе в сети. Обычно пакеты доходят до узла-адресата, минуя несколько устройств. Интернет определяет и периодически изменяет маршруты, по которым следуют пакеты, что позволяет управлять внезапным возрастанием трафика и отказами частей сети, но это может привести к ситуациям, когда один пакет прибывает на узел адресата до того момента, как туда прибывает пакет, отправленный раньше первого. Иногда пакеты могут потеряться (хотя это происходит довольно редко), и таким образом, нельзя быть уверенным, что все пакеты прибыли, пока не придёт подтверждение об этом.

Передача данных в Интернете осуществляется в соответствии с локальным протоколом (протокол управления передачей данных TCP) и межсетевым протоколом (Интернет-протокол IP). Эти протоколы работают совместно и образуют стек протоколов TCP/IP.

Протокол TCP/IP можно использовать для связи устройств без их подключения к Интернету. Например, можно подключить устройство Windows Phone к компьютеру и передавать мультимедиа данные с помощью программного обеспечения Zune.

Передаваемая через Интернет информация разбивается на один или несколько пакетов. Каждый пакет содержит адрес получателя и его номер, чтобы можно было обнаружить недостающие пакеты и при получении расположить их в правильном порядке, а также адрес отправителя и некоторую служебную информацию.

Сетевые подключения и протоколы

Подключения между разными частями сети могут использовать разные типы подключения. Многие устройства поддерживают несколько типов сетевых подключений. Устройство Windows Phone может подключаться к Интернету через сеть оператора сотовой связи или через сеть Wi-Fi. При этом, для программ Windows Phone не имеет значения, каким способом телефон подключён к Интернету.

Сетевой протокол определяет структуру сообщений и правила взаимодействия сетевых устройств при передаче данных. Существует два уровня правил сетевого протокола. Протокол локального уровня позволяет локальным узлам (расположенным в одной сети) передавать друг другу информацию. Межсетевой протокол позволяет передавать сообщения из одной локальной сети в другую.

В Интернете используется большом количество различных протоколов, которые работают совместно и используются различными системами для обмена информацией.

Нахождение адресов в Интернете с помощью DNS

Все адреса в Интернете имеют размер 32 бита и обычно записываются в виде значений четырёх октетов, разделённых точкой. Адрес состоит из адреса подсети и адреса узла в этой подсети. Такой адрес называется IP-адресом системы.

Однако, IP-адреса всех используемых узлов запомнить довольно сложно, и к тому же, в них легко запутаться. Поэтому для обращения к узлам в Интернете используют более удобные имена. Для того чтобы по имени узла найти его IP-адрес, существуют специальные серверы, которые преобразуют имена узлов в IP-адреса. Такая система называется системой доменных имён, или DNS. Когда компьютеру нужно узнать IP-адрес веб-сайта, на который хочет зайти пользователь, он направляет запрос к одному из DNS-серверов, который выдаёт необходимый результат.

В сети Интернет работает так много устройств, что при использовании протокола IPv4 всех доступных IP-адресов недостаточно для того, чтобы выделить каждому устройству отдельный IP-адрес. Поэтому большинство устройств находятся в локальных подсетях, каждая из которых подключается к Интернету через маршрутизатор, который имеет прямой выход в Интернет. При этом, локальные адреса устройств позволяют получать доступ только к устройствам в той же подсети и к устройствам, подключённым к Интернету напрямую. Соответственно, два телефона обычно не могут соединяться друг с другом напрямую — для этого необходимо промежуточное устройство для связи телефонов в одну подсеть, например, Wi-Fi-маршрутизатор.

Сетевые порты

Если между двумя компьютерами установлено сетевое подключение, то его могут использовать любые приложения, которым разрешён доступ к сети. Например, сервер может предоставлять подключённым клиентам доступ к различным службам. При этом, клиентам нужен способ определения местонахождения службы, которую они хотят использовать на сервере.

Для этих целей в Интернете используются порты. Порт — это число, которое идентифицирует службу, которую предоставляет компьютер. Некоторые из портов являются общепринятыми, например порт номер 80 обычно используется веб-серверами. Когда браузер клиента запрашивает веб-страницу, он использует Интернет-адрес сервера и использует порт 80, чтобы получить веб-страницу с этого сервера.

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

Программисты могут создавать программы, которые используют любой номер порта, но многие сети используют брандмауэры, которые пропускают пакеты, адресованные определённым номерам портов, а если пакеты приходят на другие порты — они блокируются. Эта мера позволяет повысить безопасность сервера от сетевых атак.

Сеансы подключения и дейтаграммы

Интернет поддерживает два способа обмена информацией между устройствами: сеансы подключения и дейтаграммы. Дейтаграмма — это сообщение, которое передаётся из одной системы в другую. Если между двумя системами создаётся сеанс подключения, это приводит к выполнению дополнительной работы по управлению подключением, например, отправлять сообщения о подтверждении принятия пакетов данных или сообщения о возникшей ошибке передачи данных.

Сеансы подключения используются, когда необходимо получать подтверждения об успешной передаче сообщений. Например, когда браузер загружает веб-страницу с сервера, необходимо быть уверенным, что все части веб-страницы доставлены, а если некоторые части страницы не доставлены, то необходима их повторная передача. Дополнительная работа по управлению сеансами подключения снижает скорость передачи данных, а также предъявляет дополнительные требования к каналам связи.

Дейтаграммы используются для передачи данных в тех случаях, когда не нужно получать подтверждения передачи данных. Если переданная по сети дейтаграмма будет потеряна, об этом не нужно сообщать, поскольку к тому времени, когда прибудет новая копия дейтаграммы, она уже устареет. Дейтаграммы удобно использовать, если необходимо отправлять данные с максимальной скоростью, и их потеря некритична. Дейтаграммы используются для потоковой трансляции аудио или видео, где главным приоритетом является скорость передачи данных.

В Интернете используются протокол управления подключениями TCP, который позволяет настраивать и управлять подключениями между сетевыми станциями, и протокол пользовательских дейтаграмм UDP, который позволяет передавать дейтаграммы.

Сетевые средства Windows Phone позволяют отправлять дейтаграммы и создавать сеансы подключения. Программисты решают сами, какой тип подключения лучше использовать в конкретной ситуации.