Основы разработки приложений, взаимодействующих с веб-сервисами
Цель работы: Ознакомиться с основными понятиями разработки приложений, рассчитанных на взаимодействие с веб-сервисами
Приложения, взаимодействующие с веб-сервисами в экосистеме Windows Phone
Современные мобильные телефоны поддерживают различные способы подключения к Интернету. Среди них – подключение к беспроводным Wi-Fi-сетям и подключение с использованием мобильных сетей связи. Как правило, наиболее быстрыми и дешевыми являются именно Wi-Fi-подключения, нередко возможность такого подключения предоставляется бесплатно, например, в местах общего пользования. Что касается выхода в Интернет с использованием сотовых сетей, стоимость и скорость соединения может серьезно варьироваться. От дорогого и сравнительно медленного GPRS-подключения, до быстрых подключений с использованием инфраструктуры 3G-сетей, за работу с которыми берется умеренная плата. В общем случае сетевое соединение с использованием какой-либо технологии мобильной связи следует рассматривать как соединение, работу с которым пользователь хочет контролировать, и соединение, к которому применимы какие-либо ограничения, нарушение которых, как минимум, разочарует пользователя.
Например, распространена схема тарификации мобильного трафика, при использовании которой у пользователя есть определенный лимит на прием и передачу данных. Ограничения могут действовать на разных отрезках времени, например, на некоем тарифном плане с фиксированной платой в месяц они могут выглядеть так: "Доступ к Интернету предоставляется на скорости 512 Кбит/с, при этом, при потреблении в некоторый день более 256 Мб трафика скорость доступа снижается до 128 Кбит/с до 0:00 дня, следующего за днём, когда был потреблен этот объем трафика. При потреблении в текущий месяц более 3 Гб трафика, до следующего месяца скорость доступа снижается до 64 Кбит/с".
Это – условный пример, но в реальных тарифных планах на подключение услуг мобильного доступа в Интернет можно встретить похожие ограничения. Если некоторое приложение (например, почтовый клиент) "решит", что может неограниченно использовать доступное ему мобильное подключение, будет загружать без ведома пользователя файлы вложений, и, в итоге, при первой синхронизации с почтовым ящиком попросту "выберет" дневной лимит данных, пользователь, вероятно, будет весьма разочарован. Он, наверняка, определенным образом планировал использование доступного ему ресурса, рассчитывал воспользоваться быстрой передачей данных для каких-то конкретных целей. Приложение, которое не учитывает этого, вряд ли надолго задержится на устройстве пользователя. Здесь речь шла о тарифном плане с фиксированной платой, подразумевающей определенный объем потребления услуг, со снижением скорости передачи данных на определенных пороговых значениях, при этом, пользователю будут доступна работа в Интернете и при достижении этих пороговых значений. При этом речь не идет о дополнительных затратах, которые понесет пользователь. Если же речь идёт о соединении, где плата взимается за конкретный объем принятых и переданных данных, "безответственное" поведение приложения может дорого обойтись пользователю. Поэтому очень важно экономно расходовать ресурсы мобильных соединений с Интернетом, предоставляя пользователю возможность принятия решений о том, нужно ли загружать или отправлять большие объемы информации с их использованием.
Если говорить о скорости, на которую можно рассчитывать, подключаясь к веб-сервисам, то здесь всё зависит от оператора сотовой связи, услугами которого пользуется абонент, от наличия в конкретном месте, где производится подключение, необходимой сетевой инфраструктуры, от тарифного плана, от текущей загруженности сети. В случае с Wi-Fi-подключениями скорости обычно выше, другие условия так же лучше.
В целом же можно отметить, что пользователи всё чаще рассматривают смартфоны как средство для работы с веб-службами. Среди таких служб, если не брать в расчёт обычный веб-серфинг, можно отметить службы электронной почты, социальные сети, сервисы для обмена сообщениями, службы хранения данных, различные специализированные информационные службы.
При этом, даже если говорить о веб-серфинге, наибольшие удобства пользователь получает, используя специальные мобильные версии веб-сайтов. Аппаратные и программные возможности современных смартфонов, работающих под управлением Windows Phone, вполне позволяют просматривать обычные, не оптимизированные для мобильного использования, веб-страницы, но такой просмотр может быть сопряжён с некоторыми неудобствами. Например, элементы страницы, при выводе её целиком на экран устройства (даже в ландшафтной ориентации экрана) могут оказаться слишком мелкими. Если пользователю очень нужна данная страница, он воспользуется функцией масштабирования, но если ему придётся выбирать между службами, обладающими сходными возможностями, одна из которых предоставляет страницы, оптимизированные для мобильного просмотра, а другая – нет – он, с весьма высокой долей вероятности, выберет первую.
Приложения для работы с веб-сервисами – это, в сущности, примеры таких вот "страниц", которые отличаются от обычных веб-страниц высоким уровнем оптимизации их визуальной части для мобильных устройств и высоким уровнем использования программных возможностей устройства. Фактически, речь идёт о специализированных приложениях-клиентах, которые обеспечивают пользователю удобный интерфейс для работы с различными веб-службами и предлагают дополнительные возможности. Например, такие, как возможность использования некоторой функциональности службы при отсутствии подключения к Интернету.
Рассмотрим типичный сценарий работы приложения, которое взаимодействует с веб-службами.
Авторизация в службе
Приложение может быть рассчитано либо на работу со службой с использованием учетной записи пользователя, либо на работу с общедоступными ресурсами некоторой службы. В первом случае обычно при первом запуске приложения пользователю предлагается ввести учетные данные для входа в свою учётную запись. При этом не рекомендуется, чтобы приложение хранило имя и пароль пользователя.
Наилучший сценарий заключается в том, чтобы для взаимодействия со службой использовался ключ, который выдаётся после успешной авторизации. Здесь всё зависит от каждого конкретного сервиса. Например, такой ключ может быть действительным достаточно длительное время, его можно сохранить и использовать при последующих запусках приложения. При этом следует предоставить пользователю возможность выхода из учетной записи. Такая команда обычно располагается на странице настроек приложения.
При таком сценарии, когда срок действия ключа истечет, приложение снова запросит у пользователя ввод учетных данных. Ввод учетных данных пользователя характерен, например, для приложений-клиентов различных социальных сетей. Почтовые клиенты, которые тоже можно отнести к данной категории, вынуждены хранить учётные данные пользователя для доступа к почтовому серверу. Они должны обеспечивать надёжное хранение и использование таких данных, сводящее к минимуму возможность их несанкционированного использования. Если речь идёт о приложении для работы со службой, которая не подразумевает авторизацию пользователей, такое приложение, по сути, предлагает интерфейс доступа к службе, оптимизированный для работы на мобильном устройстве. Оно отбирает по каким-либо критериям содержимое для показа пользователю (например, ориентируясь на географическое местоположение пользователя, если он согласен предоставлять такие данные, что определяется перед установкой приложения, например, ориентируясь на его интересы и предпочтения, на какие-либо настройки).
Среди таких приложений можно отметить клиенты для работы с сетевыми энциклопедиями, приложения для чтения лент новостей. Нужно отметить, что распространён сценарий, когда приложение-клиент, производящее подключение к службе и отправку учетных данных пользователя для проверки, и само должно обладать некоторым ключом доступа к службе, идентифицирующем приложение. Такой ключ доступа приложение вынуждено хранить каким-либо образом, при этом к его хранению так же нужно подойти с максимальной ответственностью. Попадание ключа, например, к злоумышленникам, означает потенциальную возможность создания приложения, которое для веб-службы (и, возможно, для пользователей) будет "выглядеть" так же, как то приложение, которому изначально было предоставлено право работать со службой. Однако, приложение злоумышленников может быть использовано, например, для рассылки нежелательных сообщений, оно может быть использовано для взлома аккаунтов пользователя. Хранение подобных ключей приложений может быть реализовано, например, с использованием дополнительной веб-службы разработчика приложения.
На данном этапе, кроме того, производится проверка возможностей сетевого соединения. Если речь идёт о соединении с использованием сотовой сети, разумнее всего будет максимально экономно подойти к использованию её ресурсов и предоставить пользователю возможность самостоятельно принимать решение о загрузке больших объемов данных.
Получение данных
После подключения к службе приложение должно получить некоторые данные от этой службы. Например, приложение для чтения лент новостей загружает эти ленты, приложение для работы с социальной сетью, загружает списки контактов пользователя, историю его сообщений, списки фотографий, музыкальных файлов. Здесь очень важно соблюсти баланс между скоростью работы приложения (и скоростью его первого запуска), между объемом загружаемых данных и удобством работы пользователя.
Если речь идёт о потенциально бесконечных наборах данных, следует предусмотреть загрузку лишь некоторого, ограниченного их объема (например, некоторого количества самых свежих диалогов пользователя) с возможностью автоматической загрузки дополнительного содержимого в ситуации, когда пользователь выражает желание обратиться к такому содержимому. Например, приложение может загрузить полный список контактов пользователя, а подробности каждого из контактов загружать тогда, когда пользователь пытается просмотреть детальные сведения о контакте. Оно может загрузить некоторую часть списка сообщений пользователя, при просмотре списка загружать, фрагментами некоторого размера, оставшиеся части.
Кроме того, работа с веб-содержимым всегда предусматривает кэширование информации. Это позволяет ускорить доступ к данным, которые уже были просмотрены, позволяет реализовать некоторую функциональность приложения даже в состоянии, когда подключение к сети недоступно, это экономит сетевой трафик (а, значит, и энергию батарей устройства).
Отправка данных
Если приложение предусматривает работу с некоторым сетевым сервисом, поддерживающим функции отправки пользователем каких-либо данных (сообщений, изображений, видеозаписей), следует предусмотреть возможность отправки подобных материалов даже в ситуации, когда в момент отправки сетевое соединение не доступно, или сетевое соединение прерывается в ходе очередной операции отправки данных. Например, если пользователь общается с помощью приложения с другим пользователем, отправляет ему сообщение, а в этот момент разрывается сетевое соединение, сообщение не должно быть потеряно.
Завершение работы
Когда пользователь выходит из приложения – например, по нажатию кнопки Назад с его главного экрана, либо переходя на Рабочий стол по нажатию кнопки Пуск, приложение обычно сохраняет данные, имеющие отношение к текущему сеансу работы. То есть, например, при последующем его запуске (если предусматривался ввод учетных данных), учетные данные не нужно вводить снова, в кэше сохраняются данные, с которыми работал пользователь (некоторая часть этих действий выполняется обычно в ходе работы программы для того, чтобы не перегружать обработчики событий, вызываемые при выходе из приложения или его деактивации).
Смартфон – это персональное устройство, поэтому подобное поведение программ не только допустимо, но и вполне ожидаемо. Однако, у пользователя должна быть возможность явным образом выйти из учетной записи, удалить данные кэш-памяти и другие личные данные.
Так или иначе, вышеописанные принципы (иногда – все, иногда – некоторых из них) присутствуют во всех приложениях, которые предусматривают работу с веб-сервисами. Рассмотрим несколько универсальных разновидностей таких приложений.
- Приложения для чтения каналов новостей. Такое приложение обычно не предусматривает авторизацию в какой-либо службе. На начальном этапе работы (и на последующих этапах, при необходимости), пользователь настраивает список каналов. Приложение периодически (например, при запуске, или с использованием фонового процесса) обновляет каналы, информируя о новых сообщениях пользователя, например, с помощью информации, выводимой на её плитку. Каналы обычно могут обновляться и по запросу пользователя.
- Почтовые клиенты. В Windows Phone имеется стандартный почтовый клиент, если вы хотите разработать подобное приложение, стоит ознакомиться с его функциональностью. Общий алгоритм работы такого приложения заключается во взаимодействии с почтовым сервером пользователя с использованием введенных пользователем учетных данных. Почтовые клиенты умеют загружать новые письма, при этом решение о загрузке файлов вложений пользователь принимает самостоятельно, так как такие файлы могут иметь слишком большой объем для загрузки на мобильное устройство, вполне может оказаться так, что эти файлы пользователю на устройстве не нужны.
- Приложения для мгновенного обмена сообщениями. Такие приложения используют различные сетевые сервисы для обмена сообщениями между пользователями этих сервисов, иногда предоставляют расширенную функциональность и интеграцию с возможностями телефона.
- Приложения-клиенты для сервисов социальных сетей. Функционал таких приложений изменяется в достаточно широких пределах. От реализации возможности работы с каким-то отдельным аспектом социальной сети (например, работа с сообщениями и адресной книгой), до максимально полной реализации этих возможностей на мобильной платформе.
- Приложения-клиенты для организации работы с какими-либо сетевыми службами. Например, приложения для работы с сетевыми энциклопедиями или другими службами, предоставляющими какие-либо данные (информацию о погоде, сведения об авиарейсах, о почтовых отправлениях). Фактически, речь идёт об удобном интерфейсе для таких служб.
Приведенный список не является исчерпывающим, так как, в общем случае, можно создать приложение для работы с любыми службами, доступными в Интернете. Однако, он демонстрирует основные направления разработки подобных приложений.