Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Некоторая информация относится к предварительной версии продукта, в которую к моменту выпуска официальной версии могут быть внесены значительные изменения. Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.]
Если вы — разработчик с приложением Windows Phone Silverlight, вы можете использовать свои навыки и свой исходный код при переходе к Windows 10. В Windows 10 вы можете создать приложение UWP для Windows, включающее один пакет приложения, который покупатели могут установить на любое устройство. См. раздел Руководство по приложениям UWP, чтобы получить информацию о Windows 10, приложениях UWP и концепциях адаптивного кода и интерфейса, о которых мы будем говорить в этом руководстве по портированию.
При переносе приложения Windows Phone Silverlight в приложение для Windows 10 вы сможете воспользоваться мобильными функциями, добавленными в Windows Phone 8.1. Вы сможете пойти еще дальше, чтобы использовать UWP, модель приложений и инфраструктура пользовательского интерфейса которой являются универсальными для всех устройств под управлением Windows 10. Это делает возможным поддержку компьютеров, планшетов, телефонов и многих других типов устройств из одной базы кодов и с помощью одного пакета приложения. И это умножает потенциальную аудиторию вашего приложения и создает новые возможности с общими данными, купленными товарами и т. д. Подробнее о новых компонентах см. в разделе Новые возможности для разработчиков в Windows 10.
Если вы захотите, версия вашего приложения Windows Phone Silverlight и его версия в Windows 10 могут быть доступны для пользователей одновременно.
XAML и .NET или HTML?
Windows Phone Silverlight имеет платформу пользовательского интерфейса XAML на базе Silverlight 4.0 и вы программируете с помощью версии .NET Framework и небольшого подмножества API UWP. Так как вы использовали язык 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. Например, 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. Кроме того, вы можете создать приложение с эквивалентными функциями—,вызывая много таких же API UWP—на JavaScript, CSS (CSS) и HTML5 вместе с библиотекой Windows для JavaScript. Хотя платформы пользовательского интерфейса XAML среды выполнения Windows и HTML отличаются друг от друга, какую бы вы ни выбрали, она будет работать повсеместно на всем диапазоне устройств Windows.
Нацеливание семейства универсальных или мобильных устройств
Один из доступных вариантов — это перенос приложения в приложение, которое будет ориентировано на семейство универсальных устройств. В этом случае приложение можно установить на самый широкий спектр устройств. Если ваше приложение будет вызывать API, реализуемые только на мобильных устройствах, вы сможете обрабатывать эти вызовы с помощью адаптивного кода. Кроме того, вы можете выбрать перенос приложения в приложение, которое будет ориентировано на семейство мобильных устройств. В этом случае вам не нужно создавать адаптивный код.
Адаптация приложения для нескольких форм-факторов
Вариант, выбранный вами в предыдущем разделе, определит спектр устройств, на которых будет работать ваше приложение, и этот спектр может быть очень широк. Даже если вы ограничитесь поддержкой мобильных устройств, вам по-прежнему придется иметь дело с широким диапазоном размеров экрана. Поэтому если приложение будет работать на устройствах тех форм-факторов, которые оно раньше не поддерживало, протестируйте на них пользовательский интерфейс и внесите необходимые изменения, чтобы последний мог адаптироваться к каждому из форм-факторов соответствующим образом. Это можно представить как задачу после переноса. Ряд практических примеров представлен в примере описания приложений Bookstore2.
Поуровневый перенос
- Представление. Представление (вместе с моделью представления) составляет пользовательский интерфейс вашего приложения. В идеале представление состоит из разметки, привязанной к наблюдаемым свойствам модели представления. Другой шаблон (общий и удобный, но только в краткосрочной перспективе) предназначен для императивного кода в файле кода программной части для непосредственного управления элементами пользовательского интерфейса. В любом случае, большую часть вашей разметки и оформления пользовательского интерфейса—и даже императивного кода, который управляет элементами пользовательского интерфейса—будет легко перенести.
- Модели представления и модели данных. Даже если вы формально не используете шаблоны разделения задач (типа MVVM), в вашем приложении неизбежно присутствует код, который выполняет функцию модели представления и модели данных. Код модели представления использует типы в пространствах имен инфраструктуры пользовательского интерфейса. Код модели представления и код модели данных также используют операционную систему без визуального представления и API .NET (включая API для доступа к данным). И подавляющее их большинство доступно для приложения UWP, поэтому вы можете рассчитывать на то, что большая часть этого кода может быть перенесена без изменений. Однако помните: модель представления является моделью или абстракцией представления. Модель представления предоставляет состояние и поведение пользовательского интерфейса, а само представление предоставляет визуальные элементы. По этой причине любой пользовательский интерфейс, который вы адаптируете к различным устройствам, на которых UWP позволяет его запускать, скорее всего потребует соответствующего изменения модели представления. Для сетевых и облачных служб вызова обычно предусмотрен вариант между использованием API .NET или UWP. Факторы, влияющие на принятие решения, описаны в разделе Облачные службы, сеть и базы данных.
- Облачные службы. Вполне возможно, что некоторая часть вашего приложения (а может и большая его часть) выполняется в облаке в форме служб. Часть приложения, запущенная на клиентском устройстве, подключается к ним. Это часть распределенного приложения, скорее всего, останется неизменной при переносе клиентской части. Если у вас ее еще нет, удобным вариантом облачных служб для вашего приложения 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 очень хорошо преобразуется из Windows Phone Silverlight в приложения универсальной платформы Windows (UWP). Вы увидите, что после обновления ключевых ссылок на системный ресурс, изменения некоторых имен типов элементов и изменения "clr-namespace" на "using" большие участки вашей разметки стали совместимы. |
|
Код, интегрирующийся с устройством и его датчиками, включает ввод от пользователя и вывод к нему. Он может также включать обработку данных. Но в целом этот код не считается уровнем пользовательского интерфейса или уровнем данных. Этот код включает интеграцию с контроллером вибрации, акселерометром, гироскопом, микрофоном и динамиками (которые могут пересекаться с распознаванием речи и синтезом), (географическим) положением и модальностями ввода, такими как сенсорный ввод, мышь, клавиатура и перо. |
|
За вашим пользовательским интерфейсом расположены уровни бизнеса и данных. Код в этих уровнях вызывает операционную систему и API .NET Framework (например, фоновую обработку, местонахождение, камеру, файловую систему, сети и другой доступ к данным). Подавляющее их большинство доступно для приложения UWP, поэтому вы можете рассчитывать на то, что большая часть этого кода может быть перенесена без изменений. |
|
В приложениях Windows используется общий вид и стиль на всех компьютерах, мобильных устройствах и множестве других устройств. Пользовательский интерфейс, ввод и шаблоны взаимодействия очень похожи, и пользователь, использующий приложения на разных устройствах, оценит это. |
|
Этот раздел представляет практический пример переноса очень простого приложения Windows Phone Silverlight в приложение Windows 10 UWP. На Windows 10 можно создавать единый пакет приложения, который покупатели могут установить на широкий спектр устройств. Именно этим мы и займемся в этом примере. |
|
Этот пример—, в котором используются данные из примера Bookstore1—, начинается с приложения Windows Phone Silverlight, отображающего сгруппированные данные в классеLongListSelector. В модели представления каждый экземпляр класса Author представляет группу книг одного автора, а в классе LongListSelector мы можем просмотреть список книг, сгруппированных по автору, или уменьшить представление, чтобы просмотреть список переходов по авторам. |
Связанные разделы
Документация
Новые возможности для разработчиков в Windows 10
Руководство по работе с приложениями UWP
Схема создания приложений UWP на C# или Visual Basic
Дальнейшие действия для разработчиков Windows Phone 8
Статьи в журналах
Статья в Visual Studio Magazine о Windows Phone 8.1 и ее гигантском шаге на пути к конвергенции
Презентации