WinRT - замена Win32

воскресенье, 18 сентября 2011, Михаил Галушко

С анонсом 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 должны быть подписаны цифровой подписью

При разработке можно будет использовать тестовые подписи (подписывать самому). Но для появления приложения в магазине - это условие обязательно.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии