WINDOWS RUNTIME



              СЕРГЕЙ ЗВЯГИН
             INGATE DEVELOPMENT
        СПЕЦИАЛЬНО ДЛЯ GetDev.NET
О ЧЕМ ПОГОВОРИМ?


Что такое WinRT?
 Особенности Metro-приложений
 Архитектура Windows Runtime
C#, C++ и Javascript
 Требования к компонентам
 Какой язык выбрать?
WinRT и Silverlight/WPF
 Портирование приложений
НАВЕДЕМ ПОРЯДОК В
ТЕРМИНОЛОГИИ
ТЕРМИНОЛОГИЯ


Windows RT
 Специальная версия Windows 8 для
 планшетов с процессором ARM (ранее WOA,
 Windows on ARM)
WinRT
 новая программная оболочка Windows 8 для
 Metro-приложений (Windows Runtime)
ОСОБЕННОСТИ METRO-
ПРИЛОЖЕНИЙ
ЖИЗНЕННЫЙ ЦИКЛ


Последнее запущенное приложение
находится в статусе Active
Свернутое приложение находится в
статусе Suspended
 Есть событие сворачивания, его можно
 обработать
Свернутое приложение может быть
завершено при нехватке ресурсов
 Нет события завершения, его нельзя
 обработать
ВОЗМОЖНОСТИ НЕАКТИВНЫХ
ПРИЛОЖЕНИЙ

Несколько режимов вывода информации в
плитках на стартовом экране
 Обычные плитки-иконки: Square (1x1) или
 Wide (2x1)
 Живые плитки (Live tiles)
 Значки на плитках
Информирование пользователя о событиях в
«свернутом» приложении с помощью
нотификаций
Background Tasks
ЗАПУСК ПРИЛОЖЕНИЯ
Плитка -> Стартовый экран -> Приложение (App UI)
                              XAML/HTML UI начинается здесь
КОНТРОЛЫ
Button                                             Grid View
                               Progress Ring

Checkbox      Radio Button


Combo Box        Password


Context Menu Web View
                                               List View                   Semantic Zoom




Flip View                    List Box


                                                                              Slider

                                                Progress Bar
                                                                                             Toggle Switch
                                                               Spell Checking Clear Button
                                                    Text Box
Scroll Bar
АРХИТЕКТУРА WINDOWS
RUNTIME
АРХИТЕКТУРА WINDOWS 8
ЧТО ТАКОЕ WinRT?


Это основа для создания Metro-
приложений в Windows 8
Предоставляет возможность выбора
языка и среды разработки
Одинаково прозрачная работа с Windows
API вне зависимости от выбора языка
ЯЗЫКИ ПРОГРАММИРОВАНИЯ И
РАЗМЕТКИ

Языки программирования
 C#
 Visual Basic
 C++
 Javascript
Языки разметки
 XAML
 HTML
АРХИТЕКТУРА WinRT
ПЛЮШКИ


Вызовы WinRT выглядят прозрачно
Большая часть того, чем мы пользуемся в
.NET, есть и в WinRT
Особенности реализации WinRT скрыты
от разработчиков
АСИНХРОННОСТЬ


Все методы API, выполняемые более
50мс, асинхронны
Разработчик не должен заботиться о
реализации асинхронности
 async/await в C#
 then в C++
 then в Javascript
WinRT ОСНОВАН НА ТЕХНОЛОГИИ COM


                      Activation
                      Store
                      (Registry)

                      Windows
       Object         vNext
                      Windows 8
                      Metadata
                      (Disk)
WINDOWS METADATA


Определение API хранится в .winmd
файлах
Метаданные представлены в формате,
описанном в стандарте ECMA-335
Синтаксис CIL, ассемблера виртуальной
машины .NET, также описан в этом
стандарте
ВЗАИМОДЕЙСТВИЕ С WinRT-ОБЪЕКТОМ




                        Projection
                                              C++ App




                        Projection
                                                 C#/VB App




                                     CLR
   Object



                        Projection
                                                 HTML App




                                     Chakra
             Windows
             Metadata
СОЗДАНИЕ WinRT-ОБЪЕКТА
ТРЕБОВАНИЯ К
КОМПОНЕНТАМ
ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ


WinRT-компоненты могут быть созданы
на С++ или C#/VB
WinRT-компоненты могут быть
использованы из C++, C#/VB, Javascript
Никакого дополнительного кода за счет
использования метаданных
Ввиду специфики проекции нельзя
использовать XAML-разметку внутри
приложения на Javascript
5 ПРОСТЫХ ПРАВИЛ

