Поделиться через


Переход из Windows Phone Silverlight в UWP

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

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

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

Обратите внимание , что это руководство поможет вам перенести приложение Windows Phone Silverlight в Windows 10 вручную. Помимо использования сведений , приведенных в этом руководстве для переноса приложения, вы можете попробовать предварительную версию моста Silverlight в Мобилизуемой платформе Для автоматизации процесса переноса. Это средство анализирует исходный код приложения и преобразует ссылки на элементы управления и API Windows Phone Silverlight в их коллеги 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. Вы можете быть удивлены тем, как относительно простой процесс, даже если есть проблема или два на пути.

См. схему универсальная платформа Windows приложений 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 в приложение Для Windows 10 заключается в том, что вы получите выгоду от .NET Native, которая выполняется перед временем компиляции, которая преобразует MSIL в машинный код с возможностью запуска в собственном коде. Собственные приложения .NET запускают быстрее, используют меньше памяти и используют меньше батареи, чем их коллеги MSIL.

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

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

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

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

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

Приближение к переносу по слоям

  • Представление. Представление (вместе с моделью представления) составляет пользовательский интерфейс приложения. В идеале представление состоит из разметки, привязанной к наблюдаемым свойствам модели представления. Другой шаблон (распространенный и удобный, но только в краткосрочной перспективе) предназначен для императивного кода в файле программной части для непосредственного управления элементами пользовательского интерфейса. В любом случае большая часть разметки и дизайна пользовательского интерфейса , а также императивный код, который управляет элементами пользовательского интерфейса, будет простым для порта.
  • Просмотр моделей и моделей данных. Даже если вы официально не принимаете шаблоны разделения проблем (например, MVVM), в приложении неизбежно присутствует код, который выполняет функцию модели представления и модели данных. Код модели представления использует типы в пространствах имен платформы пользовательского интерфейса. В коде модели представления и модели данных также используются невизуальная операционная система и API .NET (включая API для доступа к данным). И подавляющее большинство из них доступны приложению UWP, поэтому вы можете перенести большую часть этого кода без изменений. Помните, однако: модель представления — это модель или абстракция представления. Модель представления предоставляет состояние и поведение пользовательского интерфейса, а само представление предоставляет визуальные элементы. По этой причине любой пользовательский интерфейс, адаптированный к различным форм-факторам, на которые UWP позволяет выполняться, скорее всего, потребуются соответствующие изменения модели представления. Для сетевых и вызовов облачных служб обычно можно использовать API .NET или среда выполнения Windows. Факторы, участвующие в принятии этого решения, см. в разделе Облачные службы, сети и базы данных.
  • Облачные службы. Скорее всего, некоторые из приложений (возможно, это большая часть) выполняются в облаке в виде служб. Часть приложения, запущенного на клиентском устройстве, подключается к этим устройствам. Это часть распределенного приложения, скорее всего, остается неизменной при переносе клиентской части. Если у вас еще нет, хороший вариант облачных служб для вашего приложения 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
Приложения Lens Объективы для 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 в приложение UWP для Windows 10. В Windows 10 вы можете создать один пакет приложения, который клиенты могут установить на широкий спектр устройств, и это то, что мы будем делать в этом примере.
Пример: Bookstore2 В этом примере, которое основывается на информации, указанной в Bookstore1, начинается с приложения Windows Phone Silverlight, отображающего сгруппированные данные в LongListSelector. В модели представления каждый экземпляр класса Author представляет группу книг, написанных этим автором, и в LongListSelector мы можем просмотреть список книг, сгруппированных по автору, или уменьшить, чтобы просмотреть список авторов.

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

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

Презентации

  • История приведения Nokia Music из Windows Phone в Windows Phone в Windows 8