WinRT - разработка приложений под Windows 8

353

В целом система Windows 8 рассчитана на тот же класс персональных компьютеров, что и Windows 7, то есть на машины на базе 32- или 64-разрядных микропроцессоров Intel х86. Система существует в обычном издании, называемом просто «Windows 8», и в издании «Windows 8 Pro» с дополнительными возможностями, ориентированными на квалифицированных энтузиастов и профессионалов. Как в Windows 8, так и в Windows 8 Pro могут выполняться программы двух типов:

Настольные приложения представляют собой традиционные Windows-программы, которые сейчас работают под управлением Windows 7 и взаимодействуют с операционной системой через интерфейс прикладного программирования Windows, называемый Win32 API. Для запуска настольных приложений в Windows 8 включен знакомый рабочий стол Windows. Для их разработки можно использовать, например, WPF (Windows Presentation Foundation).

Приложения Windows Store представляют принципиальный отход от традиционной модели Windows. Эти программы обычно выполняются в полноэкранном режиме (хотя две программы могут совместно использовать экран в режиме Snap View) и, как правило, оптимизируются для планшетов и сенсорных экранов. Эти приложения приобретаются и устанавливаются только из магазина приложений, находящегося под управлением Microsoft. (Разработчик также может развертывать и тестировать приложения непосредственно из Visual Studio.)

Для написания этих приложений был введен новый объектно-ориентированный интерфейс программирования, называемый Windows Runtime или WinRT (не путайте с Windows RT - версией Windows 8 для процессоров ARM). Внутренняя реализация Windows Runtime базируется на модели COM (Component Object Model) с предоставлением интерфейсов через файлы метаданных с расширением .winmd, находящиеся в каталоге /Windows/System32/WinMetadata. С точки зрения внешнего пользователя система в высокой степени объектно-ориентирована.

С точки зрения прикладного программиста Windows Runtime напоминает Silverlight, хотя во внутренней реализации API не является управляемым. Вероятно, для программистов Silverlight самое очевидное различие связано с пространствами имен: пространства имен Silverlight, начинающиеся с System.Windows, были заменены пространствами, начинающимися с Windows.UI.Xaml.

WinRT

Большинство приложений Windows 8 состоит не только из кода, но и из разметки, будь то отраслевой стандарт HTML (HyperText Markup Language) или принятый Microsoft язык XAML (extensible Application Markup Language). В частности, преимуществам разбиения приложения на код и разметку относится возможность распределения процесса разработки между программистами и дизайнерами.

В настоящее время существуют три основных варианта программирования приложений Windows 8, каждый из которых основан на определенном языке программирования и языке разметки:

Во всех трех вариантах задействуется интерфейс Windows Runtime, но он также поддерживается другим интерфейсом программирования для конкретного языка. Хотя смешанное использование нескольких языков в одном приложении невозможно, вы можете создавать библиотеки (типа Windows Runtime Component) с собственными файлами .winmd, доступные из любого языка Windows 8.

Для программистов, работающих на управляемых языках C# или Visual Basic .NET, WinRT выглядит знакомо. Приложения Windows 8, написанные на этих языках, не могут использовать Win32, COM или DirectX API с такой же простотой, как программисты С++, однако такая возможность существует.

Для программистов JavaScript среда Windows Runtime дополняется библиотекой WinJS (Windows Library for JavaScript), предоставляющей ряд функций системного уровня для приложений Windows 8.

После долгих размышлений (и душевных терзаний) я решил, что этот раздел нашего сайта должен быть почти полностью посвящен разработке приложений WinRT на C# и XAML. Меня много лет убеждали в преимуществах управляемых языков для разработки и отладки, и на мой взгляд, C# лучше всех языков подходит для Windows Runtime. Надеюсь, код C# будет достаточно понятен программистам C++ и JavaScript.

WinRT - расширенные возможности
Лучший чат для C# программистов