Продолжается подписка на наши издания! Вы не забыли подписаться?

Новое в .NET Framework 3.5 Service Pack 1

В августе этого года вышел .NET Framework 3.5 Service Pack 1. Это обновление готовилось дольше года и, если говорить в частности о WPF, содержит множество исправлений, новых возможностей и улучшений. Кроме этого, рады сообщить вам о выходе первого CTP нашего Controls Toolkit, включающего новый WPF-datagrid.

Здесь представлен очень краткий обзор улучшений WPF, появившихся в SP1 (часть его бесстыдно украдена из блога Scott Guthrie от 12 мая).

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

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

Результаты могут варьироваться, но наши измерения показали 10-40% ускорение запуска приложений

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

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

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

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


В 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 Framework Client Profile Preview, приложение, скомпилированное без указания .NET Framework Client Profile Preview, CLR откажется исполнять это приложение и попросит пользователя установить полный .NET Framework. Это гарантирует, что приложения всегда будут исполняться корректно, и разработчикам не нужно беспокоиться об исключениях, возникающих из-за отсутствия сборки во время исполнения, на машинах, где установлен только .NET Framework Client Profile Preview installed.

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

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

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

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

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

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

.NET 3,5 SP1 включает в себя несколько улучшений ClickOnce-развертывания приложений, как для Windows Forms приложений, так и для WPF-приложений. Вот некоторые из этих усовершенствований:

Улучшения производительности WPF

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

В SP1 также улучшено масштабирование данных в WPF. Компоненты ListView, ListBox и TreeView теперь поддерживают "item container recycling" и "virtualization", что позволяет добиться 40-процентного прироста производительности при прокрутке. Эти компоненты теперь поддерживают «отложенную прокрутку», позволяющий вместо скроллинга в реальном времени подождать, пока пользователь не отпустит ползунок прокрутки (такой режим используется в Outlook по умолчанию). Это может пригодиться при скроллинге очень больших наборов данных.

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

В .NET 3.5 SP1 вошло несколько улучшений WPF, касающихся редактирования и связывания данных:

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

Расширяемые шейдерные эффекты в WPF

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

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

<Button Context=”Push Me” FontSize=”22” Width=”175” Height=”50”>
  <Button.Effect>
    <DropShadowEffect />
  </Button.Effect>
</Button>

В результате кнопка будет выглядеть так:


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


В блоге Greg Schechter-а (http://blogs.msdn.com/greg_schechter/archive/2008/05/09/a-series-on-gpu-based-effects-for-wpf.aspx) можно узнать больше об архитектуре эффектов и научиться тому, как создавать новые эффекты и применять их в приложениях.

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

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

Вот три примера из Direct3D SDK:


Их можно загрузить как изображения в WPF-приложение или использовать как текстуры. Вот пример использования их в качестве текстур для кубиков в 3D WPF-приложении:


Улучшения VS 2008, касающиеся WPF

В VS 2008 SP1 есть несколько существенных улучшений, касающихся WPF-проектов и WPF-дизайнера. Они включают следующее:

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


Кроме упомянутых, есть и много других улучшений и новых возможностей – в работе с Team Foundation Server, в редакторе C#, а также в использовании XML из VB. Но они достойны отдельного рассказа.


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

Copyright © 1994-2016 ООО "К-Пресс"