- PVSM.RU - https://www.pvsm.ru -

Разработка приложений под Windows 8: почему и как

image [1]Последние 5-7 лет мы все наблюдаем явление, которое аналитики называют консьюмеризацией ИТ. Не вдаваясь в историю и подробности этого явления, характерного не только ИТ-отрасли, стоит отметить главное – именно «консьюмеры» сегодня создают львиную долю пресловутой добавленной стоимости – иногда своим большим числом, иногда – способностью и желанием переплачивать за новинки и вообще интересные идеи.
Операционная система Windows, получившая тотальное распространение на волне консьюмеризации середины девяностых годов, планомерно развивалась до середины «нулевых», когда персонализация вычислений получила новый мощный толчок – настоящую мобильность и доступность.

Одновременно с этим, с подачи Apple и просто в силу удешевления производства соответствующих экранов, огромную популярность стал завоевывать touch-интерфейс, когда пользователь работает с приложениями с помощью прикосновений и жестов, непосредственно касаясь пальцами экрана.
clip_image003[6] [2]
Другим существенным сдвигом, в огромной степени повлиявшим на умы разработчиков приложений, стало следствие тотальной мобилизации вычислений – упрощение приложений. Нет, люди не стали меньше работать со «сложными» приложениями и их производительность не упала. Они стали работать и играть с компьютером (в форме телефона, планшета или лэптопа) на порядок чаще, фактически постоянно, на ходу. Людям стало необходимо сильно большее количество приложений.
clip_image005[4] [3]Но, как следствие среды и размера устройств, все эти приложения становились очень простыми, чаще всего направленными на потребление контента или игру. Другими словами, без уменьшения спроса на приложения для созидания, появилась огромная, существенно большая потребность в приложениях для потребления.
Еще одним характерным явлением стала популярность магазинов приложений. Эта простая идея решила две важнейшие задачи: для пользователя – где взять приложение, для разработчика – где его продавать. При всей простоте идеи, много лет так называемый «канал продаж» был головной болью разработчиков консьюмерских приложений. Это как раз тот случай, когда прямые указания, где покупать и где продавать, делают путь от разработчика к покупателю самым коротким. И, конечно же, немаловажным фактором успеха современных магазинов приложений стала простота, с которой индивидуальные разработчики или небольшие команды могут размещать свои творения для продажи. Это, кстати, одно из немногих отличий магазинов приложений от классического ритейла.
Каждый из нас сегодня, работая с Visual Studio, AutoCAD, Photoshop, Excel или 1C, выполняет для мира производителей ПО и компьютеров ту же задачу, что и 15-20 лет назад – покупает «дом и хлеб». Беря в руки смартфон или планшет, вы становитесь покупателем «сникерсов и орбитов», то есть товаров или с ощутимо более высокой оборачиваемостью или, а чаще «и», с большей добавленной стоимостью.
clip_image007[4] [4]Разработчики Windows, еще задолго до появления iPad, начали проект по разработке нового поколения флагманской операционной системы, где решались 3 задачи:
1. Увеличение времени автономной работы тремя путями – общей оптимизацией, переносом на другие архитектуры (ARM) и, наконец, выработкой правил для разработчиков, когда приложение минимизирует потребляемые ресурсы.
2. Оптимизация под touch-интерфейс.
3. Создание экосистемы по продаже и продвижению приложений.
В результате начала выкристаллизовываться новая Windows, обещающая стать самым существенным сдвигом в парадигме операционных систем от Microsoft и, одновременно, самым рискованным. Со времен Windows 95 мы не предлагали столь кардинальных изменений для разработчиков и пользователей. А учитывая огромную распространенность Windows, сегодняшние изменения – самые большие в истории.
Одновременно с этим, Windows 8 – самая большая в истории возможность для разработчиков. Ведь, у каждого пользователя Windows появляется Windows Store – магазин приложений, который является основным (а в некоторых случаях – единственным) источников приложений для его компьютера, будь то десктоп, лэптоп или планшет. Экономика Windows 8 – хорошая тема для отдельной статьи. А сейчас самое время перейти к разработке приложений.
Если вы еще не загрузили Windows 8 Release Preview и Visual Studio 2012 RC, сейчас самое время поставить их на закачку. Windows 8 можно загрузить отсюда [5], а Visual Studio 2012 RC доступен здесь [6]. Для разработки под Windows 8 вам необходима сама Windows 8.