1) Правила применяются только к публичным
типам и членам компонента
2) Сигнатуры вызовов компонента должны
использовать только типы WinRT
3) Структуры должны иметь только открытые
поля
4) Наследование допускается только для
контролов XAML, остальные типы должны быть
помечены как sealed
5) Только поддерживаемые в WinRT generic-
типы должны использоваться
КАКОЙ ЯЗЫК ВЫБРАТЬ?
Проекция Javascript


Самый высокий уровень абстракции
Динамическая типизация делает
проекцию наиболее медленной из трѐх
Различные ограничения проекции
Автоматическая сборка мусора
Большинство используемых JS-библиотек
не требуют внесения изменений
Проекция .NET


Средний уровень абстракции
Накладные расходы на использование
метаданных
Полный доступ к библиотекам WinRT и
синтаксический сахар для асинхронных
вызовов
Автоматическая сборка мусора
Silverlight-компоненты требуют небольших
изменений для использования в WinRT
Проекция C++/CX


Средний уровень абстракции
Практически отсутствуют накладные
расходы
Прямые вызовы методов ядра, никаких
дополнительных оберток
Автоматический подсчет ссылок
С++ компоненты, использующие Win32
API, проще переписать с нуля, чем
адаптировать для использования в WinRT
А ГДЕ TRUE NATIVE?!
Windows Runtime C++ Template Library
(WRL)

Только для бородатых программистов
Низкий уровень абстракции
Код никак не связан с компилятором от
MS
Возможность оптимизировать COM-
взаимодействие в специфичных
сценариях
Использование опыта разработки на
«чистом» C++ c использованием Active
Template Library
ПОРТИРОВАНИЕ
ПРИЛОЖЕНИЙ
ПРИ НАПИСАНИИ
ПРИЛОЖЕНИЯ

Используйте Portable Class Library
Используйте директиву препроцессора
NETFX_CORE для написания гибридного
кода
Не используйте XNA
Следуйте пошаговым инструкциям на
MSDN 
ИНСТРУКЦИИ НА MSDN


.NET for Metro style apps overview
http://cut.ms/bzL3
Porting Silverlight or WPF XAML/code to a
Metro style app http://cut.ms/bzL4
Migrate/port a Windows Phone 7 app to
Metro style http://cut.ms/bzL5
СПАСИБО ЗА ВНИМАНИЕ!


 Твиттер
  @Bingo87
 Email
  bingofirst@gmail.com
 Xbox gamertag
  BingoRUS
 Блог
  http://dev.ingate.ru/

