Статьи

Введение в платформу разработки Windows Phone 7

С сентября 16 — го 2010, Microsoft сделала доступной RTW (выхода в Интернет) версию платформы разработки для Windows Phone 7.   В каком — то смысле, для многих из вас, части это будет повторное введение в технологии вы уже знаете или с которым вы познакомились.   Это хорошая новость, потому что это означает, что вы можете стать продуктивным очень быстро, и это не ошибка.   Если вам интересно, будет ли эта платформа успешной, подумайте, что существуют миллионы разработчиков, обладающих существующими навыками, которые они уже могут использовать для создания приложений для Windows Phone 7.  Даже для тех, кто никогда не использовал такие инструменты, как Visual Studio, барьер для входа низок, потому что базовый набор инструментов стал доступен совершенно бесплатно!

Смотрите телефон опыт в действии здесь

 

Приложение для определения географического местоположения за несколько минут

Хотите приложение с возможностями Bing Maps, которое покажет вам, где вы находитесь?

Создайте новый проект Silverlight с помощью бесплатных инструментов и перетащите элемент управления «Карта» на область дизайна предоставленного шаблона страницы…

Обновите предоставленный код шаблона, как этот, чтобы добавить / обновить метку, когда местоположение определено…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

using Microsoft.Phone.Controls.Maps;
using System.Device.Location;


namespace WindowsPhoneApplication3
{
public partial class MainPage : PhoneApplicationPage
{
Pushpin pp = null;
GeoCoordinateWatcher watcher = null;

// Constructor
public MainPage()
{
InitializeComponent();

pp = new Pushpin();
pp.Content = "Here I am!";
map1.Children.Add(pp);

watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
watcher.Start();
}

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
pp.Location = e.Position.Location;
}
}
}

 

Нажмите F5, чтобы создать и протестировать бесплатный эмулятор устройства, и дважды щелкните, чтобы увеличить масштаб или использовать свои пальцы, если у вас сенсорный дисплей…

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

Целевая платформа

Когда дело доходит до нацеливания на платформу, у вас есть очень солидное исправление с Windows Phone 7.   Разработка для платформы более схожа с разработкой для Xbox, чем с предшественницей WP7, Windows Mobile 6.5.   Хотя Microsoft снова заключила партнерские отношения с производителями устройств для производства телефонов, на этот раз Microsoft очень внимательно относилась к требованиям к оборудованию и предоставила большую часть кода более низкого уровня для поддержки стабильности платформы.   Если вы разрабатываете для Windows Phone 7 сегодня, вы можете ожидать, что это из всех устройств, на которых работает ваш код:

  • WVGA (480 х 800) дисплей
  • Емкостный 4-точечный мультитач экран
  • DirectX 9 аппаратное ускорение
  • A-GPS, акселерометр, компас, свет, близость
  • 5MP + цифровая камера
  • Общие аппаратные элементы управления и кнопки, включающие кнопки «Пуск», «Поиск» и «Назад»
  • Сотовые сети и Wi-Fi радио
  • 256 МБ + ОЗУ
  • 8 ГБ + флеш-памяти

 

Так что теперь, не беспокоясь о том, будет ли ваше программное обеспечение хорошо работать на всех устройствах, ваш самый большой выбор платформы будет состоять в том, будет ли ваше приложение основано на Silverlight или платформе XNA. 

Решения на основе Silverlight и XNA основаны на урезанной версии .NET Framework.   Решения Silverlight создаются с использованием методологии управления + событий, знакомой разработчикам WinForms или WebForms.   Решения XNA позволяют и требуют от разработчиков создания низкоуровневого игрового цикла, который осуществляет детальное управление рисованием и анимацией, а также обнаружение взаимодействия с пользователем.   Можно обобщить, сказав, что Silverlight — это выбор для быстрой общей разработки приложений, включая некоторые игры, а XNA — выбор для высокопроизводительных 2D и 3D игр.

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

Платформа WP7 не только поддерживает оба, но и то, и другое поддерживается на нескольких платформах.   Позвольте мне объяснить это.   Если вы разрабатываете игру XNA, есть большая вероятность, что 90% вашего кода — и я знаю людей, которые могут претендовать на это число — могут быть повторно использованы в сборке XNA для Zune, Windows PC или Xbox Live Arcade.    Если вы разрабатываете приложение Silverlight для WP7, хороший дизайн может позволить многим вашим классам и, возможно, даже элементам управления повторно использоваться на настольной / веб-платформе Silverlight во многих браузерах и платформах.

Инструменты платформы

Перейдите на портал разработчиков, чтобы получить доступ к небольшому пакету бесплатных инструментов в одном установщике:

  • Visual Studio 2010 Express для Windows Phone
  • XNA Game Studio 4.0
  • Инструменты Silverlight 4 для Visual Studio
  • Ресурсы эмулятора Windows Phone
  • Microsoft Expression Blend для Windows Phone

 