Что такое Metro

Основные изменения для пользователя и разработчика в Windows 8 можно описать одним словом – METRO. Этот термин включает в себя две новых концепции: Windows Runtime (WinRT) и Metro UI.
Говоря “metro-приложения”, мы подразумеваем не только новый интерфейс, но и новую платформу разработки. Это важно.
Что же представляет собой приложение в стиле metro. Если кратко, то это сплав новой парадигмы интерфейса, нового эффективного API и соответствующей платформы разработки, плюс интеграция с системой и другими приложениями.

У приложений имеется одно окно с поддержкой нескольких представлений

В отличие от классических приложений приложения в стиле Metro содержат одно окно без хрома, по умолчанию занимающее весь экран, чтобы пользователя не отвлекали лишние детали.
clip_image008[4] [7]
Приложение в стиле Metro может поддерживать различные компоновки и представления, чтобы обеспечить динамичное и удобное обслуживание пользователя при различных параметрах конструкции и размерах экрана устройств.
clip_image009[4] [8]

Приложения позволяют использовать сенсорный ввод? ввод с помощью пера, клавиатуры и мыши

Приложения в стиле Metro без проблем работают с различными источниками входных данных, включая перо, мышь, клавиатуру и сенсорный ввод. Для всех этих источников входных данных вы можете использовать единый набор событий. В приложения в стиле Metro включается набор стилей по умолчанию, гарантирующий нормальную работу элементов пользовательского интерфейса с сенсорным вводом.
clip_image003[7] [9]

Приложения могут взаимодействовать друг с другом

Контракты приложений — это возможность для пользователей с легкостью выполнять поиск по нескольким приложениям и обмениваться содержимым между ними. Они расширяют практическую полезность вашего приложения, устраняя необходимость взаимодействия с различными стандартами API для конкретных приложений, когда нужно получить доступ к данным, хранящимся в другом приложении или созданным им. При этом пользователь остается в вашей фирменной среде. Вам не нужно знать что-либо о целевом приложении, кроме объявленной им поддержки целевого контракта, — оно просто работает.

В приложениях доступны новые элементы управления и области интерфейса

Приложения в стиле Metro содержат несколько новых элементов управления, упрощающих организацию эффективного взаимодействия с пользователями. Среди этих элементов можно выделить строку команд (App Bar) приложения и чудо-кнопки (Charms).

Строка команд приложения(App Bar)

Строка команд приложения размещается вне окна приложения и является его основным командным интерфейсом. Используйте строку команд для размещения элементов навигации, команд и инструментов для пользователей. По умолчанию строка команд приложения скрыта и появляется, когда пользователь проводит пальцем в направлении от верхнего или нижнего края экрана. Она является обложкой для содержимого приложения и может быть скрыта пользователем, если он проведет пальцем по краю экрана или будет взаимодействовать с приложением.
clip_image010[4] [10]

Чудо-кнопки (Charms)

Чудо-кнопки — это определенный и согласованный набор кнопок, используемый во всех приложениях для поиска, отправки, подключения, настройки и запуска. Мы считаем, что это основные рабочие сценарии, которые все пользователи хотят выполнять практически в каждом используемом ими приложении. Пользователи могут:

  • Искать содержимое, размещенное в вашем или другом приложении. Кроме того, поиск содержимого в вашем приложении возможен из другого приложения.
  • Делиться содержимым из вашего приложения с контактами или службами.
  • Перейти прямо на Начальный экран.
  • Подключаться к устройствам и отправлять содержимое, выполнять потоковую передачу мультимедиа, а также печатать документы.
  • Использовать параметры для настройки приложения по своему усмотрению.

clip_image011[4] [11]

Приложения используют плитки вместо значков (Tiles vs. Icons)

