Новые возможности пакета обновления 1 (SP1) для .NET Framework 3.5

Мы рады объявить о выпуске пакета обновления 1 (SP1) для .NET Framework 3.5! На подготовку этого пакета обновления ушло более года. В нем исправлены многие ошибки, добавлены новые функции и расширения, о которых просили пользователи (в частности, для платформы WPF). Мы также хотим объявить о выпуске первой CTP-версии набора элементов управления, включающего новый элемент WPF Datagrid.

Образцы кода, видео и документация по новым и усовершенствованным функциям будут размещены на этом сайте в ближайшее время. Здесь представлен краткий обзор усовершенствований платформы WPF в пакете обновления 1 (многие сведения были позаимствованы из блога Скота Гатри (Scott Guthrie) от 12 мая).

Запуск приложений и уменьшение потребления памяти

Пакет SP1 для NET 3.5 существенно повышает производительность среды CLR, что значительно ускоряет запуск приложений — в особенности «холодный запуск» (в отсутствие других запущенных .NET-приложений). Большая часть улучшений достигнута за счет изменения размещения блоков в образах CLR NGEN, а также оптимизации схемы доступа к диску. Кроме того, оптимизирована работа JIT-генератора кода, что улучшило встраиваемые методы, использующие структуры.

Наши измерения показали, что с пакетом обновления SP1 запуск приложений ускоряется в пределах от 10 до 40 %.

Новый пакет установки .NET Framework Client Profile Preview

В пакете обновления SP1 для .NET 3.5 появился новый пакет установки .NET Framework Client Profile Preview, предназначенный для разработчиков клиентских приложений .NET. Новый установщик позволяет быстрее и проще устанавливать клиентские приложения .NET на компьютеры с платформой .NET Framework.

В пакет установки .NET Framework Client Profile Preview включены только те сборки и файлы платформы .NET Framework, которые обычно используются в клиентских приложениях. Например, в него входят Windows Forms, WPF и WCF, но не входит ASP.NET, а также библиотеки и компоненты, используемые в основном в серверных сценариях. Размер пакета установки составляет 28 МБ. Его загрузка и установка происходят гораздо быстрее, чем для полного пакета установки .NET Framework (около шести минут для пользователей с типичным широкополосным подключением).

Сборки и интерфейсы клиентского пакета установки .NET Framework полностью идентичны содержащимся в полном пакете (те же двоичные файлы). Это значит, что приложения без перекомпиляции могут использовать как профиль Client Profile Preview, так и полный профиль .NET 3.5 SP1. Все приложения .NET, работающие с .NET Client Profile Preview, будут также работать с полной платформой .NET Framework.

На странице свойств проекта для клиентского приложения в VS 2008 SP1 можно указать, что клиентское приложение должно поддерживать как .NET Framework Client Profile Preview, так и полную платформу .NET Framework. На этой странице можно установить новый флажок, указывающий, что требуются только сборки, входящие в .NET Framework Client Profile Preview.

После этого VS 2008 будет следить, чтобы в проекте использовались только сборки, входящие в состав пакета установки Client Profile Preview (и выдавать ошибку компиляции при использовании типов из сборок, не входящих в дистрибутив для клиентских приложений). Компилированное клиентское приложение будет работать как на компьютерах с полной версией .NET Framework, так и на компьютерах, где установлен только пакет .NET Framework Client Profile Preview.

При попытке запуска приложения .NET, скомпилированного без поддержки пакета .NET Framework Client Profile Preview, на компьютере, где установлен только пакет .NET Framework Client Profile Preview, среда CLR откажется выполнять это приложение и выдаст запрос установить полный пакет .NET Framework. Это гарантирует, что приложения всегда будут выполняться правильно, а разработчикам не придется беспокоиться из-за отсутствия сборки во время выполнения, если пользователь попытается запустить приложение, требующее полную версию .NET Framework, на компьютере, на котором установлен только пакет .NET Framework Client Profile Preview.

Мы полагаем, что во многих клиентских приложениях .NET будет использоваться новый тип установки .NET Client Profile Preview для существенного ускорения установки и повышения удобства пользователей.

Новый загрузчик установки .NET Framework для клиентских приложений

