Переход с Windows Phone Silverlight на UWP

Если вы — разработчик с приложением Windows Phone Silverlight, вы можете использовать свои навыки и исходный код при переходе на Windows 10. В Windows 10 вы можете создать приложение UWP для Windows, включающее один пакет приложения, который покупатели могут установить на любое устройство. Дополнительную информацию о Windows 10, приложениях UWP и концепциях адаптивного кода и интерфейса, о которых мы будем говорить в этом руководстве по переносу, см. в разделе Руководство по приложениям UWP.

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

Если вы захотите, версия вашего приложения Windows Phone Silverlight и его версия в Windows 10 могут быть доступны для пользователей одновременно.

Примечание Это руководство поможет вручную перенести приложение Silverlight Windows Phone в Windows 10. Помимо использования сведений, изложенных в этом руководстве, по переносу приложения, можете попробовать воспользоваться предварительной версией для разработчиков моста Silverlight платформы Mobilize.NET , чтобы автоматизировать процесс переноса. Это средство анализирует исходный код приложения и преобразует ссылки на элементы управления Windows Phone Silverlight и их API для аналогов UWP. Поскольку это средство все еще находится на стадии предварительной версии для разработчиков, оно еще не обрабатывает все сценарии преобразования. Однако большинству разработчиков удастся сэкономить немного времени и усилий, приступив к работе с использованием этого средства. Чтобы испробовать эту предварительную версию для разработчиков, посетите веб-сайт Mobilize.NET.

XAML и .NET или HTML?

Windows Phone Silverlight имеет платформу пользовательского интерфейса XAML на основе Silverlight 4.0, и вы программируются на основе версии платформа .NET Framework и небольшого подмножества среда выполнения Windows API. Так как вы использовали язык XAML в приложении Windows Phone Silverlight, вероятно, вы выберете XAML для версии Windows 10, так как вы сможете использовать большую часть знаний и опыта. Это же касается большей части вашего исходного кода и используемых шаблонов программного обеспечения. Даже ваша разметка и дизайн пользовательского интерфейса с легкостью могут быть перенесены. Вы увидите, что управляемые API, разметка XAML, инфраструктура пользовательского интерфейса и инструменты крайне знакомы, и вы можете использовать использовать C++, C# или Visual Basic наряду с XAML в приложении UWP. Вы можете удивиться тому, насколько это относительно легкий процесс, даже если во время его реализации возникнет одна или две сложные задачи.

Дополнительные сведения см. в разделе Схема создания приложений UWP с помощью C# или Visual Basic.

Примечание Windows 10 поддерживает гораздо больше платформа .NET Framework, чем приложение Windows Phone Store. Например, в Windows 10 есть несколько пространств имен System.ServiceModel.*, а также System.Net, System.Net.NetworkInformation и System.Net.Sockets. Таким образом, теперь самое время перенести Windows Phone Silverlight и просто скомпилировать код .NET и работать на новой платформе. См. раздел Сопоставление пространства имен и класса. Еще одна причина перекомпилировать существующий исходный код .NET в приложение для Windows 10 состоит в том, что вы сможете максимально воспользоваться .NET Native. Это передовая технология компиляции, которая преобразует язык MSIL во встроенный готовый к запуску машинный код. Приложения .NET Native запускаются быстрее, используют меньше памяти и меньше заряда батареи, чем аналоги MSIL.

В этом руководстве по переносу основное внимание уделяется XAML, но вы также можете создать функционально эквивалентное приложение, вызывающее многие из среда выполнения Windows API, с помощью JavaScript, каскадных таблиц стилей (CSS) и HTML5 вместе с библиотекой Windows для JavaScript. Хотя инфраструктуры пользовательского интерфейса XAML среды выполнения Windows и HTML отличаются друг от друга, какую бы вы ни выбрали, она будет работать повсеместно на всем диапазоне устройств Windows.

Нацеливание семейства универсальных или мобильных устройств

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

Адаптация приложения для нескольких форм-факторов

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

Поуровневый перенос

  • Просмотр. Представление (вместе с моделью представления) составляет пользовательский интерфейс вашего приложения. В идеале представление состоит из разметки, привязанной к наблюдаемым свойствам модели представления. Другой шаблон (общий и удобный, но только в краткосрочной перспективе) предназначен для императивного кода в файле кода программной части для непосредственного управления элементами пользовательского интерфейса. В любом случае, большую часть вашей разметки, оформления пользовательского интерфейса и даже императивного кода, который управляет элементами пользовательского интерфейса, будет легко перенести.
  • Модели представления и модели данных. Даже если вы формально не используете шаблоны разделения задач (типа MVVM), в вашем приложении неизбежно присутствует код, который выполняет функцию модели представления и модели данных. Код модели представления использует типы в пространствах имен инфраструктуры пользовательского интерфейса. Код модели представления и код модели данных также используют операционную систему без визуального представления и API .NET (включая API для доступа к данным). И подавляющее их большинство доступно для приложения UWP, поэтому вы можете рассчитывать на то, что большая часть этого кода может быть перенесена без изменений. Однако помните: модель представления является моделью или абстракцией представления. Модель представления предоставляет состояние и поведение пользовательского интерфейса, а само представление предоставляет визуальные элементы. По этой причине любой пользовательский интерфейс, который вы адаптируете к различным устройствам, на которых UWP позволяет его запускать, скорее всего потребует соответствующего изменения модели представления. Для сетевых подключений и вызовов облачных служб обычно можно использовать .NET или СРЕДА ВЫПОЛНЕНИЯ WINDOWS API. Факторы, влияющие на принятие решения, описаны в разделе Облачные службы, сеть и базы данных.
  • Облачные службы. Вполне возможно, что некоторая часть вашего приложения (а может и большая его часть) выполняется в облаке в форме служб. Часть приложения, запущенная на клиентском устройстве, подключается к ним. Это часть распределенного приложения, скорее всего, останется неизменной при переносе клиентской части. Если у вас ее еще нет, удобным вариантом облачных служб для вашего приложения UWP являются Мобильные службы Microsoft Azure, предоставляющие мощные серверные компоненты, которые ваши универсальные приложения для Windows могут вызывать для служб, начиная с простых уведомлений для обновления живых плиток и до требующего больших усилий масштабирования, которое может предоставить ферма серверов.

