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.