Windows 7 для разработчиков

6 ноябрь, 2009 - 12:46Вячеслав Колдовский

ОС – это в первую очередь платформа для приложений, и Microsoft, пожалуй, лучше кого бы то ни было знает, как сделать ее привлекательной для сторонних разработчиков, ведь именно это является краеугольным камнем успеха Windows. С некоторой долей условности Windows 7 можно представить как исправление ошибок Windows Vista, соответственно, обе ОС весьма схожи по внутреннему устройству. Однако по общему уровню новаций, особенно в части пользовательского интерфейса, Windows 7 сравнима разве что с Windows 95 (пришедшей на смену Windows 3.11), и ее API стало, по сути, отражением возможностей, доступных конечному пользователю.

Программирование Superbar

Пожалуй, самым радикальным нововведением пользовательского интерфейса Windows 7 стала новая «Панель Задач», получившая неофициальное название Superbar. Однако, как никогда ранее, функциональность этого элемента в значительной мере требует поддержки со стороны приложений, в противном случае многие удобные функции окажутся попросту недоступны. Прежде всего это касается вывода дополнительной информации на значки «Панели Задач», площадь которых в настройках по умолчанию увеличилась в четыре раза, что позволило сделать их гораздо информативнее. В частности, появилась возможность выводить индикатор прогресса выполнения продолжительных операций, произвольные графические изображения, а также осуществлять цветовую индикацию состояния приложения. Отдельные программы, использующие стандартные системные функции вроде копирования файлов или загрузки из Интернета, часть из них (например, индикации) получат автоматически, для всех остальных об этом должны побеспокоиться сами разработчики.

Windows 7 для разработчиков
Пример Jump List – команды, доступные из «Панели Задач» и меню «Пуск», призванные увеличить производительность конечных пользователей

Кроме всего прочего, приложение может управлять миниатюрами, которые отображаются («всплывают») при наведении курсора мыши на значок. По умолчанию миниатюра формируется как уменьшенная копия окна исполняющейся программы, если же таковых много, то для каждого отдельно. Последнее, однако, не относится к однооконным многодокументным приложениям, обеспечивающим переключение между несколькими рабочими областями внутри родительского окна, – соответственно, будет невозможно быстро переключаться на нужный документ. Эту и другие подобные ситуации должны исправить разработчики, как это, в частности, реализовано в Internet Explorer 8: каждая (до разумного предела) открытая страница выводится отдельной миниатюрой, щелчок на которой выведет на передний план сразу нужный сайт. На миниатюрах также могут помещаться управляющие кнопки, реакция на их нажатие программируется произвольным образом. Опять же, пример можно найти среди программ из стандартного состава Windows 7, скажем, Windows Media Player. Это дает возможность не только контролировать работу, но и управлять поведением приложений, не переключаясь на них, непосредственно на «Панели Задач». А следствием, очевидно, должно стать повышение производительности работы пользователей новой ОС.

Значительно усовершенствовано и контекстное меню значков «Панели Задач», получившее даже собственное название – Jump List (обратиться к нему также можно через кнопку «Пуск»). В предыдущих версиях Windows здесь размещались только системные функции, по сути, дублирующие действия управляющих кнопок окна, находящихся в правой верхней его части и позволяющие перемещать окно и изменять его размер (а для консольных приложений – еще и работать с буфером обмена). Кстати, это меню сохранилось и в Windows 7 – оно вызывается щелчком правой кнопки мыши при нажатой клавише Shift. Новое же является динамическим и формируется из списков задач, уникальных для каждого приложения. Для программ, использующих стандартный API управления историей документов, один из таких списков, содержащий перечень последних открытых файлов и позволяющий легко открыть их заново, будет сформирован автоматически. К примеру, это справедливо для приложений Microsoft Office 2007, которые, естественно, не адаптированы к новым возможностям Windows 7. Разработчики же вольны расширять Jump List по своему усмотрению, хватило бы фантазии. Хорошим образцом послужат многие стандартные приложения Windows 7, в первую очередь, конечно, все те же Windows Media Player и Internet Explorer 8.

Поддержка жестов и перьевого ввода

