WinRT - замена Win32
С анонсом Windows 8 нам предложили создавать приложения на базе HTML+CSS+Javascript, C/C++ и C#/XAML и много-много другого (см. обзоры на Хабре).
Все бы хорошо, но, лично меня, работа с Win32 устрашает. Я пришел в .NET без опыта разработки под C/C++, поэтому когда первый раз столкнулся с Win32, то после стройного, удобного и объектного дотнета, работа с этим монстром вызывала тошноту.
А теперь нам на помощь приходит Windows Runtime library (WinRT) - она позволит нам использовать мощь Win32 без тех недостатков, которые есть сейчас.
WinRT это не еще один уровень абстракции. Она, как и Win32, является оберткой системных функций (ядра). Это самое крупное обновление ядра Windows с момента представления Win32 в 1993 (Windows NT).
В отличии от Win32, которая был написана на C, WinRT построена на C++ и является полностью объектно-ориентированной. Поэтому она более удобна для использования, также поддерживает рефлексию - другие языки (javascript) могут без проблем ее использовать.
Надо заметить, что Win32 никуда не уходит и можно продолжать ее использовать (многие любят "продолжать" анонсы Microsoft по своему усмотрению и устраивать панику).
C++ разработка
Пользовательский интерфейс предлагается разрабатывать на базе XAML (этот подход зарекомендовал себя в Silverlight, WPF, Windows Phone 7). Библиотеки для работы с XAML должны быть портированы на C++ и скомпилированы под x86. Metro приложения, написанные на C++ и XAML, работают аналогично стандартным Visual C++ приложением (т.е. они не работают на базе .NET), все остается по-старому. Такой подход позволил объединить преимущества C++ (быстродействие, больше контроля) и XAML (удобный способ компоновки интерфейса). Библиотеки типа Boost тоже поддерживаются.
Изменения в интерфейсах
Диалоговые окна, концепция предыдущих версий Windows, не существуют в WinRT. Microsoft больше не устраивают проблемы с производительностью и юзабилити, с которыми сталкиваются разработчики и пользователи, при использовании этого подхода. Также библиотека GDI поддерживаться не будет - совмещать интерфейс на базе Metro и классический подход будет невозможно.
PlayTo Contract
PlayTo - единый подход для обмена медиа контентом: приложение отправляет файл, система позволяет пользователя способ его воспроизведения (приложение). Я не знаю как это работает сейчас, поэтому особых нововведений в этом не увидел.
C#/VB - конец P/Invoke
Для вызова native кода из C#/VB (управляемого кода) приходится использовать структуры и работу с указателями. WinRT позволит использовать его напрямую - теперь .NET разработчики получили возможности, которые раньше были у их коллег из Также для повышения "отзывчивости" приложений все операции, которые занимают более 50 секунд станут асинхронными.
JavaScript
JavaScript станет одним из четырех основных языков разработки в Windows 8. Хотя он не работает с XAML, но у него есть возможность полноценно взаимодействовать с WinRT. Интерфейс приложений, написанных на JavaScript, будет построен на базе HTML/CSS. Будет использовать тот же движок рендеринга, что и в IE 10.
App Container и Application Permissions
Приложения Metro будут работать в, так называемом, app container. Это будет заменой понятия "окна", которое было в Win32.
Почти все обращения через API будет идти напрямую в библиотеку ядра. Но некоторые будут проходить через системного брокера. Он должен удостовериться, что у приложения есть права на использование вызываемых функций. В некоторых случаях пользователю будет предоставлен выбор - дать права приложению или нет (блин, как я обожаю эти окна в Windows 7 - хотя это просто от незнания и нежелания покопаться глубже). Также будет использоваться подход манифестов - в определенном файле будет описание прав, которые необходимы приложению для работы (моб. разработчики должны быть в курсе). Целью этого подхода является минимизация возможности приложений повредить систему - безопасность превыше всего (иногда даже удобства пользования).
Все приложения Metro должны быть подписаны цифровой подписью
При разработке можно будет использовать тестовые подписи (подписывать самому). Но для появления приложения в магазине - это условие обязательно.
http://www.infoq.com/news/2011/09/WinRT-API
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |