Windows Runtime (WinRT)

Отже, Windows Runtime являє собою нативний програмний інтерфейс для побудови додатків Metro Незважаючи на те що програмний інтерфейс є нативним, він повністю обєктно-орієнтована і підтримує наступні набори класів

в Windows Runtime виділяють кілька основних блоків

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Базовий набір класів– Тут зібрано все по роботі з потоками, управлінням памяттю, ресурсами і аутентифікацією додатки Сюди ж можна віднести і визначення базових типів

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Робота з файлами мультимедіа– Тут представлені механізми по роботі з аудіо і відео

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Служби і дані – Сюди входять класи, що забезпечують можливість взаємодії з віддаленими службами, а також класи з обробки даних

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Пристрій– Тут присутній набір типів, що дозволяють взаємодіяти з пристроєм користувача, включаючи різні сенсори, такі як акселерометр

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Інтерфейс користувача– Найцікавіший блок, який містить основні компоненти побудови інтерфейсів Тут

присутні як класи, які описують стандартні елементи управління, так і механізми звязування з даними

Всі ці компоненти ми будемо розглядати дуже докладно протягом всієї книги

Ще раз зробимо акцент на тому, що Windows Runtime являє собою нативний програмний інтерфейс Природно, щоб реалізувати підтримку подібного інтерфейсу в Windows 8, розробником довелося зробити безліч речей з нуля: визначити набори типів і механізмів описи різних конструкцій, до яких звик сучасний обєктно-орієнтована розробник (починаючи зі списків і закінчуючи механізмами створення класів і інтерфейсів) створити механізми безпеки, що обмежують можливості додатків лише заявленим списком привілеїв, представленим при установці реалізувати механізм запуску додатків і активації потрібних класів у контексті програми та багато іншого Для нас важливо розібратися з тими можливостями, які пропонує WinRT в своєму наборі класів, і в тому, яким чином взаємодіяти з WinRT

Якщо Ви зацікавилися повним набором класів WinRT, то всі їх можна побачити в реєстрі операційної системи, перейшовши за наступним шляхом: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WindowsRuntime \ ActivatableClassId

Рис 16

Як видно з малюнка, тут представлений не лише ідентифікатор для кожного класу, а й імя бібліотеки в улюбленому багатьма каталозі System32 Іншими словами, WinRT дійсно нативний і представлений набором динамічних бібліотек

Ось тут виникає питання: а як же NET Framework і яке місце C # у всьому цьому

Почнемо з того, що згадаємо, як з мови програмування C # можна було викликати нативний (ще не обєктно-орієнтована) код – звичайно ж, за допомогою атрибуту DllImport Цей атрибут дозволяв вказати імя методу, який Ви планували використовувати в C #, і імя бібліотеки При цьому виникали проблеми перетворення типів, а код виходив громіздким

У випадку з COM-компонентами Visual Studio успішно генерував спеціальний проксі-клас, який дозволяв взаємодіяти з COM з керованого коду Витівка хоч і працювала, але спостерігалися проблеми з перетворенням параметрів у типи NET Framework, а також проблеми з самою розробкою (підключення, IntelliSense та ін)

Якщо ж ми говоримо про нативном інтерфейсі Windows Runtime, то, на відміну від Win 32 API і COM, він розроблявся вже під час існування NET Framework і C # Зверніть увагу на класи WinRT, і Ви побачите збіг практично в усьому з класами NET Framework Це не випадковість Справа в тому, що WinRT розроблявся таким чином, щоб з його допомогою можна було зручно створювати додатки не тільки на C + +, але й на C # Фактично, він адаптувався для C #-розробників, і на WinRT можна дивитися як на втілення NET Framework в ядрі платформи, що є логічним кроком

Але С # – це керований мова програмування, який працює під управлінням NET Framework Чи змінилося щось у Windows 8

Мова програмування C #, як і раніше, виконується вкерованому оточенні, І в своїх керованих додатках Ви можете отримувати доступ до більшості класів NET Framework, при цьому використовуючи і класи Windows Runtime Природно, якщо ми говоримо про класах NET Framework, то йдеться про деяке підмножині Адже в Windows 8 у програми Metro немає необхідності отримувати доступ до старих елементів управління або подіям, повязаним з роботою вікна в старих операційних системах А ось потенціал LINQ повністю доступний в додатках Metro якраз завдяки можливості програмувати на C # Повний список доступних NET-класів у додатках Metro можна подивитися в документації

Яким же чином відбувається виклик нативних інтерфейсів Windows Runtime з керованого коду, якщо типи, використовувані в NET Framework і в WinRT, відрізняються Це стає можливим завдяки спеціальній прошарку Language Projection Вона являє собою механізм взаємодії між WinRT і C # Простіше кажучи, під Language Projection можна розуміти бібліотеку проксі-класів, а також розширення компілятора, що роблять розробку додатків на C # «нативной» Подібні прошарку є і для інших технологій Наприклад, для додатків, написаних на JavaScript / HTML 5, існує аналогічна прошарок, яка включає бібліотеку WinJS, що дозволяє звертатися до WinRT з коду на JavaScript

Таким чином, механізм, що забезпечує роботу додатків Metro,

написаних на мові програмування C #, можна описати таким чином

Додаток Metro (C # / XAML)

Language Projection

Common Language Runtime (CLR)

Windows Runtime

Рис 17

І ще один момент, на якому хотілося б акцентувати увагу, це метадані Справа в тому, що одним з достоїнств NET Framework була можливість зберігати метадані у збірках, що дозволяють описати не тільки структуру входять до них класів, але і різні залежності Подібні метадані могли гарантувати цілісність програми, а також забезпечити додаткові можливості, такі як система IntelliSense Але, як Ви знаєте, в стандартних динамічних бібліотеках Windows немає можливості зберігати метадані Однак це не зупинило розробників, і сьогодні усі класи в бібліотеках WinRT мають повний опис, аналогічне тому, яке застосовувалося для зборок в NET Framework (не просто аналогічне, а базується на структурі метаданих в NET) Правда, для бібліотек WInRT метадані зберігаються в окремому файлі від бібліотеки, але в певному місці – каталозі C: ​​\ Windows \ System32 \ WinMetadata Тут розташовуються файли з розширенням Winmd, які є невідємною частиною WinRT

Рис 18

Більш того, якщо Ви спробуєте відкрити один з файлів за допомогою стандартної утиліти ildasm, то зможете переглянути всю доступну інформацію (вона знаходиться тут: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v80A \ bin \ NETFX 40 Tools)

Рис 19

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*