Перенос уровней бизнеса и данных c Windows Phone Silverlight на UWP
Предыдущий раздел назывался Перенос для ввода-вывода, устройств и моделей приложений.
За вашим пользовательским интерфейсом расположены уровни бизнеса и данных. Код в этих уровнях вызывает операционную систему и API .NET Framework (например, фоновую обработку, местонахождение, камеру, файловую систему, сети и другой доступ к данным). Подавляющее их большинство доступно для приложения UWP, поэтому вы можете рассчитывать на то, что большая часть этого кода может быть перенесена без изменений.
Асинхронные методы
Один из приоритетов UWP — обеспечение возможности выполнять построение приложений, которые действительно и последовательно реагируют на действия пользователя. Анимации всегда выполняются плавно, а сенсорное взаимодействие (например, панорамирование и прокрутка) является мгновенным и выполняется без задержек, создавая впечатление, что пользовательский интерфейс соединен с вашим пальцем. Чтобы достичь этого, любой API-интерфейс UWP, который не может гарантировать завершение в пределах 50 мс, был реализован асинхронным, а к его имени добавлен суффикс Async. Ваш поток пользовательского интерфейса немедленно возвращается из вызова метода Async и работа происходит в другом потоке. Использование метода Async синтаксически очень простое: используются оператор C# await, объекты Promise JavaScript и продолжения C++. Дополнительные сведения см. в разделе Асинхронное программирование.
Фоновая обработка
Приложение Windows Phone Silverlight может использовать управляемый объект ScheduledTaskAgent для выполнения задачи, в то время как приложение не находится на переднем плане. Приложение UWP использует класс BackgroundTaskBuilder для создания и регистрации фоновой задачи подобным образом. Вы определяете класс, реализующий работу фоновой задачи. Система выполняет фоновую задачу, периодически вызывая метод Run вашего класса для выполнения работы. Не забудьте в приложении UWP установить объявление Фоновые задачи в манифесте пакета приложения. Дополнительные сведения см. в разделе Поддержка приложения с помощью фоновых задач.
Для передачи больших файлов данных в фоновом режиме приложение Windows Phone Silverlight использует класс BackgroundTransferService. В приложении UWP для этого используются API-интерфейсы в пространстве имен Windows.Networking.BackgroundTransfer. Данные функции используют аналогичный шаблон начала передачи данных, но новый API обладает улучшенными возможностями и производительностью. Дополнительные сведения см. в разделе Передача данных в фоновом режиме.
Приложение Windows Phone Silverlight использует управляемые классы в пространстве имен Microsoft.Phone.BackgroundAudio для воспроизведения звука, когда приложение не находится на переднем плане. UWP использует модель приложения Магазина Windows Phone. См. раздел Фоновый звук и пример Фоновый звук.
Облачные службы, сеть и и базы данных
Размещение данных и служб приложений в облаке возможны с помощью Azure. См. раздел Начало работы с мобильными службами. Решения, которым требуются сетевые и автономные данные, описаны в разделе Использование синхронизации автономных данных в мобильных службах.
UWP частично поддерживает класс System.Net.HttpWebRequest, но класс System.Net.WebClient не поддерживается. Рекомендуемая дальновидная альтернатива — класс Windows.Web.Http.HttpClient (или System.Net.Http.HttpClient, если необходимо, чтобы код можно было переносить на другие платформы, поддерживающие .NET). Эти API-интерфейсы используют System.Net.Http.HttpRequestMessage для представления запроса HTTP.
Приложения UWP на данный момент не имеют встроенной поддержки обработки больших объемов данных, которая, в частности, требуется в бизнес-приложениях. Однако вы можете настроить использование SQLite для локальных операционных служб баз данных. Подробнее см. в разделе SQLite.
Передайте абсолютные URI, а не относительные URI, типам среды выполнения Windows. См. раздел Передача URI в среду выполнения Windows.
Средства запуска и выбора
С помощью средств запуска и выбора (расположенных в пространстве имен Microsoft.Phone.Tasks) приложение Windows Phone Silverlight может взаимодействовать с операционной системой для выполнения общих операций, таких как составление почты, выбор фотографии или предоставление некоторых типов данных другому приложению. Ищите информацию о Microsoft.Phone.Tasks в разделе Сопоставление Windows Phone Silverlight с пространствами имен и классами Windows 10, чтобы найти эквивалент данного типа UWP. Они варьируются от подобных механизмов, называемых средствами запуска и выбора, до реализации контракта для совместного использования данных между приложениями.
Приложение Windows Phone Silverlight можно поместить в неактивное состояние или даже полностью удалить при использовании, например, задание средства выбора фотографий. Приложение UWP остается активным и продолжает работу во время использования класса FileOpenPicker.
Получение дохода (пробный режим и покупки из приложения)
Приложение Windows Phone Silverlight может использовать класс UWP CurrentApp для большей части пробного режима и функций покупки из приложения, чтобы не переносить код. Но приложение Windows Phone Silverlight вызывает MarketplaceDetailTask.Show, чтобы предложить купить это приложение.
private void Buy()
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
marketplaceDetailTask.Show();
}
Порт этого кода для вызова метода UWP RequestAppPurchaseAsync :
private async void Buy()
{
await Windows.ApplicationModel.Store.CurrentApp.RequestAppPurchaseAsync(false);
}
Если у вас есть код, который имитирует покупку вашего приложения и возможности покупки из приложения для тестирования, то вы можете перенести его, чтобы он вместо этого использовал класс CurrentAppSimulator.
Уведомления для обновления плиток или всплывающих уведомлений
Уведомления — это расширение модели push-уведомлений для приложений Windows Phone Silverlight. При получении уведомления из службы push-уведомлений Windows (WNS) можно отобразить эти сведения на поверхности пользовательского интерфейса с помощью обновления плитки или всплывающего уведомления. Для получения дополнительных сведений о переносе стороны пользовательского интерфейса ваших функций уведомлений см. разделы Плитки и всплывающие уведомления.
Дополнительные сведения об использовании уведомлений в приложениях UWP см. в статье Отправка всплывающих уведомлений.
Дополнительные сведения и учебники по использованию плиток, всплывающих уведомлений, индикаторов событий, баннеров и уведомлений в приложениях среды выполнения Windows на C++, C# или Visual Basic см. в статье Работа с плитками, индикаторами событий и всплывающими уведомлениями.
Хранилище (доступ к файловой системе)
Код Windows Phone Silverlight, который хранит параметры приложения в виде пар "ключ-значение" в изолированном хранилище легко переносится. Ниже приведен пример до и после, сначала показана версия Windows Phone Silverlight.
var propertySet = IsolatedStorageSettings.ApplicationSettings;
const string key = "favoriteAuthor";
propertySet[key] = "Charles Dickens";
propertySet.Save();
string myFavoriteAuthor = propertySet.Contains(key) ? (string)propertySet[key] : "<none>";
И эквивалент UWP:
var propertySet = Windows.Storage.ApplicationData.Current.LocalSettings.Values;
const string key = "favoriteAuthor";
propertySet[key] = "Charles Dickens";
string myFavoriteAuthor = propertySet.ContainsKey(key) ? (string)propertySet[key] : "<none>";
Хотя часть пространства имен Windows.Storage им доступна, многие приложения Windows Phone Silverlight выполняют вводы-выводы файла с помощью класса IsolatedStorageFile, потому что он поддерживается на протяжении большего количества времени. Ниже приведен пример написания и чтения файла до и после с условием, что используется IsolatedStorageFile. Сначала показана версия Windows Phone Silverlight.
const string filename = "FavoriteAuthor.txt";
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var streamWriter = new StreamWriter(store.CreateFile(filename)))
{
streamWriter.Write("Charles Dickens");
}
using (var StreamReader = new StreamReader(store.OpenFile(filename, FileMode.Open, FileAccess.Read)))
{
string myFavoriteAuthor = StreamReader.ReadToEnd();
}
}
И та же функция с помощью UWP.
const string filename = "FavoriteAuthor.txt";
var store = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await store.CreateFileAsync(filename, Windows.Storage.CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(file, "Charles Dickens");
file = await store.GetFileAsync(filename);
string myFavoriteAuthor = await Windows.Storage.FileIO.ReadTextAsync(file);
Приложение Windows Phone Silverlight имеет доступ к дополнительной SD-карте только для чтения. Приложение UWP имеет доступ к SD-карте для чтения и записи. Дополнительные сведения см. в разделе Доступ к SD-карте.
Сведения о доступе к файлам фотографий, музыки и видео в приложении UWP см. в разделе Файлы и папки в библиотеках музыки, изображений и видео.
Дополнительную информацию см. в разделе Файлы, папки и библиотеки.
Следующий раздел называется Перенос для форм-фактора и взаимодействия с пользователем.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по