Когда пользователь устанавливает ваше приложение, оно появляется на начальном экране как плитка. Если коснуться или щелкнуть плитку, приложение будет запущено.
clip_image012[4] [12]
Приложение может предоставлять содержимое с помощью плитки, даже когда не работает. Используя динамические плитки (Live Tiles), приложение способно выводить на экран полезные данные в краткой форме при минимальном расходе заряда батареи устройства.
Приложение может настроить систему для периодического запроса обновлений в веб-службе вне зависимости от того, работает ли оно. Кроме того, в приложениях доступна настройка служб push-уведомлений Windows (WNS), чтобы отправлять сообщения напрямую из веб-службы в динамическую плитку.
clip_image013[4] [13]

Написание приложений на знакомом разработчику языке

Вы можете создавать приложения в стиле Metro на языках, которые лучше всего знаете, например на JavaScript, C#, Visual Basic или C++. Более того, можно создавать компоненты на одном языке и использовать их в приложении, написанном на другом языке программирования.

Продажа приложений через Магазин Windows

Главный источник приложений в стиле Metro – Windows Store. Вы создаете приложение, указываете цену, а Магазин Windows предложит ваше приложение на мировом рынке более чем на 100 языках.
clip_image014[4] [14]

WinRT

До недавнего времени разработчики под Windows использовали две основных группы API: native через Win32 API и managed через .NET Framework. При этом, вторая группа постепенно развивалась, получая различные модели создания пользовательского интерфейса, работы с данными и сервисами, построения исходного кода и архитектуры приложений и так далее.
Между тем, сама Windows – то есть Win32 API получала не так много настоящих толчков к развитию базовой модели разработки. Пожалуй, последним существенным явлением был COM. Все эти годы сами компьютеры не стояли на месте. Появлялись всевозможные сенсоры, сетевые устройства (включая 3G/LTE и т.п.), камеры, чувствительные к прикосновениям экраны. Наконец, энергопотребление становилось все более важным.
Таким образом, создавая новую Windows, мы понимали, что необходимо разработать и новый API, который будучи родным (native) для операционной системы, станет отвечать неким минимальным требованиям и веяниям времени. В результате родился Windows Runtime (WinRT).
Что несет с собой WinRT:
1. Это native API, работающий вместе с оптимизированным COM API. При этом возможна работа manage-сред поверх WinRT (и .NET Framework в Windows 8 – тому пример).
2. Это объектно-ориентированный API, включающий универсальный формат метаданных типов.
3. WinRT включает поддержку многих современных свойств персональных компьютеров (сенсоры, камеры и т.п.). а энергосбережение является тут чрезвычайно важным.
4. Это языконезависимый API, изначально поддерживающий различные модели:
a. С++
b. .NET Framework с C# и Visual Basic
c. HTML5 и JavaScript
5. Современная декларативная модель разработки интерфейсов на XAML или HTML5 стала частью Windows API, а не надстройкой над ним.
В результате приложения под Windows разделились на 2 группы:
1. Классические desktop-приложения.
2. Новые metro-приложения.
clip_image016[4] [15]
Сам WinRT, помимо, собственно функционала, отвечающего за выполнение тех или иных функций, получил ряд важных компонентов.
clip_image018[4] [16]
Этими компонентами стали:
1. Подсистема метаданных и языковых проекций.
Благодаря ей, компоненты, написанные на разных языках программирования, могут вызывать друг друга.
2. Брокеры. Эти компоненты несут две важные функции:
a. Поддержка обмена данными между приложениями. Например, в тех случаях, когда вы хотите отправить данные из какого-то приложения через почтовый клиент.
b. Защита некоторых важных вызовов через механизм capabilities и явных разрешений. Например, если приложение захочет использовать камеру, система сперва спросит у пользователя, допускает ли он это. Аналогично и, например, с GPS – приложение должно обозначить такую потребность еще на этапе разработки, плюс пользователь может явно разрешить или запретить ему использование информации о местоположении.
Есть также еще две важные части Windows API, доступные и используемые metro-приложениями:
1. Application Model и Windows Store API.
Эта группа управляет важными составляющими приложения:
a. Составом компонентов.
b. Возможностями (capabilities), затрагивающим безопасность и функционирование системы, такими как, доступ к местоположению, файловой системе, сети, идентификации пользователя, всевозможным точкам интеграции с системой и так далее.
c. Взаимодействием с Windows Store и информацией о приложении, которое, как мы уже знаем, в подавляющем большинстве случаев, будет установлено именно оттуда.
2. DirectX [17] и подмножество Win32 и COM [18] API, доступные для компонентов и приложений, разрабатываемых на C++.
Они необходимы с одной стороны разработчикам игр и мультимедиа-приложений (DirectX), с другой стороны – для портирования существующего кода (подмножество Win32).

