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, что позволяет относительно легко обращаться к нему из различных языков программирования. Определения 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 года.

Ссылки

Литература

  • Джеффри Рихтер, Мартен ван де Боспурт. WinRT: программирование на C# для профессионалов = Windows Runtime via C#. — М.: «Вильямс», 2014. — 368 с. — ISBN 978-5-8459-1910-6.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.