Windows 7 для разработчиков
С помощью стандартных жестов Windows 7 сторонние разработчики могут расширить возможности управления своими приложениями

Поддержка жестов с использованием технологии Multitouch (т. е. обработки множественных одновременных прикосновений к сенсорному экрану) – одна из наиболее активно рекламируемых новых функций Windows 7. И хотя соответствующее оборудование пока еще не получило широкого распространения, разработчики приложений уже вооружены всем необходимым для того, чтобы раскрыть его потенциал даже единичным счастливчикам. Впрочем, успех iPhone/iPod Touch, видимо, говорит о большом будущем данной технологии.

С точки зрения разработчика, реализация Multitouch осуществляется через API Windows Touch, который обрабатывает не только множественные, но и единичные прикосновения к чувствительной области экрана, а также через Gesture API, распознающий стандартные жесты. В зависимости от потребностей, диктуемых конкретной задачей, программист может ограничиться высокоуровневой интерпретацией стандартных жестов пользователя (что предпочтительнее) или получить полный контроль над обработкой сообщений (WM_GESTURE или WM_TOUCH), поступающих от считывающего ввод устройства, – это может понадобиться для нестандартных решений. Кроме того, Windows 7 предоставляет специальный механизм, рассчитывающий траекторию перемещения объектов с учетом инерции (Inertia API), использование которого необходимо для того, чтобы отзыв на ввод пользователя не отличался от реакции обычных приложений. Обратная совместимость также предусмотрена, и если приложение не обеспечивает поддержку жестов, то на их основе будут просто эмулироваться сообщения от мыши (разумеется, только в тех случаях, когда это возможно).

Дальнейшему усовершенствованию подверглись и встроенные в систему механизмы распознавания рукописного ввода, для которых декларируется существенное улучшение качества работы, в том числе за счет адаптации к особенностям почерка пользователя. Весьма интересным нововведением является возможность распознавания математических формул, доступная через элемент управления Math Input Control.

Поддержка анимации

Создание эффектного пользовательского интерфейса значительно упрощается благодаря Windows 7 Animation Manager – платформе для реализации интерактивной анимации в приложениях, примерами чего могут служить такие стандартные компоненты ОС, как «Панель Задач» и апплет «Увеличительное Стекло». Схожей функциональностью на системном уровне под названием Core Animation обладает и Mac OS X начиная с версии 10.5, хотя первенство все же за Microsoft, поскольку поддержка анимации в массовых ОС появилась еще в библиотеке для построения пользовательского интерфейса WPF в Windows Vista (ko-online.com.ua/26590). Поскольку подобная функциональность в Windows уже была (к тому же она не ограничивается Windows Vista, так как WPF в составе .NET Framework 3.0 может быть установлена и на Windows XP), напрашивается вопрос: а зачем понадобилось изобретать велосипед? Однако мотивы создателей Windows 7 становятся понятны, если учесть, что приложения для Windows разрабатывают не только сторонники .NET Framework, и даже для них применение тяжеловесной WPF для реализации одной-двух функций не всегда оправданно. Таким образом, заботу о Windows-разработчиках, которым больше не придется прибегать к поиску сторонних библиотек для реализации анимации, следует только приветствовать.

Технически Windows 7 Animation Manager представляет собой доступную через COM API библиотеку математических функций, посредством которых можно реализовать самые сложные алгоритмы анимации, в том числе с учетом возможных конфликтов, когда различные алгоритмы применяются к одному объекту одновременно или в определенной последовательности. Библиотека весьма гибка в плане расширения, поддерживает пользовательские функции и не привязана к какому-либо конкретному движку графического рендеринга – выбор последнего целиком зависит от разработчика. Особую привлекательность она получает совместно с поддержкой Multitouch, позволяя создавать интерактивные приложения с привлекательными графическими эффектами.

Встроенный ленточный интерфейс

