Опубликован: 13.12.2011 | Доступ: свободный | Студентов: 1020 / 34 | Оценка: 4.29 / 4.57 | Длительность: 13:56:00
Лекция 2:

Сведения о WPF и Silverlight: Введение и архитектура платформ

Аннотация: В лекции вы ознакомитесь с архитектурой WPF и Silverlight, узнаете, как платформы справляются с различными разрешениями экрана, и получите общее представление о сборках и классах, а также основных элементах управления.

Цель лекции: получить знания об архитектуре WPF и Silverlight, освоить назначение и декларативное описание элементов управления.

Windows Presentation Foundation

Windows Presentation Foundation (WPF) — это графическая система отображения для Windows. Платформа WPF спроектирована для .NET под влиянием таких современных технологий отображения, как HTML и Flash, и использует аппаратное ускорение. Она также является наиболее радикальным изменением в пользовательском интерфейсе Windows со времен Windows 95. Даже если бы единственным достоинством WPF было аппаратное ускорение через DirectX, это уже стало бы значительным усовершенствованием, хоть и не революционным. Однако WPF на самом деле включает целый набор высокоуровневых служб, ориентированных на прикладных программистов. Существует одна область, для которой WPF не слишком хорошо подходит — создание приложений с требованиями к графике реального времени, таких как эмуляторы сложных физических процессов или современные интерактивные игры. Поскольку для такого рода приложений нужна максимально возможная видеопроизводительность, необходимо программировать на более низком уровне и использовать DirectX напрямую.

Независимость от разрешения

Традиционные Windows-приложения связаны определенными предположениями относительно разрешения экрана. Обычно разработчики рассчитывают на стандартное разрешение монитора (вроде 1024x768 пикселей) и проектируют свои окна с учетом этого, стараясь обеспечить разумное поведение при изменении размеров в большую и меньшую сторону.

Проблема в том, что пользовательский интерфейс в традиционных Windows- приложениях не является масштабируемым. В результате, если вы используете монитор с высоким разрешением, который располагает пиксели более плотно, окно приложения становится меньше и читать текст в нем труднее. Эта проблема особенно актуальна для новых мониторов, которые имеют высокую плотность пикселей и соответственно работают с более высоким разрешением. Например, легче встретить мониторы (особенно на портативных компьютерах), которые имеют плотность пикселей в 120 dpi или 144 dpi (точек на дюйм), чем более традиционные 96 dpi. При их встроенном разрешении эти мониторы располагают пиксели более плотно, создавая напрягающие глаз мелкие элементы управления и текст.

В идеале приложения должны использовать более высокую плотность пикселей, чтобы отобразить больше деталей. Например, монитор с высоким разрешением может отображать одинакового размера значки панели инструментов, но использовать дополнительные пиксели для отображения мелкой графики. Подобным образом можно сохранить некоторую базовую компоновку, но обеспечить более высокую четкость деталей.

По разным причинам такое решение было невозможно в прошлом. Хотя можно изменять размер графического содержимого, нарисованного в GDI/GDI+, компонент User32 (который генерирует визуальное представление распространенных элементов управления) не поддерживает реального масштабирования.

WPF не страдает от этой проблемы, потому что самостоятельно визуализирует все элементы пользовательского интерфейса — от простых фигур до таких распространенных элементов управления, как кнопки. В результате если вы создаете кнопку шириной в 1 дюйм на обычном мониторе, она останется шириной в 1 дюйм и на мониторе с высоким разрешением. WPF просто визуализирует ее более детализировано, с большим количеством пикселей.

Так выглядит картина в целом, но нужно уточнить еще несколько деталей. Самое важное, что следует осознать — WPF базирует свое масштабирование на системной установке DPI, а не на DPI физического дисплейного устройства. Это совершенно логично — в конце концов, если вы отображаете приложение на 100-дюймовом проекторе, то, скорее всего, отойдете подальше на несколько шагов и будете ожидать увидеть огромную версию окон. Конечно, не желательно, чтобы WPF масштабировал приложение, уменьшая его до "нормального" размера. Аналогично, если вы используете портативный компьютер с дисплеем высокого разрешения, то хотите увидеть несколько уменьшенные окна это цена, которую приходится платить за то, чтобы уместить всю информацию на маленьком экране. Более того, у разных пользователей разные предпочтения на этот счет. Некоторым нужны расширенные подробности, в то время как другие хотят увидеть больше содержимого. Так каким же образом WPF определяет, насколько большим должно быть окно приложения? Краткий ответ состоит в том, что при вычислении размеров WPF использует системную установку DPI.

Архитектура Silverlight

Технология Microsoft Silverlight — это библиотека классов для создания интернет-приложений с богатым интерфейсом (Rich Internet Applications, RIA), поддерживающих использование мультимедиа, графики и анимации. Silverlight поставляется в виде расширения для веб­браузера (размером всего 4 Мбайт), содержащего среду исполнения кода. Поддерживаются платформы Microsoft Windows, Mac OS X, Linux и FreeBSD (для последних требуется разработанная совместно с компанией Novell версия Silverlight под названием Moonlight). Поддерживаются браузеры Microsoft Internet Explorer 5.5+, Safari, Opera и FireFox. В версии Silverlight 4 также планируется поддержка браузера Chrome.

Разработка Silverlight-приложений возможна в Visual Studio начиная с версии 9.0 с пакетом обновлений Service Pack 1, Microsoft Expression Design и Microsoft Expression Blend 3 + SketchFlow. Также потребуется загрузка и установка Microsoft Silverlight Software Development Kit.

