Рихтер в своей книге целую главу посвятил данному механизму, но я так и не понял в каких сценариях его имеет смысл применять.
Это что-то типа убийцы COM, который нужно применять для межязыкового взаимодействия между управляемым модулем и неуправляемым? Или это вообще какая-то обертка над WinApi?
На самом деле, WinRT не является заменой или оберткой для какой либо из предыдущих технологий. WinRT - это принципиально новая технология, направленная на разработку приложений, которые имеют смысл на разных типах устройств. Приложение WinRT может использовать базовый API и работать на всех типах устройств, или использовать расширения API и работать под набором конкретных устройств (например, под ПК и смартфоном, ПК и Xbox и т.п.)
Первоначально эта технология возникла под Windows 8 и называлась WinRT. Позднее в Windows 10 она была заменена на аналогичную технологию UWP, которая охватывает больший набор устройств. Сейчас можно приближенно считать, что это одно и то же.
Приложения UWP/WinRT обладают следующими особенностями:
WinRT не является "убийцей COM", что бы это не значило. COM жив и будет жить, более того, сами компоненты WinRT API внутри представляют из себя COM-объекты. WinRT-приложения, написанные на С++, могут взаимодействовать с ними либо традиционно, как с COM-объектами, либо с использованием специальных расширений языка C++/CX.
WinRT не является "убийцей WinAPI", что бы это не значило. WinRT приложения, написанные на С++, могут как обычно взаимодействовать с подмножеством разрешенных Win32/COM API. Например, функция CreateFile
будет доступна, а функции работы с реестром - нет. Конечно, это не позволяет обойти ограничения платформы, т.е. функция CreateFile
также будет работать только с файлами в разрешенных папках. Забавный факт: в WinRT нельзя этой функцией открыть устройство NUL, как следствие - код, написанный из предположения, что оно всегда доступно, сломается при портировании под WinRT.
WinRT не является средством для организации взаимодействия между управляемым и неуправляемым кодом (в целом). Тем не менее, расширения языка C++/CX предоставляют возможность организовать взаимодействие между кодом на стандартном С++ и компонентами WinRT.
Подробнее: Введение в работу с UWP приложениями
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо передать WM_KEYDOWN через SendMessage, имея unicode char независимо от выбранной пользователем раскладки клавиатуры в конкретное окно
Как добавить показ дебажной информации в Visual Studio 2015 непосредственно в редакторе кода а не в отдельной панелиХотелось бы как например а Intelij...
Как написать синтезатор, который вместо встроенных голосов будет использовать мой собственный?