Ленточный (Ribbon) интерфейс, призванный заменить стандартное меню и впервые появившийся в Microsoft Office 2007, относится к самым интересным инновациям в области пользовательского интерфейса за последние годы. И хотя нельзя сказать, что адаптация к нему консервативных пользователей прошла без сучка и задоринки, в целом идеи, стоящие за лентами, оказались довольно удачными, и сторонние разработчики отнеслись к ним с энтузиазмом. Но в отличие от классической системы меню, поддержки ленточного интерфейса на уровне ОС до настоящего времени предусмотрено не было, и создателям приложений приходилось самим программировать соответствующие элементы управления (или искать чужие готовые). В итоге как внешний вид, так и поведение приложений с ленточным интерфейсом от сторонних разработчиков могли отличаться, что не лучшим образом сказывалось на восприятии их пользователями.

Начиная с Windows 7 ленточный интерфейс становится таким же стандартным элементом управления, как и система меню. Даже некоторые встроенные приложения Windows 7 были модернизированы с учетом этого нововведения, скажем, Paint или WordPad. Тем не менее следует отметить, что как по внешнему виду, так и по поведению Windows-лента несколько отличается от аналогичного элемента управления в Microsoft Office 2007: выглядит она менее перегруженной дополнительными линиями и иначе реагирует на изменение размеров приложения – новый элемент управления гораздо более приспособлен к использованию с экранами различных диагоналей и разрешений.

Вероятно, стоит обратить внимание, что теперь в арсенале Microsoft имеется несколько реализаций ленточного интерфейса: помимо оригинальной (в Microsoft Office) и новоявленной в Windows 7, есть еще и третья, доступная через MFC, и четвертая – в WPF. К счастью, чтобы не усложнять жизнь, все они после выхода Windows 7 должны поддерживать единый внешний вид и поведение (так называемый Windows visual style).

Улучшенная работа с графикой и мультимедиа

По информации создателей Windows 7, на исследовательском этапе работ над системой в процессе изучения предпочтений пользователей было установлено, что всего лишь около 55% из них работают с максимальным разрешением монитора, а прочие либо используют нестандартное разрешение по ошибке, либо вынуждены его снизить для того, чтобы сделать отображаемые на экране объекты крупнее. Поскольку нестандартное разрешение для современных мониторов, с фиксированной сеткой элементов весьма негативно сказывается на результирующем изображении, одна из приоритетных задач при создании новой версии Windows состояла в максимальном задействовании их аппаратных возможностей. Ведь если пользователи, которые работают с пониженным разрешением дисплея по ошибке, являются скорее заложниками собственной компьютерной малограмотности, то тот, кто выбирает его самостоятельно, нередко сталкивается с некорректным отображением элементов приложений при увеличении масштаба текста на системном уровне. Для решения этой проблемы в Windows 7 предпринято несколько важных инициатив, в частности дальнейшее совершенствование представленной в Windows Vista технологии DPI Virtualization, а также автоматическое включение режима High DPI.

Поскольку начиная с Windows Vista при включенном Aero окна исполняющихся приложений под управлением DWM (Desktop Window Manager) сперва отрисовываются в отдельных областях памяти, а затем объединяются в общее представление, на первом этапе их можно масштабировать в зависимости от индивидуальных настроек. Именно в этом и состоит суть технологии DPI Virtualization, позволяющей применять отдельные настройки для каждой программы, что особенно полезно для унаследованных приложений, которые не умеют корректно обрабатывать плавное изменение масштаба. Для всех новых программ, создаваемых для Windows Vista и Windows 7, следует явно назначать размеры и размещение элементов, считывая текущее значение масштаба в настройках системы, а также декларировать с помощью манифеста их умение работать с произвольным значением масштаба (DPI-Aware) – такое приложение не будет переводиться в режим DPI Virtualization, активируемый автоматически при значениях параметра DPI в 144 и выше.

Режим High DPI в Windows 7 также активируется автоматически при обнаружении дисплея с высоким разрешением, вследствие чего устройство будет работать в оптимальном режиме, но размер текста увеличится, и менять настройки скорее всего не придется. Помимо прочего, проделана значительная работа над тем, чтобы стандартные приложения и диалоговые окна Windows 7 хорошо выглядели при различных значениях DPI, кстати, аналогичные усовершенствования в этом направлении имеются и в Internet Explorer 8. К тому же в Windows 7 настройка DPI производится индивидуально для каждого пользователя, а не на общем системном уровне, как было ранее, и для нее не требуется перезагрузка – достаточно осуществить повторный вход в систему.

