Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Среда выполнения Windows ( WinRT ) - это платформенно-независимая архитектура приложений и компонентов, впервые представленная в Windows 8 и Windows Server 2012 в 2012 году. WinRT поддерживает разработку на C ++ / WinRT (стандартный C ++), C ++ / CX (Component Extensions, язык, основанный на C ++. ), Rust / WinRT , JavaScript - TypeScript и языки интерфейса командной строки, такие как C # и Visual Basic .NET (VB.NET). Приложения WinRT изначально поддерживают как x86, так и ARM.процессоры, однако нативные приложения должны компилироваться отдельно для каждой архитектуры и могут работать в изолированной среде, чтобы обеспечить большую безопасность и стабильность. [1] [2] Компоненты WinRT разработаны с учетом возможности взаимодействия между несколькими языками и API, включая собственные, управляемые языки и языки сценариев.

Windows Phone 8.1 использовала версию среды выполнения Windows под названием Windows Phone Runtime . Он позволяет разрабатывать приложения на C # и VB.NET, а компоненты среды выполнения Windows - на C ++ / CX. [3]

Технология [ править ]

WinRT реализован на языке программирования C ++ [4] и является объектно-ориентированным по своей конструкции. [4] Его основной технологии, API для Windows (Win32 API), написана в основном на языке C . [5] Это интерфейс прикладного программирования (API) с неуправляемым кодом, основанный на модели компонентных объектов (COM), который, как и COM, позволяет взаимодействовать с несколькими языками. Однако определения API хранятся в файлах, которые закодированы в формате метаданных ECMA 335 , который .NET Framework также использует с некоторыми изменениями. [6] [7].winmd[ ненадежный источник? ] Этот общий формат метаданных позволяет значительно снизить накладные расходы при вызове WinRT из приложений .NET по сравнению с P / Invoke и значительно упростить синтаксис. [8] [ ненадежный источник? ]

Новый язык C ++ / CX (Component Extensions), который заимствует некоторый синтаксис C ++ / CLI , был представлен для написания и использования компонентов WinRT с меньшим количеством связующего кода, видимого программисту, по сравнению с классическим программированием COM на C ++, и налагает меньше ограничений по сравнению с C ++ / CLI о смешивании типов. Расширения компонентов C ++ / CX рекомендуются для использования только на границе API, а не для других целей. [9] Regular C ++ (с COM-специфической дисциплины) также может быть использована для программы с компонентами WinRT, [10] с помощью среды выполнения Windows C ++ Template Library (WRL), который похож на цели , в какой шаблонных Библиотека предоставляет для COM. [11]В 2019 году Microsoft отказалась от C ++ / CX в пользу библиотеки заголовков C ++ / WinRT . [12]

Приложения WinRT выполняются в изолированной программной среде и требуют явного одобрения пользователя для доступа к критически важным функциям ОС и базовому оборудованию. По умолчанию доступ к файлам ограничен несколькими заранее определенными местоположениями, такими как каталоги «Документы» или «Изображения». [13]

Приложения WinRT для Windows RT, Windows 8 и более поздних версий упакованы в .appx or .msixфайл формата; основанный на Open Packaging Conventions , он использует формат ZIP с добавленными файлами XML. [14] Приложения WinRT распространяются в основном через магазин приложений под названием Microsoft Store , где программное обеспечение WinRT (называемое приложениями из Магазина Windows ) может быть загружено и приобретено пользователями. Приложения WinRT можно загружать только из-за пределов Магазина Windows в системах Windows 8 или RT, которые являются частью домена Windows или оснащены специальным ключом активации, полученным от Microsoft. [15] [16] [17] [18]Это ограничение больше не существует в Windows 10 November Update или более поздних версиях, где пользователи могут свободно устанавливать любое приложение на основе среды выполнения Windows вне Магазина напрямую от издателей. [19]

