Перенос бизнес-слоев Windows Phone Silverlight и уровней данных в UWP
В предыдущем разделе было перенос для модели ввода-вывода, устройства и приложения.
За пользовательским интерфейсом находятся бизнес-слои и уровни данных. Код в этих уровнях вызывает интерфейсы API операционной системы и платформа .NET Framework (например, фоновая обработка, расположение, камера, файловая система, сеть и другие доступ к данным). Подавляющее большинство из них доступны для приложения универсальная платформа Windows (UWP), поэтому вы можете ожидать, что вы сможете перенести большую часть этого кода без изменений.
Асинхронные методы
Одним из приоритетов универсальная платформа Windows (UWP) является создание приложений, которые действительно и согласованно реагируют. Анимации всегда гладки, и сенсорные взаимодействия, такие как сдвиг и прокрутка, мгновенно и свободно от задержки, что делает его похоже, что пользовательский интерфейс приклеен к пальцу. Для этого любой API UWP, который не может гарантировать выполнение в пределах 50 мс, был выполнен асинхронный и его имя суффиксировано с помощью Async. Поток пользовательского интерфейса возвращается немедленно от вызова асинхронного метода, и работа будет выполняться в другом потоке. Использование асинхронного метода выполняется очень просто, синтаксически с помощью оператора ожидания C#, объектов обещаний 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.HttpClient (или System.Net.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 см . в библиотеках "Файлы и видео" в библиотеках "Музыка", "Рисунки" и "Видео".
Дополнительные сведения см. в разделе "Файлы", "Папки" и "Библиотеки".
Следующий раздел — перенос для форм-фактора и пользовательского интерфейса.