WinRT

  • 1.
    WINDOWS RUNTIME СЕРГЕЙ ЗВЯГИН INGATE DEVELOPMENT СПЕЦИАЛЬНО ДЛЯ GetDev.NET
  • 2.
    О ЧЕМ ПОГОВОРИМ? Чтотакое WinRT? Особенности Metro-приложений Архитектура Windows Runtime C#, C++ и Javascript Требования к компонентам Какой язык выбрать? WinRT и Silverlight/WPF Портирование приложений
  • 3.
  • 4.
    ТЕРМИНОЛОГИЯ Windows RT Специальнаяверсия Windows 8 для планшетов с процессором ARM (ранее WOA, Windows on ARM) WinRT новая программная оболочка Windows 8 для Metro-приложений (Windows Runtime)
  • 5.
  • 6.
    ЖИЗНЕННЫЙ ЦИКЛ Последнее запущенноеприложение находится в статусе Active Свернутое приложение находится в статусе Suspended Есть событие сворачивания, его можно обработать Свернутое приложение может быть завершено при нехватке ресурсов Нет события завершения, его нельзя обработать
  • 7.
    ВОЗМОЖНОСТИ НЕАКТИВНЫХ ПРИЛОЖЕНИЙ Несколько режимоввывода информации в плитках на стартовом экране Обычные плитки-иконки: Square (1x1) или Wide (2x1) Живые плитки (Live tiles) Значки на плитках Информирование пользователя о событиях в «свернутом» приложении с помощью нотификаций Background Tasks
  • 8.
    ЗАПУСК ПРИЛОЖЕНИЯ Плитка ->Стартовый экран -> Приложение (App UI) XAML/HTML UI начинается здесь
  • 9.
    КОНТРОЛЫ Button Grid View Progress Ring Checkbox Radio Button Combo Box Password Context Menu Web View List View Semantic Zoom Flip View List Box Slider Progress Bar Toggle Switch Spell Checking Clear Button Text Box Scroll Bar
  • 10.
  • 11.
  • 12.
    ЧТО ТАКОЕ WinRT? Этооснова для создания Metro- приложений в Windows 8 Предоставляет возможность выбора языка и среды разработки Одинаково прозрачная работа с Windows API вне зависимости от выбора языка
  • 13.
    ЯЗЫКИ ПРОГРАММИРОВАНИЯ И РАЗМЕТКИ Языкипрограммирования C# Visual Basic C++ Javascript Языки разметки XAML HTML
  • 14.
  • 15.
    ПЛЮШКИ Вызовы WinRT выглядятпрозрачно Большая часть того, чем мы пользуемся в .NET, есть и в WinRT Особенности реализации WinRT скрыты от разработчиков
  • 16.
    АСИНХРОННОСТЬ Все методы API,выполняемые более 50мс, асинхронны Разработчик не должен заботиться о реализации асинхронности async/await в C# then в C++ then в Javascript
  • 17.
    WinRT ОСНОВАН НАТЕХНОЛОГИИ COM Activation Store (Registry) Windows Object vNext Windows 8 Metadata (Disk)
  • 18.
    WINDOWS METADATA Определение APIхранится в .winmd файлах Метаданные представлены в формате, описанном в стандарте ECMA-335 Синтаксис CIL, ассемблера виртуальной машины .NET, также описан в этом стандарте
  • 19.
    ВЗАИМОДЕЙСТВИЕ С WinRT-ОБЪЕКТОМ Projection C++ App Projection C#/VB App CLR Object Projection HTML App Chakra Windows Metadata
  • 20.
  • 21.
  • 22.
    ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ WinRT-компоненты могутбыть созданы на С++ или C#/VB WinRT-компоненты могут быть использованы из C++, C#/VB, Javascript Никакого дополнительного кода за счет использования метаданных Ввиду специфики проекции нельзя использовать XAML-разметку внутри приложения на Javascript
  • 23.
    5 ПРОСТЫХ ПРАВИЛ 1)Правила применяются только к публичным типам и членам компонента 2) Сигнатуры вызовов компонента должны использовать только типы WinRT 3) Структуры должны иметь только открытые поля 4) Наследование допускается только для контролов XAML, остальные типы должны быть помечены как sealed 5) Только поддерживаемые в WinRT generic- типы должны использоваться
  • 24.
  • 25.
    Проекция Javascript Самый высокийуровень абстракции Динамическая типизация делает проекцию наиболее медленной из трѐх Различные ограничения проекции Автоматическая сборка мусора Большинство используемых JS-библиотек не требуют внесения изменений
  • 26.
    Проекция .NET Средний уровеньабстракции Накладные расходы на использование метаданных Полный доступ к библиотекам WinRT и синтаксический сахар для асинхронных вызовов Автоматическая сборка мусора Silverlight-компоненты требуют небольших изменений для использования в WinRT
  • 27.
    Проекция C++/CX Средний уровеньабстракции Практически отсутствуют накладные расходы Прямые вызовы методов ядра, никаких дополнительных оберток Автоматический подсчет ссылок С++ компоненты, использующие Win32 API, проще переписать с нуля, чем адаптировать для использования в WinRT
  • 28.
  • 29.
    Windows Runtime C++Template Library (WRL) Только для бородатых программистов Низкий уровень абстракции Код никак не связан с компилятором от MS Возможность оптимизировать COM- взаимодействие в специфичных сценариях Использование опыта разработки на «чистом» C++ c использованием Active Template Library
  • 30.
  • 31.
    ПРИ НАПИСАНИИ ПРИЛОЖЕНИЯ Используйте PortableClass Library Используйте директиву препроцессора NETFX_CORE для написания гибридного кода Не используйте XNA Следуйте пошаговым инструкциям на MSDN 
  • 32.
    ИНСТРУКЦИИ НА MSDN .NETfor Metro style apps overview http://cut.ms/bzL3 Porting Silverlight or WPF XAML/code to a Metro style app http://cut.ms/bzL4 Migrate/port a Windows Phone 7 app to Metro style http://cut.ms/bzL5
  • 33.
    СПАСИБО ЗА ВНИМАНИЕ! Твиттер @Bingo87 Email bingofirst@gmail.com Xbox gamertag BingoRUS Блог http://dev.ingate.ru/