В пакете обновления SP1 для .NET 3.5 появился новый компонент (загрузчик), благодаря которому приложение способно контролировать, установлена ли на компьютере пользователя необходимая версия .NET Framework.

Этот загрузчик может автоматически выполнять загрузку и установку пакета .NET Framework Client Profile или полной версии .NET Framework через Интернет. Загрузчик может также автоматически обновлять предыдущую версию .NET Framework, установленную на компьютере. Если на компьютере установлена версия .NET 3.0, а приложению требуется версия .NET 3.5, загрузчик может загрузить только файлы, необходимые для обновления до версии .NET 3.5 (а не загружать полный пакет установки .NET 3.5).

Загрузчик можно использовать с пакетами установки ClickOnce и установщиками сторонних разработчиков, например Installshield. Он также упрощает разработку собственных пакетов установки (экраны-заставки, дополнительные шаги мастера установки и т. д.).

Улучшение развертывания клиентских приложений ClickOnce

Пакет обновления SP1 для .NET 3.5 включает ряд усовершенствований развертывания ClickOnce для приложений Windows Forms и WPF. Ниже перечислены некоторые из них.

  • Поддержка пакета установки .NET Framework Client Profile Preview (поддерживаются все возможности ClickOnce).
  • Приложения ClickOnce теперь можно устанавливать программным образом с помощью Setup.exe и оригинального настроенного интерфейса пользователя.
  • Усовершенствования ClickOnce для создания пакетов приложений MSI + ClickOnce.
  • В диалоговых окнах сообщений об ошибках ClickOnce теперь можно добавлять ссылки на веб-сайты поддержки приложений.
  • Появилась поддержка задания сопоставлений файлов на этапе разработки.
  • Издатели приложений ClickOnce теперь могут отказаться от подписания и хеширования манифестов ClickOnce, если это целесообразно.
  • Организации могут разрешить запуск только приложений ClickOnce, подписанных «известными издателями» с помощью Authenticode, и заблокировать запуск остальных приложений.
  • Расширение для браузера FireFox для поддержки установки Clickonce.

Повышение производительности WPF

В пакете обновления SP1 для .NET 3.5 сделано несколько улучшений платформы WPF и существенно оптимизирована ее производительность. Ниже перечислены некоторые из таких усовершенствований графики.

  • Сглаженная анимация (в Vista SP1 и Windows XP SP3).
  • Аппаратное ускорение отрисовки эффектов Blur и DropShadow.
  • Повышение скорости отрисовки текста, особенно при использовании VisualBrush и трехмерных сцен.
  • Улучшена двумерная графика, особенно в сценариях с использованием z-индекса.
  • Новый класс WriteableBitmap обеспечивает плавное обновление растровых изображений в режиме реального времени. Это позволяет создавать растровые изображения, визуализировать данные, графики и диаграммы без использования интерфейсов API двумерной графики WPF.
  • Повышение быстродействия многослойных окон.

В пакете обновления SP1 также улучшена масштабируемость данных в платформе WPF. Элементы управления ListView, ListBox и TreeView теперь поддерживают повторное использование контейнеров элементов и виртуализацию, что позволяет увеличить быстродействие на 40 % при прокрутке. Эти элементы управления поддерживают отложенную прокрутку до момента отпускания пользователем ползунка (этот режим используется в Outlook по умолчанию). Это может оказаться полезным при прокрутке больших объемов данных.

Улучшение работы с данными в WPF

В пакете обновления SP1 для .NET 3.5 сделано несколько улучшений платформы WPF в области привязки и редактирования данных.

  • Поддержка StringFormat в выражениях {{ Binding }} для удобного форматирования привязанных значений.
  • Поддержка чередования строк в элементах управления, наследуемых от класса ItemsControl, позволяющая задавать чередование свойств строк (например, чередование цвета фона).
  • Улучшенная обработка и преобразование значений null в редактируемых элементах управления.
  • Применение правил проверки на уровне элемента для всего связанного элемента.
  • Поддержка класса MultiSelector для обработки множественного выбора и массового редактирования.
  • Поддержка интерфейса IEditableCollectionView для связывания элементов управления данными с источниками данных, транзакционного редактирования, добавления и удаления элементов.
  • Повышение производительности при связывании с источниками данных IEnumerable.

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

