Windows Runtime

Windows Runtime, или WinRT — модель программирования от Microsoft, являющаяся основой для разработки приложений в стиле Metro в операционной системе Windows 8[1][2]. WinRT поддерживает разработку на C++ (обычно с использованием расширения языка Component Extensions, C++/CX), управляемых языках C# и VB.NET, Rust[3], а также JavaScript.

WinRT по существу является API на основе технологии COM. Из-за своей COM-подобной основы WinRT позволяет относительно легко обращаться к нему из различных языков программирования, как это происходит в COM, но это, по существу, неуправляемый, родной API. Определения API хранятся в «.winmd» файлах, закодированных в формате метаданных ECMA 335, который используется в .NET с некоторыми изменениями.[4] Этот общий формат метаданных позволяет значительно уменьшить накладные расходы при вызове WinRT из .NET приложений по сравнению с вызовом неуправляемого кода (P/Invoke[5]), имея при этом намного более простой синтаксис.[6] Новый язык C++/CX (Component Extensions), который заимствует некоторые элементы синтаксиса из C++/CLI, позволяет создавать и использовать WinRT-компоненты с меньшим количеством видимой для программиста обвязки по сравнению с классическим программированием COM в C++, и в то же время накладывает меньше ограничений по сравнению с C++/CLI на смешение типов. Обычный C++ (с COM-специфичными требованиями) также может быть использован для программирования с компонентами WinRT.[7] Это возможно с помощью новой библиотеки шаблонов Windows Runtime C++ Template Library (WRL), которая аналогична по своей цели тому, что библиотека ATL обеспечивает для COM.[8] Документация MSDN однако рекомендует использовать C++/CX вместо WRL.[9]

  1. Abel Avram. Design Details of the Windows Runtime. InfoQ (21 сентября 2011). Архивировано 10 сентября 2012 года.
  2. Brian Klug & Ryan Smith. Microsoft BUILD: Windows 8, A Pre-Beta Preview. AnandTech (13 сентября 2011). Архивировано 10 сентября 2012 года.
  3. Microsoft представил Rust/WinRT. Доступен Rust-analyzer для интеграции Rust c IDE. www.opennet.ru. Дата обращения: 13 мая 2020. Архивировано 12 июля 2020 года.
  4. WinRT demystified — Miguel de Icaza. Дата обращения: 29 января 2012. Архивировано 16 апреля 2022 года.
  5. jkoritzinsky. Вызов неуправляемого кода (P/Invoke) - .NET (рус.). learn.microsoft.com. Дата обращения: 9 мая 2025.
  6. What is the COM marshaling overhead in calling the WinRT API from C# ? (недоступная ссылка)
  7. Visual C++ and WinRT/Metro — Some fundamentals — CodeProject®. Дата обращения: 29 января 2012. Архивировано 8 декабря 2011 года.
  8. Using the Windows Runtime from C++ | BUILD2011 | Channel 9. Дата обращения: 29 января 2012. Архивировано из оригинала 12 октября 2011 года.
  9. Windows Runtime C++ Template Library. Дата обращения: 29 января 2012. Архивировано 6 апреля 2016 года.

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search