Технологии Windows Communication Foundation и Windows Presentation Foundation Кафедра системного программирования С.-Петербургского государственного университета Губанов Юрий Александрович,
Лекция 6: Введение WPF История технологий создания пользовательского интерфейса Предпосылки появления WPF Первое знакомство с WPF
История технологий создания UI Доисторический период: экскурс в имр перфокарт, текстовых консолей и TurboVision Появление Windows 3.1 – 1992-й год: o Стандартные элементы управления (контролы) – существуют до сих пор! То есть, более 25 лет! o WinAPI o MFC, ATL – интеграция с Microsoft Visual Studio Паттерн Model-view-controller
История технологий создания UI OpenGL – 1992 год Windows 95 – появление DirectX Java – AWT и Swing Qt – кросс-платформенная технология создания UI Появление html – поначалу UI веб- страничек o Затем – море технологий: DHTML, Java- апплеты, flash-приложения и т.д..NET: Windows Forms и ASP.NET
Три мира UI Настольные приложения Сложная графика (игры, мультимедиа- приложения) Web-приложения Для этих миров существует непересекающийся набор технологий! o Windows Forms o DirectX, OpenGL o ASP.NET Нельзя ли эти миры объединить?
Предпосылки появления WPF Объединение «трёх миров» Растущие ожидания пользователей от интерфейса o С помощью MFC или DirectX совсем непросто и экономически невыгодно создавать изощрённый интерфейс o В то же время нынешние «железки» могут многое! Почему не использовать их по полной? 25 лет существующему интерфейсу! Взаимодействие дизайнера и программиста неэффективно (см. след. слайд)
Дизайнер и программист while (!design.IsPerfect) { Designer.CreateNewDesign(); Developer.ImplementNewDesign(); design.IsPerfect = false; if (Schedule.SlipCount >= x) break; } Дизайнер мыслит в одних терминах, программист – в других Спроектированный дизайн зачастую сложно/дорого или невозможно воплотить Разработка дизайна – итерационная и медленная
WPF – три в одном! Windows Presentation Foundation (изначально codename Avalon) – одна из частей нового API Windows (.NET Framework 3.0) WPF – новая графическая подсистема, основанная на управляемом коде WPF – надстройка над DirectX WPF объединяет в себе три мира – UI для настольных и веб-приложений, и UI для игр и мультимедиа-приложений. Множество элементов управления, поддержка видео, анимации, трёхмерных изображений и т.п.
Что входит в WPF WPF – это не только диалоги, картинки и видео! 2D 3D Работа с текстами и шрифтами Работа с изображениями Эффекты Аудио o В частности, синтез и распознавание речи Видео Анимация и работа с временными интервалами
Составные части WPF Движок o Построен поверх DirectX – вся мощь современного «железа» o Векторный рендеринг Независимость от конкретного разрешения, размера шрифтом и тп! WPF Framework – API для создания приложений o Единая программная модель для всех типов приложений o XAML – декларативный способ определять интерфейс Естественно, XML-язык
WPF Framework Естественно, управляемый код Множество элементов управления для o Стандартных форм (такие как кнопки и элементы ввода) o Документов o Изображений и видео o Графических примитивов o 3D o Различных контейнеров и панелей для размещения контролов Могут использоваться декларативно (из XAML) и императивно (из ЯП)
Схема WPF Framework Media Integration Layer 2D 3D Audio Imaging Text Video Effects Composition Engine Animation Base Services XAML Accessibility Property System Input & Eventing Document Services XPS Documents Packaging Services User Interface Services Application Services Deployment Services Controls Layout Databinding
Декларативное создание UI Раньше – resource-файлы XAML – описание UI с помощью XML UI в виде XML – не новая идея: есть, например, XUL (XML User Interface Language) XAML – способ разделить работу дизайнера и разработчика (см. следующие слайды)
XAML – первый взгляд Определение раскладки элементов и событий: ПРЕВЕД, XAML! LightBlue onHelloClick – функция-обработчик из code-behind (C#/VB)
XAML – первый взгляд Не только раскладка и события А также: o Новые элементы управления o Поддержка тем и скинов o Трансформация элементов управления o Анимация o Многое-многое другое (рассмотрим на отдельной лекции) Логика приложения по-прежнему определяется процедурным кодом o Код внутри XAML теоретически возможен, но крайне не рекомендуется
Дизайнер и программист-2 Старая схема: o Дизайнер создаёт макет в графическом редакторе (не в средстве разработки) o Дизайн реализуется программистом o Реализованный дизайн непохож на изначальный o Скандалы, доработки, следующая итерация Новая схема: o Дизайнер создаёт макет в одном из продуктов семейства Expression o Получившийся XAML отдаётся разработчику o Разработчик вставляет в XAML обработчики событий o Все счастливы
Поддержка XAML Дизайнер, встроенный в студию (сейчас – бета, но войдёт в Visual Studio Orcas) o Автодополнение и статические проверки! o Правда, пока что глючный и даже временами падучий Семейство Expression (разные продукты для работы с 2D-, 3D-графикой, для создания веб-страниц) XAMLPAD – простенький просмотрщик и редактор XAML
Demo Как потрясающе богато может выглядеть интерфейс пользователя на WPF: postid= (Healthcare demo)
Недостатки WPF Плохая поддержка в Visual Studio Отсутствие многих важных контролов, например o полноценный Grid o DateTimePicker Плохая интеграция с Windows Forms o Интеграция есть, но в ней много проблем Проблемы с производительностью o Например, длительный старт приложения Отсутствие MDI (для MDI рекомендуют использовать WinForms) Проблемы довольно естественны: первый релиз
Поддержка WPF Входит в Windows Vista Поддержана также в Windows XP SP2 и Windows 2003 (доступно через Windows Update или для ручного скачивания) Скоро выходит.NET Framework 3.5 (ожидается в конце 2007-начале 2008) o Более полная поддержка WPF o Надеемся, исправление недостатков первой версии
Silverlight (ex. WPF/E) Кросс-платформенное подмножество WPF o Windows, Macintosh, mobile devices) Включает o Векторную графику o Работу с текстом, изображениями, видео и анимацией o Элементы управления Не включает o 3D o Обработку документов o Работу с аппаратными ускорителями
Silverlight Реализована на JScript Использует XAML Поддерживает C#/VB.NET o Благодаря реализации подмножества рантайма CLR o Вам вовсе не надо писать на JScript! o При этом вам не надо заботиться о различиях платформ и браузеров!
Поддержка Silverlight Операционные системы: o Windows Vista o Windows 2000, Windows XP, Windows 2003 o Mac OS X 10.* o Планируется Linux (Moonlignt) Браузеры: o Internet Explorer версии 5.5 и выше o Mozilla версии 1 и выше o Firefox версии 1 и выше o Opera версии 7 и выше o Safari версии 1 и выше
WPF и не только ASP.NET 2.0 AJAX Extensions (ex. Atlas) Эту технологию следует выбирать, когда вы используете ASP.NET и хотите создать клиентское приложение с богатым UI Direct 3D Следует выбирать, когда вы реализуете специальные приложения с 3D графикой или, например, насыщенные графикой игры Windows Forms Бизнес-приложения, которые должны работать во всех версиях Windows Windows Presentation Foundation Когда вам нужен изощренный пользовательский интерфейс; следующее поколение приложений под Windows Silverlight Когда вы нацелены на интерактивные приложения, работающие на различных платформах и устройствах
Как соотносятся технологии ASP.NET 2.0 AJAX Extensions (ex. Atlas) и Silverlight o AJAX Extensions использует рантайм Silverlight o Silverlight можно использовать как элемент управления ActiveX или как плагин на HTML-страницах WPF и ASP.NET o Новый тип приложения WPF Web Browser Applications WPF и Win32 o Приложения WPF могут быть хостом дескрипторов окна Win32 (HWND) o Приложения Win32 могут быть хостом WPF-содержимого WPF и Windows Forms o Приложения WPF могут быть хостом контролов и содержимого Windows Forms o Приложения Windows Forms могут быть хостом контролов и содержимого WPF o Внимание: много ограничений и багов
Основные возможности WPF Новый движок Декларативное программирование с использованием XAML Система раскладки контента Стили Control Templates Data Templates Гибкий механизм связывания данных (Data Binding) Поддержка графики и мультимедиа Унифицированный формат документов (XML Paper Specification) Совместимость с Windows Forms