Расширяемые эффекты генератора текстуры WPF

В пакете обновления SP1 для .NET 3.5 в платформе WPF добавлены поддержка новой архитектуры эффектов построителя текстуры и интерфейс API, что позволяет создавать и применять выразительные визуальные эффекты в элементах WPF. При этом поддерживается смешение нескольких эффектов. Обработка эффектов (включая пользовательские эффекты) в платформе WPF осуществляется с помощью графического процессора, что обеспечивает мощную производительность обработки графики с аппаратным ускорением. В свойствах эффекта, как и почти во всех других элементах WPF, можно использовать привязки данных и анимации с полной интеграцией в интерфейс пользователя.

Применять эффекты к элементу управления очень просто — достаточно задать свойство Effect элемента управления. Например, чтобы применить к кнопке эффект тени с аппаратным ускорением, можно использовать встроенный класс <DropShadowEffect> в коде или в XAML.

Кнопка будет выглядеть следующим образом.

Объекты Effect расширяемые, поэтому разработчики могут создавать и применять собственные объекты Effect. Например, можно создать и применить к элементу управления ListBox пользовательский эффект DirectionalBlurEffect, чтобы обеспечить эффект размытия при быстрой прокрутке.

Дополнительные сведения об архитектуре эффектов, создании и применении новых эффектов в приложениях см. в блоге Грега Шехтера (Greg Schechter) (его первые сообщения можно посмотреть здесь).

Примечание. Кроме добавления API для новых эффектов построителя текстуры, в пакете обновления SP1 также модернизированы существующие в WPF эффекты Blur и DropShadow, которые теперь отображаются с аппаратным ускорением.

Взаимодействие WPF и Direct3D

Пакет обновления SP1 для .NET 3.5 обеспечивает эффективную интеграцию Direct3D в платформу WPF. Приложения WPF получают прямой доступ к оборудованию и могут полностью использовать возможности интерфейса Direct3D. Содержимое Direct3D можно использовать в приложениях в качестве обычных изображений и текстур элементов управления WPF.

Ниже приведены три примера из Direct3D SDK.

Их можно загрузить в качестве поверхностей изображения или использовать как текстуры в элементах управления WPF. Ниже приведен пример их использования в качестве текстур кубов в трехмерном приложении WPF.

Усовершенствования VS 2008, касающиеся WPF

VS 2008 SP1 включает ряд важных усовершенствований, связанных с проектами WPF и конструктором WPF.

  • Повышение производительности в нескольких областях.
  • Поддержка вкладки событий в обозревателе свойств.
  • Сортировка свойств в алфавитном порядке в обозревателе свойств.
  • Линии привязки полей ускоряют создание макета формы.
  • Улучшенная поддержка элементов TabControl, Expander и Grid в конструкторе.
  • При рефакторинге кода обновляется код XAML (включая объявления элементов управления и событий в XAML).
  • Команды Go to Definition («Перейти к определению») и Find All References («Найти все ссылки») поддерживают объявления, сделанные в XAML.

В пакете обновления SP1 также подвергся доработке отладчик. В нем улучшено определение ошибок времени выполнения в разметке XAML (таких как ссылки на отсутствующие стили, источники данных и другие объекты).

CTP-версия набора инструментов WPF: элемент управления DataGrid

Первая версия нового элемента управления WPF DataGrid (построенного на основе пакета обновления SP1 для .NET 3.5) появилась в наборе инструментов WPF на сайте WPF Codeplex.

Мы не останавливаемся на этом и в прежнем темпе продолжаем работу по совершенствованию платформы WPF, платформы .NET Framework и инструментов. Мы упорно работаем над подготовкой следующей версии (.NET 4.0, Visual Studio 10 и Expression 3). Мы и дальше будет заниматься повышением качества и производительности, разработкой новых элементов управления, расширением графических возможностей и улучшением инструментов WPF в приложениях Visual Studio и Expression. Мы также будем рады получить ваши отзывы об этом пакете обновления и пожелания относительно будущих версий. Присылайте свои предложения и замечания!