Видеозапись доклада:
http://getdev.net/Event/winrt
Windows Runtime призван упростить разработку metro-приложений для Windows 8 на разных языках. О том, как его использовать и какие особенности следует учитывать, можно узнать в этом докладе.
1. WINDOWS RUNTIME
СЕРГЕЙ ЗВЯГИН
INGATE DEVELOPMENT
СПЕЦИАЛЬНО ДЛЯ GetDev.NET
2. О ЧЕМ ПОГОВОРИМ?
Что такое WinRT?
Особенности Metro-приложений
Архитектура Windows Runtime
C#, C++ и Javascript
Требования к компонентам
Какой язык выбрать?
WinRT и Silverlight/WPF
Портирование приложений
4. ТЕРМИНОЛОГИЯ
Windows RT
Специальная версия Windows 8 для
планшетов с процессором ARM (ранее WOA,
Windows on ARM)
WinRT
новая программная оболочка Windows 8 для
Metro-приложений (Windows Runtime)
6. ЖИЗНЕННЫЙ ЦИКЛ
Последнее запущенное приложение
находится в статусе Active
Свернутое приложение находится в
статусе Suspended
Есть событие сворачивания, его можно
обработать
Свернутое приложение может быть
завершено при нехватке ресурсов
Нет события завершения, его нельзя
обработать
7. ВОЗМОЖНОСТИ НЕАКТИВНЫХ
ПРИЛОЖЕНИЙ
Несколько режимов вывода информации в
плитках на стартовом экране
Обычные плитки-иконки: Square (1x1) или
Wide (2x1)
Живые плитки (Live tiles)
Значки на плитках
Информирование пользователя о событиях в
«свернутом» приложении с помощью
нотификаций
Background Tasks
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
12. ЧТО ТАКОЕ WinRT?
Это основа для создания Metro-
приложений в Windows 8
Предоставляет возможность выбора
языка и среды разработки
Одинаково прозрачная работа с Windows
API вне зависимости от выбора языка
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
22. ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ
WinRT-компоненты могут быть созданы
на С++ или C#/VB
WinRT-компоненты могут быть
использованы из C++, C#/VB, Javascript
Никакого дополнительного кода за счет
использования метаданных
Ввиду специфики проекции нельзя
использовать XAML-разметку внутри
приложения на Javascript
23. 5 ПРОСТЫХ ПРАВИЛ
1) Правила применяются только к публичным
типам и членам компонента
2) Сигнатуры вызовов компонента должны
использовать только типы WinRT
3) Структуры должны иметь только открытые
поля
4) Наследование допускается только для
контролов XAML, остальные типы должны быть
помечены как sealed
5) Только поддерживаемые в WinRT generic-
типы должны использоваться
25. Проекция Javascript
Самый высокий уровень абстракции
Динамическая типизация делает
проекцию наиболее медленной из трѐх
Различные ограничения проекции
Автоматическая сборка мусора
Большинство используемых JS-библиотек
не требуют внесения изменений
26. Проекция .NET
Средний уровень абстракции
Накладные расходы на использование
метаданных
Полный доступ к библиотекам WinRT и
синтаксический сахар для асинхронных
вызовов
Автоматическая сборка мусора
Silverlight-компоненты требуют небольших
изменений для использования в WinRT
27. Проекция C++/CX
Средний уровень абстракции
Практически отсутствуют накладные
расходы
Прямые вызовы методов ядра, никаких
дополнительных оберток
Автоматический подсчет ссылок
С++ компоненты, использующие Win32
API, проще переписать с нуля, чем
адаптировать для использования в WinRT
29. Windows Runtime C++ Template Library
(WRL)
Только для бородатых программистов
Низкий уровень абстракции
Код никак не связан с компилятором от
MS
Возможность оптимизировать COM-
взаимодействие в специфичных
сценариях
Использование опыта разработки на
«чистом» C++ c использованием Active
Template Library
31. ПРИ НАПИСАНИИ
ПРИЛОЖЕНИЯ
Используйте Portable Class Library
Используйте директиву препроцессора
NETFX_CORE для написания гибридного
кода
Не используйте XNA
Следуйте пошаговым инструкциям на
MSDN
32. ИНСТРУКЦИИ НА 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
33. СПАСИБО ЗА ВНИМАНИЕ!
Твиттер
@Bingo87
Email
bingofirst@gmail.com
Xbox gamertag
BingoRUS
Блог
http://dev.ingate.ru/