В отличие от Win32 и аналогично .NET Framework 4.5 , большинство API-интерфейсов, выполнение которых, как ожидается, займет значительное время, реализованы как асинхронные . Приложение отправляет вызов API, который немедленно возвращается, позволяя приложению выполнять другие задачи. После завершения задачи выдается обратный вызов, который приложение может использовать для получения результатов. [20] Асинхронная модель требует новых конструкций языка программирования. У каждого языка есть свой способ вызова таких API (ключевое слово asyncи оператор awaitв C # и Visual Basic, класс taskи метод .thenв C ++ / CX, ключевое слово co_await в C ++ / WinRT). Комплект разработки программного обеспечения T (SDK), класс Promiseи метод.thenв JavaScript-HTML5), аналогично try/ catchиспользуется при обработке исключений . Части API, требующие асинхронного доступа, включают экранные сообщения и диалоговые окна, доступ к файлам, подключение к Интернету, сокеты, потоки, устройства и службы, а также календарь, контакты и встречи.

Услуги [ править ]

Метаданные [ править ]

Метаданные описывают код, написанный для платформы WinRT. Он определяет модель программирования, которая позволяет писать объектно-ориентированный код, который может использоваться всеми языками программирования , и включает такие службы, как отражение .

Херб Саттер , эксперт по C ++ в Microsoft , объяснил во время своего сеанса по C ++ на конференции 2011 Build, что метаданные WinRT имеют тот же формат, что и метаданные CLI . [9] Собственный код (т.е. машинный код для конкретного процессора) не может содержать метаданные, поэтому он хранится в отдельных WINMD-файлах, которые могут отображаться как обычные сборки CLI . [21]

Поскольку это метаданные интерфейса командной строки, код, написанный на собственных языках WinRT, может использоваться из управляемых языков интерфейса командной строки .

Система типов [ править ]

WinRT имеет богатую объектно-ориентированную систему типов на основе классов, основанную на метаданных. Он поддерживает конструкции с соответствующими конструкциями в платформе .NET: классы , методы , свойства , делегаты и события .

Одним из основных дополнений к WinRT по сравнению с COM является межпрограммный двоичный интерфейс (ABI), обобщенные шаблоны в стиле .NET . В C ++ / CX они объявляются с использованием ключевого слова genericс синтаксисом, очень похожим на синтаксис ключевого слова template. Классы WinRT (ссылочные классы) также могут быть обобщены с использованием шаблонов C ++, но только экземпляры шаблонов могут быть экспортированы в метаданные .winmd (с некоторым изменением имени ), в отличие от универсальных шаблонов WinRT, которые сохраняют свою универсальность в метаданных. WinRT также предоставляет библиотеку универсальных контейнеров, которые параллельны контейнерам в стандартной библиотеке C ++., а также некоторые функции обратного преобразования. Использование коллекций WinRT в языках .NET (например, C # и VB) и в JavaScript более прозрачно, чем в C ++, с автоматическим отображением в их естественные эквиваленты, происходящим за кулисами. При создании компонента WinRT на управляемом языке необходимо соблюдать некоторые дополнительные правила в стиле COM, например, типы коллекций .NET Framework не могут быть объявлены как возвращаемые типы, но на границе компонента можно использовать только интерфейсы WinRT, которые они реализуют.

Компоненты WinRT [ править ]

Классы, которые скомпилированы для работы с WinRT, называются компонентами WinRT . Это классы, которые могут быть написаны на любом поддерживаемом языке и для любой поддерживаемой платформы. Ключ - это метаданные. Эти метаданные позволяют взаимодействовать с компонентом на любом другом языке WinRT. Среда выполнения требует, чтобы компоненты WinRT, созданные с помощью .NET Framework, использовали определенные типы интерфейсов или интерфейсы типов .NET, которые автоматически сопоставляются с первым из названных. Наследование пока не поддерживается в управляемых компонентах WinRT, за исключением классов XAML. [22]

Интерфейсы программирования [ править ]

Программы и библиотеки, предназначенные для среды выполнения WinRT, можно создавать и использовать на нескольких платформах и языках программирования. В частности, C / C ++ (либо с языковыми расширениями, предлагающими первоклассную поддержку концепций WinRT, либо с библиотекой шаблонов нижнего уровня, позволяющей писать код на стандартном C ++), .NET ( C # и Visual Basic .NET (VB.NET)) и JavaScript . Это стало возможным благодаря метаданным.

В терминологии WinRT языковая привязка называется языковой проекцией .

C ++ (C ++ / WinRT, расширения компонентов, WRL) [ править ]

Родной C ++ - первоклассный гражданин платформы WinRT. Начиная с версии 10.0.17134.0 (Windows 10, версия 1803) Windows SDK содержит C ++ / WinRT. C ++ / WinRT - это полностью стандартная современная языковая проекция C ++ 17 для API среды выполнения Windows (WinRT), реализованная в виде библиотеки на основе файла заголовка и предназначенная для обеспечения первоклассного доступа к современному API Windows. С помощью C ++ / WinRT API среды выполнения Windows можно создавать и использовать с помощью любого совместимого со стандартами компилятора C ++ 17. WinRT является собственной платформой и поддерживает любой собственный (и стандартный) код C ++, поэтому разработчик C ++ может повторно использовать существующие собственные библиотеки C / C ++. В C ++ / WinRT нет языковых расширений.

До того, как C ++ / WinRT был официально выпущен в Windows SDK, с октября 2016 года [23] Microsoft предлагала на GitHub C ++ / WinRT. [24] Он не полагается на код C ++ / CX, в результате чего создаются двоичные файлы меньшего размера и более быстрый код. [25] Хотя C ++ / WinRT основан на заголовках, он не полагается на заголовки SDK, например: Windows.h вместо этого настраивает свои собственные файлы заголовков, которые имеют идентичное двоичное представление под капотом. [26]

Есть два других устаревших варианта использования WinRT из C ++: WRL, библиотека шаблонов в стиле ATL и C ++ / CX (C ++ с расширениями компонентов), который напоминает C ++ / CLI. [27] Из-за требований к внутреннему потреблению в Microsoft WRL не содержит исключений, что означает, что его дисциплина возврата значения основана на HRESULT, как и в COM. [28] C ++ / CX, с другой стороны, завершает вызовы WinRT кодом, который выполняет проверку ошибок и при необходимости выдает исключения. [29]

C ++ / CX имеет несколько расширений, которые обеспечивают интеграцию с платформой и ее системой типов. Синтаксис похож на синтаксис C ++ / CLI, хотя он производит собственный (хотя и не стандартный) код и метаданные, которые интегрируются со средой выполнения. Например, объекты WinRT могут быть выделены с помощью ref new, что является аналогом gcnewC ++ / CLI. Оператор шляпы ^сохраняет свое значение, однако в случае, когда и вызывающий, и вызываемый написаны на C ++ и живут в одном процессе, ссылка на шляпу - это просто указатель на vptr на таблицу виртуальных методов (vtable, VMT). [29]

Наряду с C ++ / CX, по сравнению с традиционным программированием COM на C ++, есть частичные классы , снова вдохновленные .NET. Они позволяют транслировать экземплярный код XAML в код C ++ с помощью инструментов, а затем объединять его с кодом, написанным человеком, для создания полного класса, обеспечивая при этом четкое разделение частей реализации класса, созданных машиной и редактируемых человеком, в разные файлы.

.NET [ править ]

.NET Framework и Common Language Runtime (CLR) интегрированы в WinRT как субплатформенные. Он повлиял и установил стандарты для экосистемы через формат метаданных и библиотеки. CLR предоставляет такие услуги, как код JIT-компиляции и сборка мусора . Приложения WinRT, использующие языки .NET, используют новую среду выполнения Windows XAML Framework и в основном написаны на C #, VB.NET и впервые для XAML с собственным кодом, использующим C ++ / CX. Хотя это еще не официально поддерживается, программы также могут быть написаны на других языках .NET.

Ограничения [ править ]

Классы, определенные в компонентах WinRT, которые построены на управляемых языках .NET, должны быть объявлены как классы sealed, поэтому они не могут быть производными от. Однако незапечатанные классы WinRT, определенные где-то еще, могут быть унаследованы от .NET, их виртуальные методы переопределены и т. Д .; но унаследованный управляемый класс по-прежнему должен быть запечатан.

Члены, которые взаимодействуют с другим языком, должны иметь подпись с типами WinRT или управляемым типом, который может быть преобразован в них. [22]

JavaScript [ править ]

Приложения WinRT также можно кодировать с использованием HTML с JavaScript в коде программной части , которые запускаются с использованием механизма визуализации Trident и механизма JavaScript Chakra , оба из которых также используются Internet Explorer . При кодировании приложения WinRT на JavaScript его функции адаптированы в соответствии с соглашениями об именах JavaScript, а пространства имен также сопоставляются с объектами JavaScript.

Другие языки [ править ]

Microsoft находится в процессе проектирования API WinRT на языки, отличные от C ++. Одним из примеров является Rust / WinRT, интерфейс для программ, написанных на Rust, для использования WinRT API. [30] Rust / WinRT является частью Project Reunion, попытки Microsoft согласовать платформы Win32 и WinRT. [31]

Мосты [ править ]

С появлением универсальной платформы Windows (UWP) WinRT получил множество мостов API, которые позволяют легко переносить программы, изначально написанные для других языков, используя преимущества функций UWP. Microsoft предоставила мосты для Android (не существует с 2016 года), iOS ( Cocoa Touch ), Progressive Web Apps , Silverlight , а также стандартных настольных приложений на основе Win32 (с использованием пакета MSIX из Project Reunion).

API [ править ]

Windows предоставляет интерфейс прикладного программирования (API), построенный на инфраструктуре среды выполнения Windows, и предоставляет возможности Windows 8 и более поздних версий всем разработчикам языков в естественной и знакомой форме. Эти API доступны не только в пространстве имен Windows, но и на любом поддерживаемом языке. Windows SDK предоставляет метаданные для статических компиляторов, однако динамические языки загружают их во время выполнения из папки% windir% \ System32 \ WinMetadata, которая существует на каждом устройстве с Windows 8 или Windows 10.

Классы времени выполнения [ править ]

Классы среды выполнения Windows - это набор пакетов SDK, которые обеспечивают доступ ко всем функциям от анализатора XAML до функции камеры. Пакеты SDK реализованы как собственные библиотеки C / C ++ (неуправляемые).

Соглашения об именах [ править ]

На соглашения об именах для компонентов (классов и других членов) в API сильно влияют соглашения об именах .NET, в которых используется верблюжий регистр (в частности, PascalCase). Microsoft рекомендует пользователям следовать этим правилам, если другие не указаны.

Эти соглашения проецируются по-разному в некоторых языках, например в JavaScript, который преобразует их в свои соглашения и наоборот. Это сделано для обеспечения единообразия и единообразия работы независимо от языка программирования.

Ограничения и правила [ править ]

Поскольку среда выполнения Windows проецируется на различные языки, существуют некоторые ограничения на основные типы данных, позволяющие размещать все такие языки. Программисты должны быть осторожны с поведением этих типов при использовании с открытым доступом (для параметров метода, возвращаемых значений метода, свойств и т. Д.). [32]

Основные типы
В языках .NET и C ++ существует богатый набор типов данных, представляющих различные числа.
В JavaScript a Numberможет представлять не более 53 бит точности.
В WinRT отсутствует единственный числовой тип данных - это 8-битное целое число со знаком по сравнению с .NET и C ++. Разработчики JavaScript должны быть осторожны, имея дело с большими числами при написании кода для WinRT.
Струны
Строки неизменны в .NET и JavaScript, но изменчивы в C ++.
Нулевой указатель, переданный C ++ в WinRT в виде строки, преобразуется в пустую строку.
В .Net значение null, передаваемое в WinRT в виде строки, преобразуется в пустую строку
В JavaScript значение null, передаваемое в WinRT в виде строки, преобразуется в строку со словом null. Это связано с тем, что ключевое слово JavaScript nullпредставлено как нулевой объект. Аналогичные результаты возникают при переходе undefinedк WinRT из JavaScript.
Структуры
В .NET и C ++ структуры являются типами значений, и такая структура может содержать любой тип.
JavaScript не поддерживает структуры напрямую.
В WinRT использование структур разрешено только для типов, которые имеют семантику значений, включая числа, строки и другие структуры. Указатели или ссылки на интерфейс запрещены.
Рекомендации
В .NET объекты передаются по ссылке, а числа и структуры передаются по значению.
В C ++ все типы могут передаваться по ссылке или по значению.
В WinRT интерфейсы передаются по ссылке; все остальные типы передаются по значению.
Массивы
В .NET, C ++ и JavaScript массивы являются ссылочными типами.
В WinRT массивы являются типами значений.
События
В .NET и C ++ клиенты подписываются на события с помощью +=оператора.
В JavaScript свойство addEventListenerфункции или настройки on<EventName>используется для подписки на события.
В WinRT все языки могут использовать собственный способ подписки на события.
Коллекции
Некоторые коллекции .NET сопоставляются непосредственно с коллекциями WinRT.
Тип WinRT Vector напоминает массивы, и для их использования используется синтаксис массива.
Тип WinRT Map представляет собой коллекцию пар ключ / значение и проецируется как словарь на языках .NET.
Перегрузка метода
Все языки WinRT (.NET, C ++, JavaScript) поддерживают перегрузку параметров
.NET и C ++ также поддерживают перегрузку по типу.
В WinRT для перегрузки используется только номер параметра.
Асинхронность
Все методы WinRT разработаны таким образом, что любой метод, занимающий более 50 миллисекунд, является асинхронным.
Установленный шаблон именования для различения асинхронных методов - <Verb>[<Noun>]Async. Для полной библиотеки времени выполнения все методы, которые могут длиться более 50 мс, реализованы только как асинхронные методы.

История версий [ править ]

Среда выполнения Windows Phone [ править ]

Начиная с Windows Phone 8, можно разрабатывать приложения, используя версию среды выполнения Windows, называемую Windows Phone Runtime (WPRT). Хотя WP8 обеспечивал ограниченную поддержку, платформа в конечном итоге сошлась с Windows 8.1 в Windows Phone 8.1 .

Windows Phone 8 [ править ]

Windows Phone 8 имеет ограниченную поддержку разработки и использования компонентов среды выполнения Windows через среду выполнения Windows Phone . Многие из API среды выполнения Windows в Windows 8, которые обрабатывают основные функции операционной системы, были перенесены на Windows Phone 8. [33] По запросу разработчиков игр добавлена ​​поддержка разработки собственных игр с использованием C ++ / CX и DirectX.

Однако платформа XAML для Windows Phone по-прежнему основана на той же платформе Microsoft Silverlight , что и в Windows Phone 7, для обеспечения обратной совместимости. Таким образом, с 2016 года разработка XAML на C ++ / CX невозможна. Разработка с использованием HTML5 или WinJS не поддерживается в Windows Phone 8.

Windows Phone 8.1 [ править ]

Поддержка среды выполнения Windows на Windows Phone 8.1 совпадает с Windows 8.1. Этот выпуск предоставляет платформу полный API среды выполнения Windows, включая поддержку XAML Framework среды выполнения Windows и языковые привязки для C ++ / CX и HTML5 - JavaScript . Существует также тип проекта под названием Универсальные приложения, позволяющий приложениям совместно использовать код в версиях 8.1 Windows Phone и Windows.

Обновлена ​​платформа Windows Phone 8 Silverlight Framework. [ когда? ] Он может использовать некоторые новые функции среды выполнения Windows.

Среда выполнения Windows Phone использует формат пакета AppX из Windows 8 после ранее использовавшегося Silverlight XAP .

Windows 10 Mobile [ править ]

Windows 10 Mobile теперь поддерживает API-интерфейсы UWP, и приложения можно писать один раз для всех устройств Windows без каких-либо изменений. Некоторые старые API требуют проверки во время выполнения в зависимости от семейства устройств, но новые API, представленные в Windows 10, работают на всех устройствах.

См. Также [ править ]

  • Платформа XAML среды выполнения Windows

Ссылки [ править ]

  1. Аврам, Авель (21 сентября 2011 г.). «Детали разработки среды выполнения Windows» . InfoQ .
  2. ^ Клуг, Брайан; Смит, Райан (13 сентября 2011 г.). «Сборка Microsoft: Windows 8, предварительная бета-версия» . AnandTech .
  3. ^ "Справочник по Windows Phone API" . Справочник по Windows Phone API . Microsoft . 21 июля 2014 г.
  4. ^ а б Майкл, Мэйберри (2012). Обнаружен WinRT . Нью-Йорк: Апресс . п. 3. ISBN 978-1-4302-4585-8.
  5. ^ «Создание приложений Win32 (C ++)» . MSDN . Microsoft . Проверено 12 января 2014 .
  6. ^ "Файлы метаданных Windows (WinMD)" . Справочник по API для приложений UWP. Документы Microsoft . Проверено 20 июля 2019 .
  7. Де Икаса, Мигель (15 сентября 2011 г.). «Демистификация WinRT» . Личный блог Мигеля де Икасы . Самостоятельно опубликовано . Проверено 15 января 2014 года .
  8. ^ "Каковы накладные расходы на маршалинг COM при вызове WinRT API из C #?" . Форум MSDN . Самостоятельно опубликовано . 20 сентября 2011 . Проверено 15 января 2014 года .
  9. ^ a b «Использование среды выполнения Windows из C ++ | Build2011 | Channel 9» . Channel9.msdn.com. 2011-09-14 . Проверено 24 апреля 2012 .
  10. ^ Sivakumar, Ниши (2011-09-29). «Visual C ++ и WinRT / Metro - Некоторые основы - CodeProject®» . Codeproject.com . Проверено 24 апреля 2012 .
  11. ^ «Использование среды выполнения Windows из C ++ | Build2011 | Channel 9» . Channel9.msdn.com. 2011-09-14 . Проверено 24 апреля 2012 .
  12. ^ «Введение в C ++ / WinRT - приложения Windows UWP» . docs.microsoft.com . Microsoft.
  13. ^ lastnameholiu. «Права доступа к файлам - приложения UWP» . docs.microsoft.com . Проверено 8 августа 2020 .
  14. ^ «Разработка простого и безопасного пакета приложений - APPX» . Блог разработчика приложений для Windows 8 . Проверено 30 декабря 2013 года .
  15. ^ «Как добавлять и удалять приложения» . TechNet . Microsoft. 31 мая 2012 . Проверено 4 октября 2012 года . Чтобы разрешить загрузку неопубликованных приложений на компьютере с Windows 8 Enterprise, который не присоединен к домену, или на любом компьютере с Windows® 8 Pro, необходимо использовать ключ активации продукта для загрузки неопубликованных приложений. Чтобы разрешить загрузку неопубликованных приложений на устройстве Windows® RT, необходимо использовать ключ активации продукта для загрузки неопубликованных приложений. Дополнительные сведения о загрузке неопубликованных ключей активации продукта см. В разделе Корпоративное лицензирование Microsoft.
  16. ^ «Windows 8: Метро Беспорядок» . Журнал ПК . Проверено 8 сентября 2012 года .
  17. ^ «Microsoft теперь использует 'Modern UI Style' для обозначения приложений Windows 8 'Metro Style'» . Проверено 10 августа 2012 года .
  18. ^ "Что такое приложение Microsoft Store?" . Центр разработки для Windows . Проверено 1 октября 2012 года .
  19. ^ MSFTTracyP. «Загрузка неопубликованных бизнес-приложений в Windows 10 (Windows 10) - Управление приложениями Windows» . docs.microsoft.com . Проверено 1 февраля 2021 .
  20. ^ «Асинхронное программирование (приложения Магазина Windows)» . MSDN . Microsoft . Проверено 12 января 2014 .
  21. ^ «.NET получает новую жизнь» . Архивировано из оригинального 24 сентября 2011 года . Проверено 16 сентября 2011 года .
  22. ^ a b «Использование среды выполнения Windows из C # и Visual Basic | Build2011 | Channel 9» . Channel9.msdn.com. 2011-09-14 . Проверено 24 апреля 2012 .
  23. ^ «Первоначальный предварительный выпуск C ++ / WinRT» . github.com. 2016-10-05 . Проверено 5 октября 2016 .
  24. ^ «C ++ / WinRT - это стандартная проекция языка C ++ для среды выполнения Windows» . github.com. 2016-09-14 . Проверено 14 сентября 2016 .
  25. ^ «Стандартный C ++ и среда выполнения Windows (C ++ / WinRT)» . blogs.windows.com. 2016-11-28 . Проверено 28 ноября 2016 .
  26. ^ Раймонд, Чен. «Внутри C ++ / WinRT: как C ++ / WinRT представляет типы ABI?» .
  27. ^ «Внутри C ++ / CX Design - Блог группы разработчиков Visual C ++ - Домашняя страница сайта - Блоги MSDN» . Blogs.msdn.com. 2011-10-20 . Проверено 24 апреля 2012 .
  28. ^ Чарльз (2011-10-26). "GoingNative 3: Эпизод C ++ / CX с Марианом Лупару | C9 :: GoingNative | Channel 9" . Channel9.msdn.com . Проверено 24 апреля 2012 .
  29. ^ a b Под крышкой с C ++ для приложений в стиле Metro с Деоном Брюисом в // Build
  30. ^ "microsoft / winrt-rs" . GitHub .
  31. ^ «microsoft / ProjectReunion: эволюция платформы для разработчиков Windows, которая сделает ее более совместимой, гибкой, современной и открытой» . GitHub .
  32. ^ «Десять советов при написании приложения в стиле Metro на гибридном языке - Build2011 - Channel 9» . Канал 9 . Microsoft.
  33. ^ "Windows Phone Runtime API" . microsoft.com . Microsoft.

Внешние ссылки [ править ]

  • Официальный веб-сайт