Перед переносом или в процессе переноса подумайте, можно ли улучшить ваше приложение с помощью оптимизации таким образом, чтобы код с похожей целью собирался вместе в уровни, а не был разбросан произвольно. Разложение вашего приложения UWP по уровням, как описано выше, поможет вам сделать приложение более правильным, проверить его, а затем читать и поддерживать его. Вы можете сделать возможности более доступными для многократного использования и избежать некоторых проблем различий в API пользовательского интерфейса между платформами, используя шаблон Model-View-ViewModel (MVVM). Этот шаблон хранит части данных, пользовательского интерфейса и бизнес-части вашего приложения отдельно друг от друга. Даже в пользовательском интерфейсе он может хранить состояние и поведение отдельно друг от друга, и отдельно визуальные и доступные для тестирования элементы. Благодаря MVVM, однажды определив логику данных и бизнес-логику, вы сможете использовать ее на всех устройствах вне зависимости от пользовательского интерфейса. Вероятно, вы сможете также в значительной степени использовать ту же самую модель представления и его части на различных устройствах.

Одно или два исключения из правила

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

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

Функция, для которой нет эквивалента UWP Документация Windows Phone Silverlight по функции
Microsoft XNA. В общем его заменой является Microsoft DirectX, использующий C++. См. разделы Разработка игр и Взаимодействие DirectX и XAML. Библиотека классов XNA Framework
Приложения-объективы Объективы для Windows Phone 8

 

Раздел Описание
Сопоставление пространства имен и класса В этом разделе подробно описывается сопоставление API Windows Phone Silverlight с их аналогами в UWP.
Перенос проекта Начните процесс переноса с создания нового проекта Windows 10 в Visual Studio и скопируйте в него свои файлы.
Устранение неполадок Мы настоятельно рекомендуем прочитать до конца это руководство по переносу, но мы также понимаем, что вы жаждете двигаться вперед и добраться до этапа, на котором выполняется построение и запуск вашего проекта. До этого момента вы можете достичь временного прогресса с помощью комментирования и создания заглушек для любого ненужного кода, а затем вернуться, чтобы уплатить этот долг позже. Таблица симптомов и средств устранения неполадок в этом разделе может быть полезна на этом этапе, хотя она не является заменой прочтению следующих нескольких разделов. Вы всегда можете обратиться к таблице по мере продвижения по последующим разделам.
Перенос XAML и пользовательского интерфейса Практика определения пользовательского интерфейса в форме декларативной разметки XAML очень хорошо преобразуется из приложений Windows Phone Silverlight в приложения UWP. Вы увидите, что после обновления ключевых ссылок на системный ресурс, изменения некоторых имен типов элементов и изменения clr-namespace на using большие участки вашей разметки стали совместимы.
Перенос для ввода-вывода, устройств и моделей приложений Код, интегрирующийся с устройством и его датчиками, включает ввод от пользователя и вывод к нему. Он может также включать обработку данных. Но в целом этот код не считается уровнем пользовательского интерфейса или уровнем данных. Этот код включает интеграцию с контроллером вибрации, акселерометром, гироскопом, микрофоном и динамиками (которые могут пересекаться с распознаванием речи и синтезом), (географическим) положением и модальностями ввода, такими как сенсорный ввод, мышь, клавиатура и перо.
Перенос уровней бизнеса и данных За вашим пользовательским интерфейсом расположены уровни бизнеса и данных. Код в этих уровнях вызывает операционную систему и API .NET Framework (например, фоновую обработку, местонахождение, камеру, файловую систему, сети и другой доступ к данным). Подавляющее их большинство доступно для приложения UWP, поэтому вы можете рассчитывать на то, что большая часть этого кода может быть перенесена без изменений.
Перенос для форм-фактора и взаимодействия с пользователем В приложениях для Windows используется общий вид и стиль на всех компьютерах, мобильных устройствах и множестве других устройств. Пользовательский интерфейс, ввод и шаблоны взаимодействия очень похожи, и пользователь, использующий приложения на разных устройствах, оценит это.
Пример: Bookstore1 Этот раздел представляет практический пример переноса очень простого приложения Windows Phone Silverlight в приложение Windows 10 UWP. На Windows 10 можно создавать единый пакет приложения, который покупатели могут установить на широкий спектр устройств. Именно этим мы и займемся в этом примере.
Пример: Bookstore2 Этот пример, в котором используются данные из примера Bookstore1, начинается с приложения Windows Phone Silverlight, отображающего сгруппированные данные в классе LongListSelector. В модели представления каждый экземпляр класса Author представляет группу книг одного автора, а в классе LongListSelector мы можем просмотреть список книг, сгруппированных по автору, или уменьшить представление, чтобы просмотреть список переходов по авторам.

Документация

Статьи в журналах

Презентации

  • История переноса музыки Nokia из Windows Phone в Windows 8