Перечень нововведений в последней версии самого популярного графического API DirectX 11 заслуживает написания отдельной статьи. Не вдаваясь в детали, отметим поддержку современного оборудования, многопоточного рендеринга, Shader Model 5.0, геометрических шейдеров («тесселяции»), усовершенствованного сжатия текстур, а также многообещающих вычислительных шейдеров, призванных расширить сферу применения GPU на задачи, отличные от собственно рендеринга.

Возможности работы с мультимедиа посредством платформы Windows Media Foundation, впервые представленной в Windows Vista, дополнены несколькими высокоуровневыми API, предназначенными для упрощения реализации специфических функций, а также улучшающими поддержку распространенных видео- и аудиоформатов – теперь для этого не потребуются сторонние библиотеки кода.

Работа с файлами и данными

Windows 7 для разработчиков
Подключение федеративного поиска в корпоративной инфраструктуре реализуется в три несложных этапа

Весьма удачное новшество Windows 7, призванное повысить удобство навигации по файловой системе, – концепция библиотеки (Library) – определенный пользователем набор папок, который компонуется в единое представление. Эволюционно библиотеки являются дальнейшим развитием понятия «папка», и теперь не ограничиваются иерархией одного физического носителя – в любую из них можно включать произвольные папки, находящиеся на произвольных дисках, в том числе на удаленных компьютерах. И если для пользователя библиотека мало чем отличается от стандартной папки, то разработчику следует принять во внимание некоторые нюансы программирования с учетом библиотек. В простейшем случае приложение может «не знать» о существовании библиотек, при использовании стандартных системных диалоговых окон открытия/сохранения файла, даже если пользователь обращается к библиотеке, выбранные имена будут автоматически преобразованы в реальный путь. Проблемы могут возникнуть, когда файл из библиотеки вводится вручную, а приложение напрямую пытается открыть его: в таком случае возникнет ошибка, поскольку указанный пользователем путь не существует в реальной файловой системе. Поэтому для полноценного взаимодействия с библиотеками необходим новый COM-интерфейс IShellLibrary: он дает возможность не только обращаться к объектам в библиотеках, но и управлять их содержимым на уровне папок, а также отслеживать изменения.

Федеративный поиск (Federated Search) – механизм, посредством которого Windows 7 позволяет находить информацию за пределами ПК с помощью специальных провайдеров. Эта функция особенно интересна для корпоративных пользователей, которые хранят информацию централизованно на серверах, но задействуют для этого различные сервисы, что усложняет поиск. Благодаря реализации провайдера для каждого из сервисов поиск в них можно осуществлять, используя обычные локальные инструменты. Эта технология базируется на открытой инициативе Open Search (opensearch.org), что дает основания надеяться на появление в ближайшее время провайдеров для самых разных сервисов и хранилищ данных.

Sensor and Location Platform

Windows 7 для разработчиков
Sensor and Location Platform – новая стандартизированная построенная по модульному принципу платформа для приложений, использующих сенсоры и датчики местоположения

Стремясь расширить сферу применения Windows 7, Microsoft представила платформу для управления сенсорами различных типов: датчиками температуры, освещенности и движения, акселерометрами, компасами, погодными станциями, считывателями RFID, устройствами, определяющими местоположение, такими как GPS, а также многими другими – доступен практически весь спектр оборудования, которое можно подключить к ПК. Если раньше поддержку сенсоров обеспечивали их разработчики или поставщики готовой аппаратуры – в той мере, в которой считали нужным, – то Sensor and Location Platform стандартизует интерфейсы взаимодействия прикладных приложений и драйверов. Таким образом, после выхода Windows 7 можно ожидать массового распространения всевозможных устройств и приложений, их использующих.

Платформа предоставляет два интерфейса – Sensor API и Location API – соответственно, для взаимодействия с сенсорами и устройствами определения местоположения. Архитектура является модульной, а драйверы устройств для нее основываются на модели Windows Portable Devices (WPD), которая основана на стандартной инфраструктуре Windows User Mode Driver Framework (UMDF). Управление доступными устройствами осуществляется через специальный апплет «Панели Управления».

