Microsoft Expression 3
Часть 1
Технология Windows Presentation Foundation
Взаимодействие с другими технологиями
Развитие Windows Presentation Foundation
Введение
Произошедшее в последние годы существенное расширение возможностей технологий, входящих в состав Microsoft .NET Framework, таких как Windows Presentation Foundation и Silverlight, привело к возникновению двух проблем: во-первых, средства разработки, традиционно предоставляемые Microsoft в виде семейства продуктов Visual Studio, потребовалось значительно переработать для поддержки проектирования, моделирования и дизайна интерфейсов и поддержки мультимедийных форматов, а во-вторых, упомянутые технологии увеличили число специалистов, задействованных в процессе разработки приложений на платформе .NET: к традиционным разработчикам и специалистам по тестированию приложений добавились дизайнеры, специалисты по пользовательскому интерфейсу, accesibility, специалисты по работе с графикой, мультимедийными элементами и т.п., которые традиционно использовали в своей работе средства других компаний, часто выполняемые на иных аппаратных и программных платформах.
Вместо того чтобы расширять возможности Microsoft Visual Studio для удовлетворения растущих запросов различных аудиторий, было принято решение реализовать их полноценную поддержку в новом семействе продуктов, получившем название Microsoft Expression, обеспечить базовую поддержку в Microsoft Visual Studio и создать единый формат проекта, который мог бы применяться в обоих продуктах.
Такой подход позволил предоставить и традиционным разработчикам, и новой аудитории набор средств, наиболее эффективно, часто параллельно решающих стоящие перед ними задачи, и синхронизировать свои усилия в рамках работы над одним программным проектом.
Семейство продуктов Microsoft Expression предоставляет в распоряжение специалистов набор средств для дизайна интерфейсов приложений, работающих как на платформе Microsoft Windows, так и в Интернете, обработки широкого спектра мультимедийных форматов, включая наиболее популярные представления графики и видео, а также механизмы интеграции с широким спектром технологий, реализованных на платформе Microsoft .NET для создания традиционных приложений (толстый клиент), вебприложений («тонкий» клиент), вебприложений с богатым интерфейсом для решения различных бизнес-задач (Rich Internet Applications), поддержки потокового видео, различных функций манипуляции с мультимедийной информацией.
В этом обзоре мы познакомимся с технологиями Windows Presentation Foundation и Silverlight, а также с ключевыми возможностями продуктов, входящих в семейство Microsoft Expression 3.
Технология Windows Presentation Foundation
Технология Windows Presentation Foundation (WPF) — это один из ключевых компонентов Microsoft .NET Framework, библиотеки классов компании Microsoft для создания так называемых управляемых приложений на языках программирования C# и Visual Basic .NET. Технология Windows Presentation Foundation представляет собой графическую подсистему для разработки пользовательских интерфейсов Windows-приложений. Созданная для того, чтобы заменить подсистему GDI, технология WPF построена на основе интерфейсов DirectX, обеспечивающих применение современных графических адаптеров, и предоставляет такие расширенные возможности, как прозрачность, градиентная заливка и трансформации.
WPF дает разработчикам обширную программную модель для создания интерфейсов любой сложности и поддерживает концепцию отделения пользовательского интерфейса от бизнес-логики приложения.
Помимо поддержки создания интерфейсных элементов WPF обеспечивает двух- и трехмерную графику, работу с XPS-документами, шрифтами, векторной и растровой графикой, аудио и видео, а также позволяет связывать интерфейсные элементы с источниками данных (data binding).
Технология WPF использует новый язык разметки — XAML, который служит для описания интерфейсных элементов и задания связей между ними. Приложения, созданные на основе WPF, могут быть установлены на компьютерах или выполняться из веббраузера.
Технология Windows Presentation Foundation (ранее известная под кодовым названием Avalon) впервые появилась в составе .NET Framework 3.0, поставляется в Windows 7, Windows Vista, Windows Server 2008, а также доступна для Windows XP SP2 и более поздних версий и Windows Server 2003.
Поддержка WPF реализована в Microsoft Visual Studio 2008 и выше — возможно создание приложений и компонентов, а также расширение функциональности дизайнера (WPF Designer). В состав Microsoft Expression Studio входит продукт Expression Blend, который предоставляет расширенные возможности дизайна интерфейсов Windows-приложений с применением технологии Windows Presentation Foundation.
Далее мы кратко рассмотрим основные возможности технологии Windows Presentation Foundation.
Графические сервисы
Вся графика, включая стандартные интерфейсные элементы, отрисовывается с помощью подсистемы Direct3D. Такой подход позволяет унифицировать использование различных типов графики и обеспечить возможность отображения в одном окне двух- и трехмерной графики, мультимедиа и анимации. Помимо этого применение подсистемы Direct3D позволяет частично перенести вычислительную нагрузку с центрального процессора на графический. Использование подсистемы Direct3D также обеспечивает поддержку векторной графики с масштабированием без потерь, рендеринг трехмерных моделей в двумерных приложениях и отображение двумерных элементов на трехмерных поверхностях.
Расположение элементов
WPF поддерживает гибкую систему расположения элементов, которая позволяет управлять всеми визуальными элементами приложения. Ее ядро использует двухфазовый подход: сначала проводится измерение всех применяемых интерфейсных элементов, а затем — задание их размеров и расположения. Такой процесс является рекурсивным и обеспечивает максимально гибкий подход к размещению элементов на экране. В состав WPF входит ряд элементов, которые могут использоваться для расположения других элементов: StackPanel, WrapPanel, Canvas, UniformGrid, Grid, DockPanel, при этом каждый элемент соотносится с определенным способом размещения элементов. Помимо подсистемы расположения элементов в WPF входит подсистема трансформации, отвечающая за различные преобразования: Matrix, Rotation, Scale, Translate, Skew, которые трансформируются в соответствующий набор инструкций GPU TRANSFORM подсистемы Direct3D.
Шаблоны
В WPF можно задавать внешний вид элементов либо напрямую, либо через шаблоны или стили. Стиль представляет собой набор настроек свойств элемента, которые могут быть применены к элементу изменением одного атрибута. Шаблоны — это механизм для задания альтернативных представлений групп интерфейсных элементов. В состав WPF входит несколько типов шаблонов: ControlTemplate, DataTemplate, HierarchicalDataTemplate и ItemsPanelTemplate.
Связь с данными
В состав WPF входит набор встроенных сервисов для связи с источниками данных, позволяющих разработчикам легко отображать и манипулировать различными данными в Windows-приложениях. Поддерживается три типа связей с данными: единовременная, когда клиентское приложение игнорирует возможные обновления на стороне сервера, однонаправленная, когда клиент потребляет данные в режиме чтения, и двунаправленная, когда клиент может считывать данные с сервера и записывать их на сервер. Для управления представлением данных используются специальные шаблоны, называемые data templates. Набор встроенных компонентов, включенных в состав WPF, таких как кнопка (Button), меню (Menu), таблица (Grid) или список (List Box), поддерживает потребление данных из различных источников, включая LINQ-запросы.
Одна из основных концепций WPF — это логическое разделение элемента и его представления. Шаблон элемента может быть заменен для изменения визуального представления элемента. Поскольку одни элементы могут содержать другие элементы, подход на основе шаблонов позволяет управлять их композицией.
Медиасервисы
WPF включает встроенные средства для создания интерфейсов, содержащих векторные и растровые изображения, аудио и видеоэлементы. Помимо этого поддерживается анимация и рендеринг двух- и трехмерной графики. В состав WPF входит широкий набор двумерных графических примитивов со встроенной поддержкой геометрических изменений и трансформаций; трехмерные возможности включают подмножество функций, предоставляемых подсистемой Direct3D, но WPF обеспечивает тесную интеграцию с пользовательскими интерфейсами, документами и мультимедиа — например средствами WPF можно создавать трехмерные интерфейсы, трехмерные документы и трехмерные мультимедийные элементы. Поддерживаются основные графические форматы: BMP, JPEG, PNG, TIFF, Windows Media Photo, GIF и ICON. Технология WPF может использовать программные интерфейсы Windows Imaging Component (WIC), позволяя разработчикам создавать собственные кодеки для нестандартных графических форматов. По умолчанию WPF поддерживает различные видеоформаты, включая WMV, MPEG и AVI, а за счет применения Windows Media Player компоненты WPF могут использовать все установленные в системе кодеки, расширяя таким образом набор поддерживаемых видеоформатов.
Анимация
WPF поддерживает анимацию на основе таймеров (time-based animation) — в отличие от анимации на основе фреймов (frame-based animation), это обеспечивает единую скорость анимации независимо от производительности системы. Поддерживается низкоуровневая анимация с применением таймеров и высокоуровневая — через специальный класс Animation. Любое свойство WPF-элемента может быть включено в анимацию — для этого требуется лишь регистрация такого свойства, как Dependency Property. Анимационные классы базируются на .NET-типах, например для изменения цвета элемента используется класс ColorAnimation, а для изменения ширины (которая описана как тип Double) — класс DoubleAnimation. Анимации могут быть активированы внешними событиями, в том числе различными пользовательскими активностями.
Эффекты
В WPF поддерживаются различные эффекты с применением класса Effect, который представляет собой эффект Pixel-Shader 2.0 с поддержкой рендеринга средствами графического процессора. Данный класс поддерживает расширяемость за счет добавления собственных эффектов. В состав WPF входят два встроенных эффекта: BlurEffect и DropShadowEffect.
Текст
WPF обеспечивает набор типографических функций, не поддерживаемых на уровне GDI. К ним, помимо поддержки шрифтов TrueType, относится поддержка шрифтов OpenType и OpenType CFF (Compact Font Format). Текст сохраняется в Unicode, что делает его независимым от глобальных и локальных настроек. Подсистема отрисовки текста использует технологию ClearType.
Взаимодействие с другими технологиями
WPF поддерживает применение функций Windows API — через средства хостинга возможно использование Windows Presentation Foundation в коде на Win32 или существующего Win32-кода в Windows Presentation Foundation. Взаимодействие с Windows Forms осуществляется через классы ElementHost и WindowsFormsHost.
На схеме показаны архитектура и ключевые сервисы Windows Presentation Foundation.
Архитектура и ключевые сервисы Windows Presentation Foundation
Развитие Windows Presentation Foundation
Новая версия Windows Presentation Foundation будет включена в состав .NET Framework 4.0, которая выйдет в первой половине 2010 года. К основным можно отнести следующие новинки WPF 4.0:
- интеграция с Windows 7 — поддержка «цифровых чернил» (digital ink), интеграция в панель задач и JumpList, поддержка Icon Overlays, индикатора прогресса, Thumbnail Toolbars и т.п.;
- поддержка multi-touch-ввода — события для элемента UIElement — Manipulation, Inertia (Pan, Zoom, Rotate и т.д.); события Up, Move, Down для элементов UIElement, UIElement3D и ContentElement; захват нескольких элементов управления; поддержка multi-touch в элементе ScrollViewer;
- новые интерфейсные элементы для создания бизнес-приложений — DataGrid, DatePicker и Calendar;
- поддержка элемента Ribbon;
- поддержка кэширования произвольного содержимого — Cached Composition;
- расширенное расположение элементов — UseLayoutRounding;
- встроенные функции упрощения анимации (Easing Functions) предоставляют спектр режимов в анимации: круговой, экспоненциальный, эластичный и пружинистый;
- новая подсистема отрисовки текста.
Язык разметки XAML
В Windows Presentation Foundation для описания интерфейсов приложений используется основанный на языке XML язык Extensible Application Markup Language (XAML). Одним из преимуществ языка XAML является то, что это полностью декларативный язык — дизайнеры и разработчики описывают поведение и интеграцию интерфейсных элементов без помощи программирования. Несмотря на то что полное описание приложения только на XAML является достаточно редким, применение декларативного языка позволяет включить в цикл разработки приложения дизайнеров. С помощью языка XAML можно полностью отделить модель от представления, что является одним из основных принципов создания современных приложений.
В следующей части данной статьи мы обсудим технологию Microsoft Silverlight, предназначенную для создания интернет-приложений с богатым интерфейсом (Rich Internet Applications, RIA), поддерживающих использование мультимедиа, графики и анимации.