SlideShare una empresa de Scribd logo
1 de 33
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/

Más contenido relacionado

Destacado

PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Performance management case study ch#5
Performance management case study ch#5Performance management case study ch#5
Performance management case study ch#5zaman rana
 
Slide share payment for pro v2
Slide share payment for pro v2Slide share payment for pro v2
Slide share payment for pro v2Shivani Ramnath
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive ExtensionsGetDev.NET
 
Видео в сети
Видео в сетиВидео в сети
Видео в сетиGetDev.NET
 
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013Claire Huijnen
 
Менеджер пакетов NuGet
Менеджер пакетов NuGetМенеджер пакетов NuGet
Менеджер пакетов NuGetGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareShivani Ramnath
 

Destacado (19)

Kh21345
Kh21345Kh21345
Kh21345
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Performance management case study ch#5
Performance management case study ch#5Performance management case study ch#5
Performance management case study ch#5
 
Caps Rule
Caps RuleCaps Rule
Caps Rule
 
Slide share payment for pro v2
Slide share payment for pro v2Slide share payment for pro v2
Slide share payment for pro v2
 
Test presentation
Test presentationTest presentation
Test presentation
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 
Видео в сети
Видео в сетиВидео в сети
Видео в сети
 
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013
"Robotmaatjes op een pg afdeling" - Claire Huijnen en Arie Maas, Zorg&ICT 2013
 
Менеджер пакетов NuGet
Менеджер пакетов NuGetМенеджер пакетов NuGet
Менеджер пакетов NuGet
 
Erlang
ErlangErlang
Erlang
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 
Slidecasting
SlidecastingSlidecasting
Slidecasting
 

Similar a WinRT

разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложенийОлег Винников
 
WinRT: интеграция с С++
WinRT: интеграция с С++WinRT: интеграция с С++
WinRT: интеграция с С++Mykhail Galushko
 
Разработка WinRT приложений для Windows 8: реальный опыт, UA Mobile 2012
Разработка WinRT приложений для  Windows 8: реальный опыт, UA Mobile 2012Разработка WinRT приложений для  Windows 8: реальный опыт, UA Mobile 2012
Разработка WinRT приложений для Windows 8: реальный опыт, UA Mobile 2012Mykhail Galushko
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных системKewpaN
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"Dmitry Savchenko
 
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...Diana Dymolazova
 
Эффективная архитектура мобильной автоматизации
Эффективная архитектура мобильной автоматизации Эффективная архитектура мобильной автоматизации
Эффективная архитектура мобильной автоматизации ISsoft
 
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8DevGAMM Conference
 
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»e-Legion
 
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...QA Club Minsk
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5Microsoft
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Разработка GUI игрового проекта на Scaleform
Разработка GUI игрового проекта на ScaleformРазработка GUI игрового проекта на Scaleform
Разработка GUI игрового проекта на ScaleformDmitry Dichkovsky
 
Кросс-платформенная мобильная разработка
Кросс-платформенная мобильная разработкаКросс-платформенная мобильная разработка
Кросс-платформенная мобильная разработкаArtur Drobinskiy
 
Средства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodeСредства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodeGoSharp
 

Similar a WinRT (20)

разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
WinRT: интеграция с С++
WinRT: интеграция с С++WinRT: интеграция с С++
WinRT: интеграция с С++
 
Разработка WinRT приложений для Windows 8: реальный опыт, UA Mobile 2012
Разработка WinRT приложений для  Windows 8: реальный опыт, UA Mobile 2012Разработка WinRT приложений для  Windows 8: реальный опыт, UA Mobile 2012
Разработка WinRT приложений для Windows 8: реальный опыт, UA Mobile 2012
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"
Михаил Гaлушко "Разработка для WinRT: практика создания качественных приложений"
 
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
 
Эффективная архитектура мобильной автоматизации
Эффективная архитектура мобильной автоматизации Эффективная архитектура мобильной автоматизации
Эффективная архитектура мобильной автоматизации
 
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8 Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
 
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»Владимир Колесников «Windows Phone 7: самое главное для разработчика»
Владимир Колесников «Windows Phone 7: самое главное для разработчика»
 
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Разработка GUI игрового проекта на Scaleform
Разработка GUI игрового проекта на ScaleformРазработка GUI игрового проекта на Scaleform
Разработка GUI игрового проекта на Scaleform
 
Кросс-платформенная мобильная разработка
Кросс-платформенная мобильная разработкаКросс-платформенная мобильная разработка
Кросс-платформенная мобильная разработка
 
Средства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodeСредства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCode
 
C# 3.0
C# 3.0C# 3.0
C# 3.0
 

Más de GetDev.NET

Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Обзор рекомендаций W3C
Обзор рекомендаций W3CОбзор рекомендаций W3C
Обзор рекомендаций W3CGetDev.NET
 
Первое знакомство с MODx revolution
Первое знакомство с MODx revolutionПервое знакомство с MODx revolution
Первое знакомство с MODx revolutionGetDev.NET
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionGetDev.NET
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 

Más de GetDev.NET (20)

Go
GoGo
Go
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
AngularJS
AngularJSAngularJS
AngularJS
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Обзор рекомендаций W3C
Обзор рекомендаций W3CОбзор рекомендаций W3C
Обзор рекомендаций W3C
 
PowerShell
PowerShellPowerShell
PowerShell
 
Первое знакомство с MODx revolution
Первое знакомство с MODx revolutionПервое знакомство с MODx revolution
Первое знакомство с MODx revolution
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Web deployment
Web deploymentWeb deployment
Web deployment
 

WinRT

  • 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
  • 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
  • 12. ЧТО ТАКОЕ WinRT? Это основа для создания Metro- приложений в Windows 8 Предоставляет возможность выбора языка и среды разработки Одинаково прозрачная работа с Windows API вне зависимости от выбора языка
  • 13. ЯЗЫКИ ПРОГРАММИРОВАНИЯ И РАЗМЕТКИ Языки программирования C# Visual Basic C++ Javascript Языки разметки XAML HTML
  • 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
  • 28. А ГДЕ TRUE NATIVE?!
  • 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/