Если у вас версия Visual Studio 2010 Professional или выше, то вместо установки по умолчанию в качестве отдельных автономных продуктов Visual Studio первые два элемента выше создадут шаблоны нового проекта в существующей установке.   Аналогично, если у вас установлена ​​Expression Blend 4, этот последний элемент Blend будет добавлен в качестве шаблона New Project.

Получите то, что вам нужно, чтобы начать создавать и продавать изделия WP7 здесь

Производительность Silverlight

Разработка с Silverlight позволяет использовать хорошо известную парадигму управления + события.   Среда выполнения и управление Silverlight в Windows Phone 7 схожи с Silverlight 3 на ПК с несколькими упущениями (например, TCP-сокеты) и дополнениями Silverlight 4 (такими как API-интерфейсы жестов касания).   Ключевое отличие от настольного компьютера состоит в том, что, хотя приложения Silverlight 3 по умолчанию запускаются в браузере с возможностью запуска вне браузера из меню «Пуск», приложения WP7 Silverlight запускаются непосредственно с начального экрана без обернутого ими браузера.   Фактически телефонная платформа не поддерживает контент Silverlight внутри веб-страниц в первоначальном выпуске.

У разработчика есть несколько вариантов механики создания приложений Silverlight, но XAML (как и настольные Silverlight и WPF) лежит в основе большинства решений.

XAML или расширяемый язык разметки приложений в Silverlight — это форма XML, которая обеспечивает мощный способ объявления дерева элементов управления пользовательского интерфейса, привязок данных, поведения ресурсов и даже данных.  В большинстве случаев вы можете объявить пользовательский интерфейс в XML гораздо быстрее, чем набрать код для программной реализации объектов.   Фактически вы можете сделать это и можете использовать код для реагирования на события пользовательского интерфейса или динамического создания пользовательского интерфейса.

Инструменты обеспечивают поддержку IntelliSense для XAML и кода, а также визуальную область проектирования, которую можно использовать для графического построения XAML, перетаскивая элементы управления из окна панели инструментов, а затем задавая свойства в окне «Свойства».

Visual Studio, показывающая набор инструментов, поверхность графического дизайна, базовый XAML и окно свойств

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

Silverlight использует очень мощную систему макетов для элементов управления и элементов управления панели, которые содержат и упорядочивают дочерние элементы управления.   Среда выполнения телефона поставляется только с тремя панелями управления: Grid, StackPanel и Canvas, однако архитектура элементов управления чрезвычайно мощная и расширяемая, что позволяет создавать собственные элементы управления и панели. 

Обманчиво небольшой, но мощный набор предоставляемых элементов управления Silverlight для использования на Windows Phone 7

Восхитительный дизайн интерфейса

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

Пример использования Panorama в области просмотра в Windows Phone 7

Вы можете предоставить такой опыт в течение нескольких минут.   Запустите новый проект, выберите приложение Windows Phone Panorama или сводное приложение и начните настраивать предоставленный шаблон.

Включенный шаблон проекта Panorama для Windows Phone 7

Шаблоны проектов по умолчанию также включают примеры архитектуры Model-View-ViewModel, которые вы можете расширить.

Говоря о MVVM и, следовательно, о потенциале меньшего количества кода и улучшенного дизайна пользовательского интерфейса, Expression Blend для Windows Phone предоставляет вам или дизайнеру возможность придать вашему приложению особый шарм.   Blend обеспечивает продуктивный дизайн пользовательского интерфейса, который фокусируется на визуальных элементах, включая визуальное редактирование стилей, шаблонов данных, макетов, анимаций, взаимодействий и состояний управления.   Хотя это все возможно в Visual Studio с использованием XAML, опытный пользователь Blend наряду с практиками MVVM может значительно упростить процесс создания UX.

Ориентированный на дизайн пользовательский интерфейс в Microsoft Blend для Windows Phone 7

Нет тестового устройства?   Нет проблем

Бесплатный набор инструментов включает в себя мощный эмулятор.   Он использует преимущества совместимого с DirectX 10.1 графического процессора и аппаратной виртуализации, чтобы обеспечить реалистичную работу.   Запустите отладку, и Visual Studio запустит эмулятор (если он еще не запущен в течение <5 секунд в моем случае), разверните приложение в эмуляторе (всего несколько секунд) и запустите приложение в режиме полной отладки.

Когда дело доходит до тестирования акселерометра, сервисов определения местоположения, сенсорных жестов и производительности в играх, ничто не заменит тестирование на реальном устройстве, хотя многое можно сделать с помощью Reactive Extensions для .NET (для имитации данных устройства) и сенсорного включения. Windows PC (для симуляции мультитач жестов).

Интеграция платформы

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

  • Шаблоны проекта включают XAML для добавления панели приложения в ваше приложение.

Полностью открытая панель приложений в IE Mobile, оформленная примерно в 10 строк кода обработчика XAML plus

  • Всего за несколько строк кода вы можете запустить пользовательский интерфейс для составления электронной почты, текстовых сообщений и поисков; выбрать / сохранить адреса электронной почты и номера телефонов от / до ваших контактов; подключиться напрямую к рынку; и настроить телефонные звонки.
      var task = new EmailComposeTask();