Silverlight поддерживает графическую модель, схожую с Windows Presentation Foundation, использует язык XAML для описания интерфейсов приложений и поддерживает подмножество .NET Framework. Помимо создания интернет-приложений с богатым интерфейсом, Silverlight поддерживает отображение мультимедийных файлов в форматах WMV, WMA и MP3 через Windows Media Player, соответствующий компонент ActiveX или расширение для веббраузера, помимо этого обеспечивается поддержка видео в формате VC-1, H.264 и MP4, а также аудио в формате AAC. В версию Silverlight 3 включено множество новинок, среди которых поддержка работы вне браузера, навигация по приложениям, множество новых элементов управления, 3D-трансформации и проекции, поддержка аппаратных ускорителей, шейдерные эффекты и адаптивное вещание с помощью технологии Smooth Streaming.

На рис. 3.1 показана архитектура Silverlight.

Архитектура платформы Silverlight 4

Рис. 3.1. Архитектура платформы Silverlight 4

Как платформа, Silverlight состоит из трех основных компонентов: ядра представления (Presentation Core), подмножества .NET Framework for Silverlight (clr execution core) и компонентов для установки и обновления.

Ядро представления содержит компоненты и сервисы, поддерживающие пользовательские интерфейсы, взаимодействие с пользователями, включая ввод, набор компонентов для вебприложений, средства воспроизведения мультимедиа, управления цифровыми правами и связи с данными, а также поддержку графики, включая векторную графику, текст, анимацию и графические изображения. Также сюда входит поддержка языка XAML для описания расположения элементов.

Состав ядра представления:

  • компоненты ввода — обрабатывают ввод с таких устройств, как клавиатура и мышь, диджитайзеры и другие устройства ввода;
  • средства отрисовки — обеспечивают отображение векторной и растровой графики, анимации и текста;
  • мультимедийные компоненты — отвечают за воспроизведение различных аудио и видеофайлов, таких как WMV и MP3;
  • поддержка Deep Zoom — позволяет увеличивать размеры изображений в высоком разрешении;
  • набор интерфейсных компонентов — поддерживает настройки с применением стилей и шаблонов;
  • средства расположения — отвечают за динамическое позиционирование интерфейсных элементов;
  • средства связи с данными — поддерживают связь объектов данных с интерфейсными элементами;
  • механизм DRM — обеспечивает управление цифровыми правами для мультимедийных файлов;
  • поддержка XAML — заключается в обработке разметки на этом языке.

Подмножество .NET Framework представляет собой набор классов для интеграции данных, поддержки сетевых коммуникаций, сборки мусора, расширяемый набор Windows-компонентов, а также общие классы для CLR. Некоторые части .NET Framework развертываются вместе с приложением. Эти библиотеки не входят в состав Silverlight Runtime и поставляются в составе Silverlight SDK. Сюда относятся библиотеки поддержки новых интерфейсных элементов, XLINQ, Syndication (RSS/Atom), XML-сериализации и Dynamic Language Runtime (DLR).

В подмножество .NET Framework входят:

  • средства работы с данными — обеспечивают поддержку технологий Language-Integrated Query (LINQ) и LINQ to XML, облегчающих интеграцию с различными источниками данных. Помимо этого поддерживается использование данных в формате XML и работа с сериализационными классами;
  • базовая библиотека классов (BCL) — обес-печивает набор стандартных функций, таких как обработка строк, работа с регулярными выражениями, функции вводавывода, механизм reflection, работа с коллекциями и средства многоязыковой поддержки (глобализация);
  • Windows Communication Foundation (WCF) — обеспечивает доступ к удаленным сервисам и данным. Сюда относится поддержка объектной модели браузера, обработка HTTP-запросов и ответов, поддержка кроссдоменных HTTP-запросов, поддержка RSS/Atom, JSON, POX и сервисов на основе протокола SOAP;
  • CLR (Common Language Runtime) — предоставляет средства для управления памятью, механизм сборки мусора (garbage collection), проверку типов и обработку исключений;
  • компоненты WPF (Windows Presentation Foundation) — обеспечивают богатый выбор элементов, среди которых такие элементы, как Button, Calendar, CheckBox, DataGrid, DatePicker, HyperlinkButton, ListBox, RadioButton и ScrollViewer;
  • DLR (Dynamic Language Runtime) — поддерживает динамическую компиляцию и выполнение сценарных языков, таких как JavaScript и IronPython для управления Silverlight-приложениями. Также обеспечивается расширяемая модель, позволяющая добавлять новые динамические языки для использования их в Silverlight.

Компоненты для установки и обновления упрощают процесс установки приложений и обеспечивают их автоматическое обновление.

Помимо рассмотренных выше возможностей Silverlight следует отметить следующие функции:

  • изолированное хранилище — безопасный доступ из клиентского приложения к файловой системе на локальном компьютере, позволяющий использовать локальное хранилище;
  • асинхронное программирование — поддержку фоновых потоков, обрабатывающих логику приложений;
  • управление файлами — возможность применения диалоговой панели File —> Open для упрощения создания безопасных загрузок файлов;
  • интеграция с HTML-кодом — возможность управления интерфейсными элементами в составе вебстраницы на уровне HTML DOM для доступа к объектам, свойствам, событиям и методам;
  • сериализация — поддержку сохранения CLR-типов в JSON и XML;
  • упаковка — класс Application и средства для создания *.xap-пакетов, содержащих само приложение и точку входа для его запуска из плагина Silverlight;
  • XML-библиотеки — классы XmlReader и XmlWriter для работы с XML-данными из вебсервисов. Поддержка XLinq позволяет разработчикам обращаться к XML-данным непосредственно из кода.