Борьба за качество

Усилия, которые Microsoft прилагает в последние годы к совершенствованию своих ОС и использующих их прикладных программ, заслуживают самой высокой оценки. В Windows 7 получили дальнейшее развитие многие инициативы, направленные на увеличение надежности внутренних компонентов и приложений, а также созданных сторонними разработчиками.

Механизм Windows Error Reporting и служба Winqual, представленные в Windows Vista, были усовершенствованны с учетом накопленного опыта эксплуатации. Как и ранее, для их использования требуется сертификат VeriSign, которым разработчики подписывают свои приложения и драйверы с тем, чтобы отчеты о проблемах в их работе попадали в Winqual (сама служба для разработчиков бесплатна). Для устранения ошибки предлагается задействовать Windows Troubleshooting Platform (WTP) – механизм распространения заплаток и советов в ответ на отчеты об ошибках. WTP интегрирована с Windows 7 Solution Center – централизованным порталом поддержки пользователей Windows 7.

Избежать неприятностей от случайных сбоев в работе ПО поможет Restart Manager – технология, посредством которой выполняется автоматический перезапуск приложения после сбоя. При возникновении нештатной ситуации Windows 7 перезапустит программу и попытается восстановить информацию, с которой пользователь работал. Restart Manager также может пригодиться при выполнении обновлений приложений и компонентов ОС без перезагрузки, а если таковая все же необходима, он позволяет перезапустить приложение и автоматически вернуть его в последнее состояние.

Инструменты

Обзор возможностей ОС для разработчиков был бы неполным без рассмотрения соответствующих инструментов, библиотек и инструкций. Основным источником информации для Windows-программистов, безусловно, является официальный сайт сообщества разработчиков, использующих технологии Microsoft, MSDN.com. На нем же размещен документ Windows 7 Developer Guide, который содержит перечень всех новых API со ссылками на соответствующую документацию. Основным инструментом для создания приложений для Windows 7 должна стать Microsoft Visual Studio 2010 (ko-online.com.ua/44078) – выход ее финальной версии ожидается до конца года. Впрочем, прежние релизы этой IDE от Microsoft также полностью поддерживают новую ОС, достаточно только установить Windows 7 SDK, доступный на сайте microsoft.com. Для .NET-разработчиков хорошей новостью является то, что вместе с Windows 7 поставляется наиболее актуальная на сегодня версия платформы .NET Framework 3.5 SP1 – таким образом, создавая для нее приложения, можно быть уверенным в том, что клиенту не потребуется загрузка и установка дополнительных компонентов. Кроме того, с сайта MSDN.com можно загрузить .NET-обертку с примерами кода для всех новых API Windows 7 (code.msdn.com/WindowsAPICodePack), а также руководство по совместимости приложений с Windows 7 и Windows Server 2008 R2 (code.msdn.microsoft.com/Windows7AppQuality). И, безусловно, особую ценность представляет доступный на основном сайте компании Windows 7 Training Kit for Developers, содержащий множество заданий и примеров кода по новым функциям ОС.

Заключение

Таким образом, несмотря на прямое родство с Windows Vista и близость архитектурных решений обеих ОС, Windows 7 действительно содержит огромное число улучшений и новинок, что не преминуло сказаться и на требованиях к разработке приложений для нее. Хотя и можно положиться на традиционную обратную совместимость, в том числе на базе режима виртуализации Windows XP Mode (доступного, впрочем, только для старших редакций), для максимально бесшовной интеграции приложений с Windows 7 сторонним разработчикам как минимум нужно обеспечить поддержку Superbar и управления жестами, режима DPI-Aware, библиотек, а при необходимости – и заменить сторонние ленты встроенными, рассмотреть возможности использования анимации, Sensor and Location Platform, вычислительных шейдеров и инструментов обеспечения качества приложений. Кому-то приведенный перечень задач покажется избыточным, однако следует понимать, что качественная поддержка ОС состоит не только в обеспечении беспроблемной работы в ней приложения, но и в максимальном раскрытии ее потенциала в области повышения производительности конечных пользователей. Microsoft предоставила для этого много возможностей, теперь очередь за разработчиками.

Сайт автора: koldovsky.com