task.To = "[email protected]";
task.Subject = "Important News!";
task.Body = "Stuff you probably want to say";
task.Show();

 

Код для запуска электронной почты составляет пользовательский интерфейс

  • Вы можете реагировать на события сенсорной манипуляции, которые предоставляют информацию о панорамировании и масштабировании / сжатии
  • Создав объект Accelerometer и подписавшись на события аналогично службам определения местоположения в первом примере, вы можете отслеживать положение каждой грани устройства относительно земли для использования в играх или других естественных взаимодействиях пользовательского интерфейса.

Облако подключен

Windows Phone 7 — это облачная платформа.   Готовый телефон позволяет пользователям подключать несколько учетных записей электронной почты, различные календари, множество наборов изображений и ряд социальных сетей.   Пользователи покупают приложения, музыку и игры из облачных сервисов.   Уведомления и обновления поступают из облака (размещены на платформе Microsoft Windows Azure).   Платформа Windows Phone 7 основана на многих облачных сервисах.   Если вы создали их, особенно для существующих приложений Silverlight, то ваши приложения WP7, вероятно, могут использовать их вместе с приложениями, предоставляемыми Microsoft, включая службы определения местоположения, Xbox Live, Windows Live, службы Map и службы push-уведомлений.

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

 // Constructor
public MainPage()
{
InitializeComponent();

// Create generic or strong-bound service connection client
WebClient wc = new WebClient();

// Set up to receive event when request has completed
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);

// Kick off asynchronous activity
wc.DownloadStringAsync(new Uri("<some URL>", UriKind.Absolute));
}

// Called when asynchronous network activity completed or error occurs
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
// Make sure there's no error, otherwise inform the user in some way
if (e.Error == null)
{
// If updating the UI when dispatch to the UI thread to avoid concurrency issues
Dispatcher.BeginInvoke(() =>
{
// Do some activity like display the results
}
);
}
}


Пример инициации и завершения сетевых операций асинхронно

API-интерфейсы изолированного хранилища предоставляют средства для хранения настроек имени-значения или всей файловой структуры текста, XML или двоичных файлов исключительно под контролем и доступом ваших приложений.   Это хороший магазин для:

  • кэшированные данные
  • данные поставлены в очередь для отправки
  • настройки локального приложения

Остальные могут и должны храниться в облаке с использованием различных служб, таких как Windows Azure и Windows Azure Storage.

Когда что-то меняется в облаке, вы хотите уведомить приложение (если оно запущено), отправив ему необработанные данные, которые оно может использовать, или пользователя (если это не так), который может видеть уведомления в виде всплывающих «всплывающих» сообщений и / или изменений к плиткам на стартовом экране.   API интеграции push-уведомлений используются для интеграции в телефон, и вам необходимо подписаться на облачную службу, которая генерирует уведомления (которые вы, скорее всего, создадите).   Windows Azure — это платформа, на которую стоит обратить внимание, нужна ли вам масштабируемая и надежная служба.

Золотая лихорадка

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

За 99 долларов США (зависит от страны, но доступно во многих странах!) Вы можете подать столько платных приложений, сколько вам нужно, а также до 5 бесплатных приложений (с дополнительными бесплатными заявками на участие в каждой организации по 20 долларов США).   Квалифицированные студенты могут присоединиться к программе DreamSpark и получить скидку в размере 99 долларов.

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

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

Рынок в настоящее время продает приложения для Windows Mobile 6.x и должен начать прием заявок на приложения для Windows Phone 7 в октябре 2010 года.

С запуском устройств WP7 в конце октября и начале ноября по всему миру золотая лихорадка сейчас в полном разгаре.

Если у вас есть опыт разработки .NET, Silverlight или веб-сервисов, сейчас самое время вновь познакомиться с этими навыками на новой и интересной платформе!

 

Дополнительные ресурсы

об авторе

Колин Мелиа — технический директор, архитектор, спикер, тренер и автор.   Вы можете связаться с ним через http://colinizer.com .

Он разработал первый профессиональный учебный тур по Windows Phone 7 в Северной Америке, обучая десятки разработчиков по всей Канаде в офисах Microsoft летом 2010 года с использованием реальных устройств для разработчиков WP7.

Колин также является главным архитектором DreamDigital с 17-летним практическим опытом, профессиональным тренером и докладчиком, а также руководителем группы пользователей в Оттаве. Он имеет опыт в областях с богатым пользовательским интерфейсом с WPF / Silverlight, облачной разработкой с Azure и BI с SQL Server, а также с глубокими знаниями основных технологий, таких как .NET, OData, WCF, WF, LINQ и WIF. Он разработал отмеченную наградами технологию моделирования с богатым пользовательским интерфейсом, облачными учебными порталами и управляемыми рабочими процессами системами BI.   Он также создал первый сайт сообщества потокового видео с Windows Media.