Основы разработки приложений для мобильных устройств на платформе Windows Phone

Общие сведения о платформе Windows Phone 7.5

Показывать лекцию целиком

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

1.1. Платформа Windows Phone

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

Характеристики устройств на платформе Windows Phone сходны с компьютерами: мощный процессор, локальное хранилище данных, высокопроизводительная трёхмерная графика и много оперативной памяти. Управление устройством и запущенными на нём программами осуществляет своя операционная система, которую можно сравнить с операционной системой Windows для настольных компьютеров: она запускается при включении компьютера, и по окончании работы выключает компьютер.

Серия Windows Phone 7 существенно отличается от предыдущих версий устройств под управлением операционной системы Windows Mobile. В Windows Mobile можно было создавать программы и запускать их на более ранних версиях операционной системы, но при этом не использовалась среда Silverlight или XNA. Номер 7 в названии продукта означает 7-ое воплощение платформы операционной системы Windows Mobile. Это не значит, что она основана на операционной системе Windows 7, но программу для Windows Phone можно запустить на компьютере под управлением Windows. Поддержка Silverlight и XNA не разрывает связей с прошлым, а является сбалансированным сочетанием преемственности и нововведений.

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

Процессор Windows Phone

Центральный процессор (CPU) компьютера является устройством, который выполняет всю работу. При запуске программы центральный процессор отвечает за выборку данных из памяти, изменение и возврат данных. Самой распространённой характеристикой скорости работы компьютера является тактовая частота процессора. В состав центрального процессора входят часы, которые при работе отсчитывают такты. За один такт центральный процессор может выполнить одну часть низкоуровневой операции: выборка инструкции из памяти, выполнение вычисления и т.д.

Чем выше тактовая частота, тем быстрее работает процессор. Тактовая частота процессоров современных настольных компьютеров находится в пределах 3 ГГц (приблизительно 3 тысячи миллиарда раз в секунду). Это означает, что один такт длится приблизительно одну наносекунду. За это время сигнал может преодолеть расстояние примерно 30 см. Время, за которое сигналы могут пройти через схему, является серьёзным ограничивающим фактором.

Частота процессора в Windows Phone составляет около 1 ГГц. Можно предположить, что скорость Windows Phone примерно равна третьей части скорости компьютера. Но на практике это неверно по нескольким причинам.

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

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

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

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

Операционная система Windows Phone

Операционная система Windows Phone 7 не основана на операционной системе Windows 7 для настольных компьютеров. Операционная система Windows Phone является развитием системы Windows CE (Compact Edition), которая была специально разработана для работы на портативных компьютерных системах и оптимизирована в части производительности и сохранении срока службы аккумулятора устройства. Однако, программа будет работать в Windows Phone так же, как и на компьютере.

Графический экран

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

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

Разработчик может задавать, какую ориентацию экрана поддерживает приложение. По умолчанию приложения Silverlight отображаются в портретном режиме, но можно сделать так, чтобы они самостоятельно приспосабливались к изменениям ориентации экрана. Специально для обнаружения изменения ориентации предусмотрены новые события, а некоторые изменения обрабатываются автоматически. Разработчики игр обычно задают конкретную ориентацию экрана пользователя. Программы на XNA по умолчанию используют альбомный режим, но это свойство легко переопределить.

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

Графический процессор Windows Phone

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

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

Сенсорный экран

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

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

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

Камера

Практически во всех мобильных устройствах есть камеры — и Windows Phone не исключение. Телефон снабжён камерой с разрешением от 5 мегапикселей и вспышкой, что сравнимо с разрешением цифрового фотоаппарата. 5-мегапиксельные изображения могут быть напечатаны на фотобумаге в формате 13*18 см в хорошем качестве.

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

Устройства для определения местоположения и перемещения

