универсальное приложение Windows

advertisement
Microsoft Developer Tour
Технологическая экспедиция
msdevtour.ru
Microsoft Developer Tour
Технологическая экспедиция
#msdevtour
Универсальные приложения
Windows
Дмитрий Андреев
Эксперт по стратегическим технологиям, Microsoft
Немного истории: Windows 8
Впервые объединила десктоп и планшет
Настольный
компьютер
Будущее – Windows 10
Ноутбук
Планшет
Минипланшет
Смартфон
Интернет
вещей
Путешествие к Windows 10
Вчера
Сегодня
Завтра
• Вынесение общего кода в
переносимые библиотеки
• Раздельные проекты с
максимумом общего кода
и интеграцией магазинов
• Общий магазин
• Единые приложения для
всех форм-факторов
Как быть с UX?
Каждый раз когда вы делаете приложение
с таким интерфейсом – страдает котёнок!
Забота о пользователе!
Универсальные приложения
СЕГОДНЯ
Чем универсальные
приложения не являются
•
•
•
•
Общая платформа для разработки
приложений на смартфоне, планшете и
ПК - WinRT
Унификация API:
•
В 8.0 - ~30% общих API
•
В 8.1 - 90%+
•
Унифицированы контракты:
Launch; Share; CachedFileUpdater; FilePicker
•
Различающиеся API как правило специфичны
для конкретного форм-фактора
(SMS/звонки; Direct Access)
80% одинаковый XAML
Оптимизированные
Общие
Button
ToggleSwitch
CheckBox
Slider
RadioButton
ProgressBar
20% разница
Визуально разные
DatePicker
TimePicker
CommandBar
AppBar
Hub, Pivot
ListView, GridView
DEMO
Как учитывать различия между платформами
 Условная компиляция (#if)
 Общий класс в общем проекте с условными директивами
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.BackPressed +=
this.HardwareButtons_BackPressed;
#endif
 Наследование
 Базовый класс/интерфейс в общем проекте и наследники в
платформеннозависимых проектах
 Partial Classes
Partial Classes
/// <summary>
/// DataSource.cs
/// </summary>
public partial class DataSource :IDataSource {
public async Task<IEnumerable<IFolder>> RetrieveFolders(IFolder root) {
... // other logic
var folders = await LoadFolders(root);
... // other logic
return folders
}
}
/// <summary>
/// DataSource.WP.cs
/// </summary>
public partial class DataSource {
private async Task<IEnumerable<IFolder>> LoadFolders(IFolder root) {
...
}
}
Разделение XAML-компонентов
Пользовательские элементы
управления
Полностью XAML-страницы
Visual State Manager для изменения
размещения
#if WINDOWS_APP
var result = VisualStateManager.GoToState(this, "Windows", false);
#elif WINDOWS_PHONE_APP
var result = VisualStateManager.GoToState(this, "WindowsPhone", false);
#endif
Вынесение параметров в платформеннозависимые стилевые файлы
Роуминг данных
Данные синхронизируются периодически в
зависимости от состояния
(неактивность, батарея,
наличие сети и т.д.)
Roaming
Local
Temp
WP 8.1 App – PFN 12345
PFN 12345
Roaming
folder
Другие клиенты получают
уведомления через
Notification Service или
событие
Roaming
settings
До 100 кб данных на приложение хранится
в OneDrive пользователя (не включено в
квоту)
Нужно больше? Используем Live SDK
Стандартные API для записи/чтения
файлов и настроек.
Temp
Local
Roaming
Windows App – PFN 12345
Что делать с Windows Phone?
Приложения Windows Phone
Обновите до Silverlight
Phone 8.1 для доступа к
новым фичам
Мигрируйте на универсальное
приложение Windows для
использования новых фич и
типов устройств
Windows 8
XAML+C#/VB
Windows Phone
XAML+C#/VB
iOS
Android
Objective C
Java
Xamarin / Mono
Universal App
HTML5 + JS (Apache Cordova)
C++ / DirectX
MonoGame / XNA
Unity
OS X /
Linux
*
Web
HTML
Developer Preview
© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of
Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
©2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or
trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this
presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee
the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN
THIS PRESENTATION.
Download