Модель выполнения приложений в WinRT

Отдельно необходимо остановиться на модели выполнения или, как еще можно сказать, жизни приложения в Windows 8 и WinRT.
Цикл жизни metro-приложения существенно отличается от такового для приложений классических. Его можно разделить на три группы:
1. Установка.
2. Выполнение.
3. Удаление.
С первым и третьим все более-менее понятно, хотя Windows Store и тут дает дополнительные возможности. Но вот цикл выполнения сам по себе требует отдельного внимания.
Стадии выполнения приложения точно описываются перечислением ApplicationExecutionState [19].
clip_image019[4] [20]
Говоря проще, если пользователь не работает прямо сейчас с вашим приложением, не работает и само приложение. Оно либо спит (suspended) либо и вовсе выгружается. Подробнее об этом написано в статье Application lifecycle [21].
Однако, не стоит думать, что в WinRT невозможно выполнение фоновых процессов. Два замечательных документа очень хорошо описывают подходы и правила разработки фоновых процессов.

Introduction to Background Tasks [22] This paper describes the programming model to create background tasks, resource management policies for background tasks, and built-in user controls that allow the user to control per-app background task activity by using lock screen personalization.
Background Networking [23] This paper provides information about an app lifecycle management model for apps that require real-time connectivity between the client and server. To address the lifecycle limitations for real-time connected apps, Windows 8 introduces a new set of APIs that enable users to build always-reachable apps.

Файловая система и данные приложений в WinRT

Еще одна особенность WinRT – порядок работы с файлами и данными. Для начала следует сказать, что в общем случае данные metro-приложений изолированы друг от друга. Это обеспечивает стабильность и безопасность как самих приложений, так и системы в целом.
Подробнее об данных приложений можно прочитать здесь [24], но суть состоит в том, что у всякого metro-приложения есть три типа файлового хранилища:
1. Локальное.
2. Временно.
3. Переносимое (roaming).
Первый тип, как следует из названия, содержит файлы и папки, которые приложение создает на локальном компьютере в специальной области, выделенной этому приложению.
Второй тип очень похож на первый с тем исключением, что как только приложение выгружается, система может в любой момент удалить такие временные данные.
Третий тип хранилища – roaming, представляет собой файлы и папки синхронизируемые между всеми устройствами с Windows 8, где зарегистрировался тот же пользователь, который в вашем приложении изначально создал данные. Пользователь определяется по Microsoft ID, который также все знают под именем LiveID.

Файловая система и разрешения

Все это не означает, что приложение не может получить доступ к файлам, находящимся на всем остальном пространстве дисков устройства. Для этого предназначено два механизма: File Pickers [25] и Libraries [26].
Первый механизм позволяет получить доступ к файлам через запрос пользователя на выбор таких файлов. Он их явно выбирает, давая таким образом доступ к этим файлам вашему приложению.
Второй механизм дает прямой доступ к файлам библиотек документов Windows: Documents, Pictures, Videos и т.д. Этот подход требует соблюдения двух условий:
1. Декларации [27] того факта, что вы хотите получить доступ к библиотекам. Декларация производится еще на этапе разработки приложения. Устанавливая его из Windows Store, пользователь видит, к каким библиотекам приложение будет иметь доступ.
2. Для некоторых типов библиотек (Documents и файлов на внешних устройствах) необходимо определить ассоциацию приложения с типами файлов. И именно к файлам этих типов оно получит доступ.
Подробнее обо все этом можно почитать здесь [26].

Манифест приложения и capabilities

Выше в тексте уже неоднократно упоминались capabilities (характеристик) в контексте декларации приложением некоторых действий, которые оно планирует совершать в системе.
Действительно, схема пакета приложения важна сама по себе, а файл манифеста как ее часть, говорит очень много о функционале программы.
Подробнее об это можно почитать тут [28]. Также посмотреть и послушать эту сессию [29] конференции BUILD.

Дальнейшие шаги