Устройство Windows Phone может определить своё местоположение. В его состав входит устройство системы глобального позиционирования (GPS), которое получает спутниковые сигналы для определения местоположения телефона. Поскольку GPS хорошо работает только в открытом пространстве, телефоны также используют другие методы определения местоположения (A-GPS): информация о местоположении ближайшей вышки сотовых операторов и/или местоположение используемой точки доступа Wi-Fi-подключения. Методы A-GPS помогают определить местоположение при нахождении в зданиях и закрытых территориях.

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

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

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

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

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

Аппаратные кнопки

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

  • Пуск — позволяет начать выполнение нового действия. При нажатии на кнопку Пуск открывается окно со списком программ, в котором можно выбрать и запустить установленную программу. При этом, работающее приложение приостанавливает свою работу. Операционная система Windows Phone "помнит", какое приложение было остановлено, чтобы можно было вернуться к нему позже.
  • Назад — позволяет вернуться к предыдущей странице приложения. Она также используется для остановки приложения и возврата к запущенному ранее приложению. Например, можно запустить приложение для отправки электронного письма во время просмотра веб-сайта, и после отправки сообщения нажать кнопку Назад, чтобы вернуться в браузер. В пределах приложения для работы с почтой при нажатии на кнопку Назад происходит переход к её предыдущему экрану. Как только сообщение отправлено, можно нажать кнопку Назад, находясь на главном экране программы электронной почты, чтобы вернуться к экрану со списком программ и запустить другую программу. Кнопка Назад также используется для вызова списка запущенных в телефоне приложений. Если нажать и держать её ("длинное нажатие"), то телефон откроет список всех активных приложений, между которыми можно переключаться.
  • Блокировка — позволяет заблокировать телефон и выключить экран для сохранения заряда батареи телефона. Когда пользователь снова нажимает кнопку Блокировка или кнопку Пуск, телефон отобразит экран блокировки. Телефон можно настроить на автоматическую блокировку после нескольких минут бездействия. Приложению может быть разрешено продолжить работу при блокировке устройства. Это полезно в приложениях для навигации, в которых программа должна остаться активной, но оказывает влияние на время работы телефона от аккумулятора.
  • Поиск — позволяет начать новый поиск. Действия при нажатии кнопки Поиск зависят от того, что в это время делает пользователь. Если нажать кнопку Поиск во время просмотра веб-страницы, то он откроется меню веб-поиска. Если нажать кнопку Поиск, когда активно приложение Контакты, будет осуществляться поиск контактов.
  • Камера — запускает приложение Камера, в котором можно сделать фотоснимок. При этом, запущенная в это время программа останавливается.
  • То, как используются эти кнопки, имеет значение для программ. Программа должна учитывать, что она в любой момент может быть выгружена из памяти. Например, если пользователь решит сделать фотоснимок, играя в игру, то игра будет приостановлена и может быть удалена из памяти. После того как пользователь сделает снимок, пользователь должен иметь возможность возобновить игру.

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

    Не во всех устройствах Windows Phone есть аппаратная клавиатура для ввода текста, но все устройства могут использовать для этого сенсорный экран.

    Память и хранилище

    Считается, что чем больше памяти в компьютере, тем он "лучше" работает. Существует две разновидности памяти: оперативная и внутренняя память. Оперативная память (RAM) — это пространство в компьютере, где выполняются программы. Внутренняя память используется для хранения программ и данных в устройстве.

    В настольном компьютере память выражается количеством RAM (Random Access Memory — память произвольного доступа) и количеством места на жёстком диске. В современном настольном компьютере, в среднем 2 Гб RAM и 500 Гб места на жёстком диске. Можно считать, что сжатая музыкальная дорожка использует приблизительно 6 Мб, высококачественное изображение — приблизительно 3 Мб, и один час видео хорошего качества займёт около 1 Гб.

    Минимальное требование к устройствам Windows Phone — 256 Мб оперативной и 8 Гб внутренней памяти, что соответствует одной восьмой части объёма оперативной памяти и приблизительно одной пятидесятой части памяти для хранения данных по сравнению с настольным компьютером. Операционная система Windows Phone оптимизирована для работы с небольшим объёмом памяти. Однако, при создании программ нужно быть уверенным, что программы не исчерпают доступные ресурсы.

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

    Мобильные телефоны Windows Phone имеют несколько возможностей подключения к сети:

  • Wi-Fi — все устройства Windows Phone поддерживают беспроводную сеть. Wi-Fi предоставляет высокоскоростное сетевое подключение, но работает, только если телефон находится близко к точке доступа к сети;
  • 3G — мобильные сети третьего поколения, обладают чуть меньшей производительностью по сравнению с Wi-Fi. Скорость в сетях 3G часто изменяется. Доступ 3G также может быть ограничен с точки зрения объёма данных, которые разрешено передавать мобильному устройству;
  • GPRS — во многих областях сеть 3G не доступна. В этом случае телефон может использовать мобильную сеть GPRS, скорость которой существенно ниже, чем 3G.
  • Сетевые подключения работают по протоколу TCP/IP. К сожалению, сетевое покрытие не является повсеместным, и программы в телефоне должны продолжать работу при отсутствии сетевого подключения, а также при изменении скорости подключения.

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

    Особенности платформы Windows Phone

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

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

    Возможности мобильных устройств позволяют создавать по-настоящему новые приложения. Инструменты для создания программ предоставляют большие возможности для создания полезных и удобных в использовании приложений.

    1.2. Экосистема Windows Phone

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

    Программное обеспечение для управления мультимедиа Zune

    Устройство Windows Phone можно подключить к компьютеру с помощью программного обеспечения Zune. Оно предоставляет возможность управлять мультимедийным контентом и передавать его из компьютера в телефон и обратно. Программное обеспечение Zune также может обновлять встроенное программное обеспечение Windows Phone до новых версий. Zune также является связующим звеном между средой проектирования Visual Studio и самим телефоном.

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

    Сервисы Windows Live и Xbox Live

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

    Карты Bing

    Телефон содержит аппаратные средства, которые позволяют ему определять своё местоположение. Служба карт Microsoft Bing предоставляет карты, которые покрывают большую часть земли. Программа Windows Phone может использовать сетевое подключение, чтобы связаться со службой карт Bing и загрузить карты и виды с воздуха. С помощью Silverlight можно управлять отображением карт, что позволяет программам использовать отображение местоположения.

    Службы уведомлений Windows

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

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

    Windows Phone и Windows Azure

    Windows Azure — это набор "облачных" служб, которые предоставляет Microsoft. Вместо того, чтобы использовать свой собственный компьютер для хранения данных и обработки информации о пользователях, можно арендовать пространство и процессоры в облаке. Если ваше сетевое приложение становится очень популярным, то вам не нужно покупать больше компьютеров и подключать их — вместо этого вы только расширяете используемый вами облачный ресурс.

    Серверные приложения. Облачные службы также полезны, если нужно выполнить большое количество действий однократно или очень редко. Вместо содержания большого количества компьютеров для выполнения подобной работы можно просто передать эту работу в облако. Можно создать серверное приложение на C# и протестировать его на эмуляторе облака перед его загрузкой для работы в реальное облако. Клиентские приложения могут использовать эти службы с помощью различных сетевых технологий.

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

    BLOB-хранилище. BLOB обозначает двоичный объект большого размера. BLOB может быть чем угодно: текстом книги, фильмом или сканом отчёта. Windows Azure предоставляет хранилище, в котором приложение может сохранять и получать BLOB-данные.

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

    Использование экосистемы

    В наше время телефон является не просто телефоном. Приложения в телефоне могут работать совместно с удалёнными службами, которые доступны через сетевое подключение. Другие компоненты телефона также используют эту возможность. В телефон встроен клиент Facebook, приложение для работы с камерой; из хранилища изображений можно загрузить рисунки в Windows Live SkyDrive или Facebook.

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

    1.3. Выполнение программ в Windows Phone

    Переключение приложений Windows Phone

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

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

    Следует учесть, что в любой момент времени программа может прервать свою работу и освободить ресурсы системы для другой программы. Если пользователь снова вызовет остановленное приложение, оно должно продолжить работу с того же самого места.

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

    Фоновые задачи

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

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

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

    Windows Phone и управляемый код

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

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

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

    Промежуточный язык Microsoft (MSIL — Microsoft Intermediate Language). В Microsoft .NET эти проблемы решаются введением промежуточного языка для описания действий, которые программа должна выполнить. При компиляции программы на C# компилятор создаёт файл, содержащий инструкции на этом промежуточном языке. При запуске программы эти инструкции снова компилируются — на этот раз в низкоуровневые инструкции, понятные целевому аппаратному обеспечению. Во время процесса компиляции инструкции проверяются на безопасность, и при работе программы их выполнение отслеживается исполняющей средой.

    Программы на Microsoft .NET составляются из отдельных компонентов, называемых сборками. Сборка содержит код MSIL вместе с любыми ресурсами, которые использует код, например, изображения, звуки и др. Сборка может быть либо исполняемым файлом, который можно запустить, либо библиотекой, которая предоставляет приложению ресурсы. Windows Phone может работать с исполняемыми файлами и библиотеками на C#, созданными любым .NET-совместимым компилятором. Можно написать часть кода приложения на другом языке, например Visual Basic, C++ или F#. Программные библиотеки, созданные на этих языках, можно использовать в приложениях для телефона.

    Идея .NET состоит в том, чтобы предоставить единую основу для выполнения кода, который не зависит от аппаратного обеспечения или языка программирования. Стандарты для .NET определяют формирование типов данных и синтаксис языков C# и Visual Basic.NET.

    Компиляция "на лету". Когда нужно запустить программу, требуется как-то преобразовать MSIL-код (который не зависит от компьютерного оборудования) в инструкции машинного кода, которые может выполнить процессор конкретного компьютера. Этот процесс компиляции называют компиляцией "на лету" (JIT — Just-in-time), потому что машинный код для целевого устройства компилируется из инструкций на промежуточном языке непосредственно перед их выполнением. Подход, при котором программа запускается в управляемой среде, называется управляемым кодом. Компиляция происходит непосредственно перед запуском программы: пользователь телефона выбирает программу из стартовой страницы, MSIL-код загружается из хранилища, и затем происходит компиляция.

    Недостаток этого подхода состоит в том, что, вместо того чтобы просто запустить файл, компьютер должен выполнить дополнительную работу. Он должен загрузить MSIL-код, скомпилировать его в машинный код и следить за тем, какие действия выполняет программа при работе. К счастью, современные процессоры (включая процессор платформы Windows Phone) могут выполнять эти действия без заметного снижения производительности.

    Преимущество заключается в том, что один и тот же промежуточный файл кода может быть загружен и выполнен на любом устройстве, в котором работает система .NET. Можно запустить одну и ту же программу на мобильном устройстве, компьютере под управлением Windows или Xbox 360 — даже при том, что у этих платформ абсолютно разные операционные системы и оборудование.

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

    Наконец, использование промежуточного языка означает возможность использования нескольких языков программирования. Хотя основными программными инструментами для Windows Phone являются Visual Studio и C#, можно использовать скомпилированный код, созданный на любом языке программирования, который содержит .NET-компилятор. Если есть готовые программы на C++, или даже на F#, можно использовать библиотеки кода этих программ в приложениях для Windows Phone. Однако, в первую очередь для создания программ используется язык C# и технологии Silverlight или XNA.

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

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

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

    1.4. Разработка приложений для Windows Phone

    Приложения для Windows Phone создаются точно так же, как и приложения для настольных компьютеров под управлением Windows. Для этого используется интегрированная среда разработки (IDE — Integrated Development Environment) Visual Studio. Можно отлаживать запущенную в устройстве Windows Phone программу так же легко, как и программу для компьютера. Также можно создавать решения, которые совместно используют компоненты настольной системы, Windows Phone, и даже платформы Xbox.

    Эмулятор Windows Phone

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

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

    (рис 1.1) Эмулятор Windows Phone

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

    Также возможна эмуляция местоположения. Можно выбрать на карте желаемое "местоположение" эмулятора телефона. Также можно ввести пути для перемещения телефона и затем воспроизвести их — так можно создавать поездки для тестирования приложений для определения местоположения.

    Программный доступ к средствам Windows Phone

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

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

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

    Silverlight и XNA

    Приложения для Windows Phone можно создавать на основе технологии Silverlight или XNA. Если вы создаёте приложение, например, текстовый процессор, почтовый клиент или калькулятор, то вы можете использовать Silverlight. Silverlight предоставляет набор средств для создания таких программ. Если вы создаёте игру, то можете использовать XNA. XNA предоставляет средства для создания 2D и 3D игр с высокой производительностью.

    Можно и наоборот — создать калькулятор в XNA или простую игру (например, головоломки со словами) в Silverlight. В частности, Silverlight идеально подходит для игр с небольшими требованиями по графике, либо использующих векторную графику, а не растровую, либо скорость которых зависит от реакции пользователя, а не таймера. А XNA бывает сложно использовать в тех задачах, где обычно применяется Silverlight. Реализация окна списка на XNA может быть интересной для некоторых разработчиков, но для многих программистов это довольно сложная задача.

    Тип создаваемого приложения выбирается при создании нового проекта в Visual Studio. Приложение может совместно использовать средства Silverlight и XNA. Можно создать программу на Silverlight со страницей, содержащей игру на XNA. Можно создать меню и пользовательский интерфейс для игры в Silverlight, а игровой процесс — в XNA. Также можно добавить элементы Silverlight поверх запущенной игры XNA.

    Хранение данных в Windows Phone

    Часто приложениям нужно сохранять данные. Некоторые данные являются простыми, например, данные конфигурации, такие как размер экрана. Другие элементы будут сложными, например, список рекордов или контрольная точка в игре. Также может понадобиться сохранять больше информации, которая должна быть структурирована, например база данных клиентов или продуктов. Windows Phone предоставляет подходящее хранилище для данных.

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

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

    Локальная база данных. Базой данных называют коллекцию данных, которыми управляет программа. Базы данных используются для создания программ, которые сохраняют и управляют большими объёмами данных. В Windows Phone есть встроенный сервер базы данных. Он позволяет создавать приложения, которые хранят структурированные данные.

    Приложению Windows Phone предоставляется доступ к локальной базе данных SQL, где они могут хранить большое количество структурированных данных. Приложение может создавать запросы, используя библиотеки LINQ (интегрированный язык запросов), чтобы извлечь и изменить данные в базе данных. Фактически файл базы данных находится в изолированном хранилище приложения.

    Средства разработки

    Необходимые для разработки приложений инструменты являются свободно распространяемыми. Можно загрузить Windows Phone SDK и начать писать приложения для Windows Phone буквально в течение нескольких минут. Те разработчики, которые приобрели Visual Studio 2010, могут использовать все средства для разработки приложений для мобильных устройств, установив дополнительно плагин Windows Phone SDK. Windows Phone SDK доступен на сайте http://create.msdn.com. Для создания интерфейса приложений Silverlight можно использовать бесплатную версию Expression Blend, которая поставляется вместе с Windows Phone SDK.

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

    Windows Phone Marketplace

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

    Если вы хотите продать созданное вами приложение, вы должны быть зарегистрированным разработчиком и предоставить свою программу для одобрения. Регистрация разработчика стоит $99, но студенты могут зарегистрироваться бесплатно по программе Dreamspark. Разработчики могут зарегистрировать свои устройства Windows Phone как устройство разработчика. Visual Studio может загружать приложения в устройство разработчика и позволяет отлаживать программы, работающие на физическом устройстве.

    Вы можете распространять бесплатные приложения так же, как и платные. Зарегистрированный разработчик может бесплатно разместить в Marketplace до 100 бесплатных приложений. Если вы хотите распространить более 100 бесплатных приложений, вы должны заплатить по $20 за каждое дополнительное бесплатное приложение. Вы можете также создать приложения, у которых есть "демонстрационный" режим, которые могут быть преобразованы в "полную" версию после их покупки. Программа может определить, работает она в полном или демонстрационном режиме.

    Когда вы предоставите приложение для продажи в Marketplace, оно пройдет процесс одобрения, чтобы удостовериться, что оно безопасно для использования и работает так, как ожидается. Если процесс одобрений завершится неудачей, то вам выдадут диагностический отчёт. Перед тем как загрузить своё приложение, вы должны прочесть требования для сертификации.

    Средство тестирования. Windows Phone SDK содержит средство для тестирования, которое может использоваться для предварительного тестирования приложения перед тем, как оно будет загружено в Marketplace. Это средство автоматически синхронизируется с процессом одобрения Marketplace, и если процесс изменится, то инструмент будет обновлён в соответствии с этими изменениями. Средство тестирования работает автоматически и выполняет такие же тесты, что и команда тестирования. Это увеличивает шансы на то, что поданное приложение будет одобрено с первого раза.

    Закрытые бета-версии. Один из способов определить качество приложения или игры состоит в том, чтобы предоставить его группе людей и узнать их мнение. Можно создать специальную версию продукта и предоставить возможность скачать её до 100 пользователям. Тестеры могут использовать программу в течение 90 дней, и за это время предоставить свой отзыв о программе.

    Краткие итоги

  • Windows Phone является мощной вычислительной платформой.
  • Все устройства Windows Phone соответствуют базовым требованиям спецификации. Требования включают определённый размер экрана, ёмкостный сенсорный ввод, который может отследить, как минимум, четыре касания, поддержку GPS, ускоритель трёхмерной графики, камеру высокого разрешения и достаточный объём памяти для хранения данных и программ.
  • Устройство Windows Phone подключается к компьютеру через программное обеспечение Zune, которое предоставляет компьютеру систему управления мультимедиа контентом и позволяет синхронизировать его с телефоном.
  • Система Windows Phone может использовать сетевые службы для получения уведомлений, определения местоположения и выполнения поиска.
  • При разработке программы для Windows Phone программное обеспечение Zune используется для передачи программ в устройство для проведения тестирования. Программное обеспечение Zune также используется для обновления встроенного программного обеспечения телефона.
  • Операционная система Windows Phone поддерживает многозадачность, но для повышения производительности активным может быть только одно приложение. Однако, приложения могут создать свои собственные "фоновые агенты", которые могут выполнить определённые задачи, когда приложение не запущено. Windows Phone также поддерживает Быстрое переключение приложений, который позволяет быстро возобновить работу запущенных приложений.
  • Windows Phone запускает программы, скомпилированные в "промежуточный код" (MSIL). MSIL-код компилируется в телефоне непосредственно перед запуском программы. Сами программы запускаются управляемой среде, которая не позволяет им напрямую использовать оборудование телефона.
  • Приложения для Windows Phone можно создавать на основе технологий Silverlight и XNA на языке C# в среде Visual Studio 2010. Программисты могут использовать эмулятор Windows Phone, который работает на компьютере под управлением Windows и эмулирует работу среды Windows Phone.
  • Программы имеют доступ ко всем функциям телефона и могут совершать звонки, отправлять SMS-сообщения и т.д.
  • Windows Phone SDK может использоваться для создания приложений для Windows Phone и доступен на сайте http://create.msdn.com. Однако, чтобы установить приложения в телефоне, вы должны быть зарегистрированы как разработчик приложений для Windows Phone. Это стоит $99 в год, но для студентов регистрация бесплатна по программе Microsoft Dreamspark. Зарегистрированный разработчик может продавать свои приложения на Windows Phone Marketplace.
  • Вопросы

  • Каковы аппаратные требования к устройствам Windows Phone?
  • В чём преимущество использования сенсорного экрана емкостного типа по сравнению с резистивным?
  • Какие устройства Windows Phone позволяют телефону определять своё местоположение?
  • Какие аппартные кнопки есть у устройств Windows Phone и какие функции они выполняют?
  • Какие типы сетевых подключений поддерживаются в Windows Phone?
  • С какими программами и службами может взаимодействовать Windows Phone?
  • В чём идея "быстрого переключения приложений"?
  • Каковы отличия фоновых задач от программ?
  • Как выполняется компиляция и запуск программы в Windows Phone?
  • Для чего используется эмулятор Windows Phone?
  • Как приложение может использовать функции телефона?
  • Для чего используются технологии Silverlight и XNA?
  • Какие средства для хранения данных есть в Windows Phone?
  • Какие инструменты можно использовать для создания приложений для Windows Phone?
  • Для чего нужен Windows Phone Marketplace?
  • Упражнения

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

  • Система будет использоваться юридическим штатом, чтобы поминутно отслеживать действия сотрудников.
  • Первоочередные задачи системы — предоставление актуальной информации, её надёжное хранение и простота использования.
  • Программа будет подключаться к нашим серверам тайм-менеджмента и загружать расписания работы и информацию о клиентах в телефон в начале каждого дня.
  • В течение рабочего дня пользователи будут вводить информацию о своих действиях, и в конце дня телефон должен загружать эту информацию обратно на сервер.
  • Периодически будут возникать неотложные случаи, которым необходимо уделять внимание, и наша система должна отправлять сообщение сотрудникам о возникновении подобных ситуаций.
  • Иногда персонал будет участвовать во встречах за пределами офиса, и при этом система также должна отслеживать их действия.
  • Ваша компания планирует использовать в телефонах ещё несколько приложений, включая юридический словарь и интерактивную юридическую систему. Новое приложение должно работать одновременно с этими программами.
  • Мы также хотели бы использовать телефонные устройства в качестве диктофона, чтобы делать аудио- и видеозаписи встреч с клиентами с высоким качеством. К записям будут добавляться теги, и они будут загружаться на наши сервера. Записи будут занимать примерно 100 Мб данных за один час.
  • Наше приложение должно работать совместно с другими приложениями в устройстве, которые клиенты могут загрузить.
  • Компания иногда должна отправлять информационное "сообщение дня" с корпоративного веб-сайта. Приложение должно принимать и выводить эти сообщения на экран. В идеале, это должно происходить, даже когда приложение не запущено.
  • В будущем может понадобиться отслеживать местоположение тех сотрудников, которые выезжают за пределы офиса.
  • Ваш менеджер попросил вас исследовать платформу Windows Phone как потенциальное устройство для выполнения поставленных задач. Вы должны предоставить ответы на следующие вопросы:

  • Могут ли возникнуть какие-либо проблемы при использовании телефона для решения этих задач?
  • На основе какой технологии следует создать приложение: Silverlight или XNA?
  • Какой тип сетевого подключения должен использоваться для распределения расписания и получения отчётов?
  • Следует ли ограничить владельцев телефонов возможностью запуска только одного нашего приложения?
  • Достаточно ли в телефоне памяти для хранения данных для обслуживания 10 встреч в день?
  • Есть ли в Windows Phone какие-либо особенности, которые можно использовать для дальнейшего улучшения приложения?
  • Есть ли у платформы какие-либо ограничения, которые в будущем могут привести к изменениям технических характеристик устройств?
  • Какой язык программирования вы предлагаете использовать для разработки приложения? Можно ли использовать некоторые библиотеки для обработки данных, которые некоторое время назад были написаны на Visual Basic .NET?
  • Есть ли какие-то особые требования для создания и выполнения фоновых задач в телефоне?
  • Можно ли передать какие-то операции в облачный сервер?
  • При ответе на каждый вопрос вы должны определить подходящие средства и возможности платформы Windows Phone.

    Вернуться к учебному плану