В этой статье дан обзор основных идей Windows 8:
· Зачем она создавалась именно такой
· Что такое Metro и Windows Runtime (WinRT)
· Каковы особенности функционирования приложений в WinRT
Теперь самое время запустить Visual Studio 2012 в уже установленной Windows 8 и попробовать написать свое первое приложение.
Для этого есть отличное пошаговое руководство «Разработка приложений в стиле Metro с помощью Visual Studio 2012 RC [30]».
clip_image020[4] [31]
Очень важно правильно спланировать приложение – его интерфейс, схему организации, возможности по интеграции с системой и т.д. В этом вам поможет «Руководство по планированию приложений в стиле Metro [32]»

Полезные ссылки

Автор: VoldemarRinger


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/11285

Ссылки в тексте:

[1] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/8080.image_5F00_151BC7DA.png

[2] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/8308.clip_5F00_image0036_5F00_1EB41043.png

[3] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/2134.clip_5F00_image0054_5F00_436527BA.png

[4] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-43/8306.Photo_2D00_0052.jpg

[5] отсюда: http://windows.microsoft.com/en-US/windows-8/download

[6] здесь: http://www.microsoft.com/visualstudio/11/en-us/downloads

[7] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/4101.clip_5F00_image0084_5F00_24125B1A.png

[8] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/4201.clip_5F00_image0094_5F00_52A863FC.png

[9] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/0486.clip_5F00_image0037_5F00_69F3686D.png

[10] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/8420.clip_5F00_image0104_5F00_23960258.png

[11] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/4113.clip_5F00_image0114_5F00_0CF3B411.png

[12] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/3036.clip_5F00_image0124_5F00_243EB882.png

[13] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/5773.clip_5F00_image0134_5F00_5C308698.png

[14] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/4520.clip_5F00_image0144_5F00_6464AC2F.png

[15] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/7752.clip_5F00_image0164_5F00_5FBE7BA8.jpg

[16] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/8838.clip_5F00_image0184_5F00_5C5CE400.jpg

[17] DirectX: http://msdncp.redmond.corp.microsoft.com/ru-ru/library/windows/apps/jj126138.aspx

[18] подмножество Win32 и COM: http://msdncp.redmond.corp.microsoft.com/ru-ru/library/windows/apps/br205757

[19] ApplicationExecutionState: http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.activation.applicationexecutionstate.aspx

[20] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/7367.clip_5F00_image0194_5F00_4E3DF503.png

[21] Application lifecycle: http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx

[22] Introduction to Background Tasks : http://go.microsoft.com/fwlink/?LinkId=227329

[23] Background Networking: http://go.microsoft.com/fwlink/?LinkId=241645

[24] здесь: http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx

[25] File Pickers: http://msdn.microsoft.com/ru-ru/library/windows/apps/xaml/hh771180.aspx

[26] Libraries: http://msdn.microsoft.com/en-us/library/windows/apps/hh967755.aspx

[27] Декларации: http://msdn.microsoft.com/en-us/library/windows/apps/hh464936.aspx

[28] тут: http://msdn.microsoft.com/en-us/library/windows/apps/hh464929.aspx

[29] эту сессию: http://channel9.msdn.com/events/BUILD/BUILD2011/APP-398T

[30] Разработка приложений в стиле Metro с помощью Visual Studio 2012 RC: http://msdn.microsoft.com/ru-ru/library/windows/apps/br211384.aspx

[31] Image: http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-88-92-metablogapi/2313.clip_5F00_image0204_5F00_1714670A.png

[32] Руководство по планированию приложений в стиле Metro: http://msdn.microsoft.com/ru-ru/library/windows/apps/hh465427

[33] Создание вашего первого приложения в стиле Metro на JavaScript: http://msdn.microsoft.com/ru-ru/library/windows/apps/br211385.aspx

[34] Создание вашего первого приложения в стиле Metro на C# или Visual Basic: http://msdn.microsoft.com/ru-ru/library/windows/apps/br211380.aspx

[35] Создание вашего первого приложения в стиле Metro на C++: http://msdn.microsoft.com/ru-ru/library/windows/apps/hh465045.aspx

[36] Доклады по разработке приложений для windows 8 на TechDays: http://www.techdays.ru/videos/Windows%208

[37] Доклады с конференции BUILD: http://www.buildwindows.com/