Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com http://blogs.msdn.com/roman Microsoft TechDays http://www.techdays.ru Почему абсолютно все сразу не начинают использовать только новые замечательные технологии? Microsoft TechDays http://www.techdays.ru Широта использования Производительность Наработки и лучшие практики Microsoft TechDays http://www.techdays.ru Cэкономить вам много времени Защитить от ошибок Как правильно Как неправильно Microsoft TechDays http://www.techdays.ru Usability или удобство пользователя при использовании WPF Производительность в WPF Лучшие практики использования возможностей WPF Microsoft TechDays http://www.techdays.ru Ноябрь 2006 - Первая версия WPF в составе .NET Framework 3.0 и Windows Vista Ноябрь 2007 – Вторая версия WPF в составе .NET Framework 3.5 и Visual Studio 2008 Август 2008 – Третья версия WPF в составе .NET Framework 3.5 SP1 – будет встроен в ! Microsoft TechDays http://www.techdays.ru WPF Toolkit Финальный релиз! - http://www.codeplex.com/wpf/ <DataGrid /> <DatePicker /> <Calendar /> CTP <Ribbon /> Visual State Manager WPF .NET 4.0 Multi-touch Deep Zoom Visual State Manager Text Microsoft TechDays http://www.techdays.ru Очень много на http://windowsclient.net/community/showcase.aspx Новые приложения на WPF – AutoCad 2009 Inventor 2009 Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Источник: http://www.indeed.com 14.10.2008 Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Важный пункт 1 Важный пункт 2 Самый Важный пункт 3 Параметр1 Парамер2 Параметр3 Параметр4 345 5 5 6 4 3 65 7 3 5 4 45 14 12 10 8 6 4 2 0 Microsoft TechDays Series 3 Series 2 Series 1 http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Windows Vista User Experience Guidelines http://msdn.microsoft.com/en-us/library/aa511258.aspx Designing with Windows Presentation Foundation Не начинайте с того что можно сделать на технологии, а с того, что действительно нужно вашим пользователям. Перед тем как добавить «стильный» функционал, подумайте, на каким сценариям работы он будет помогать. Microsoft TechDays http://www.techdays.ru Интерфейс выглядит стильно когда: Функционал действительно нужен пользователю Эстетика реализована в небольших деталях. Обеспечено повышенное удобство не в ущерб производительности. Положительные эмоции остаются даже на 100-ый раз просмотра Интерфейс НЕ выглядит стильно когда: Использованы эффекты технологии, только потому что она так может! Эффекты отвлекают внимание и нарушают удобство, процессы работы и производительность Надоедливость Microsoft TechDays http://www.techdays.ru Ключевые факторы: Частота использования Профессиональность пользователей Эмоциональный контекст Ожидания пользователей Концентрация внимания на нужных элементах Использование анимаций для интуитивного привлечения внимания на следующие шаги или контекстные действия – менее полсекунды Скорость анимаций не должна снижать производительность труда - ускорение анимации для опытных пользователей Использование аналогов реального мира для упрощения обучения Software branding – небольшие детали Привлеките профи в дизайне, если требуется Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru System.Windows.Media.RenderCapability.Tier Tier DirectX 0 Version<7 Без аппаратного ускорения RAM<30MB 1 7<=Version<9 Частичное аппаратное ускорение - 2D rendering, 3D rasterization, 3D anisotrophic filtering, 3D mip-mapping 30MB<=RAM<1 20MB ATI : 256, 7000, 7500, 8500, 9000, 9100, 9200, 9250 Intel : 845G, 845GE, 845GL, 845GV, 852GME, 855GM, 855GME, 865G, 865GV Nvidia GeForce 256 GeForce2: GTS, MX, MX100, MX200, MX400, Pro, Ti, Ultra GeForce3 : Ti200 and Ti500 GeForce4 : MX420, MX440, MX460, MX4000, Ti4200, Ti4400, Ti4600, Ti4800 2 9<=Version Аппаратное ускорение – Tier 1 + Radial gradients, 3D lighting calculations, Text rendering, 3D anti-aliasing 120MB<=RAM Shader v2 ATI: 9550, 9600, 9800, X Intel: GMA900, 915G, GMA950, 945G Nvidia: FX 6xxx, 7xxx Video Microsoft TechDays Cards http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Performance Profiling Tools for WPF детальная отладка производительности http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx Snoop – быстрый просмотр структуры визуального дерева http://www.blois.us/Snoop/ Microsoft TechDays http://www.techdays.ru Показатели приложение в целом Потребление видео памяти Аппаратный и программный рендеринг Определение проблемных зон программного рендеринга FPS (frames per second) Microsoft TechDays http://www.techdays.ru Растровые графические эффекты До версии 3.5 SP1 использовали только software rendering BlurBitmapEffect и DropShadowBitmapEffect в версии 3.5 SP1 – аппаратное ускорение Замена эффектов на аппаратные BlurEffect, DropShadowEffect Могут существенно влиять на производительность! Microsoft TechDays http://www.techdays.ru Исправление software rendering Microsoft TechDays http://www.techdays.ru Упрощенное представление дерева в проекте Иерархическое представление структуры визуализации Количество и вложенность элементов влияет на производительность Следует избегать избыточной вложенности контейнеров (StackPanel, Grid, WrapPanel…) При выводе большого набора данных количество элементов может стать огромным Контролируйте использование шаблонов элементов управления (templates) Microsoft TechDays http://www.techdays.ru Детальный анализ производительности конкретных элементов пользовательского интерфейса Возможность анализа производительности иерархии визуального дерева Microsoft TechDays http://www.techdays.ru Производительность визуального дерева Microsoft TechDays http://www.techdays.ru Возможность автоматически уничтожать элементы визуального дерева вышедшие из зоны видимости и … … создавать входящие в зону видимости ListView, ListBox, TreeView и DataGrid Следите за возможным отключением виртуализации в ListBox/ListView: Проверьте, что ScrollViewer.CanContentScroll=True Проверьте, что VirtualizingStackPanel.IsVirtualizing=True Избегайте группировок, при большом числе элементов Используйте VirtualizingStackPanel при написании своих контролов …или напишите собственную. Container Recycling в WPF 3.5 SP1 - + 40% производительности за счет повторного использования элементов визуального дерева без их уничтожения и создания заново Microsoft TechDays http://www.techdays.ru Просмотр структуры визуального дерева Количество элементов Свойства элементов Поиск элементов (ошибок binding) События (events) Zoom 3D Zoom Microsoft TechDays http://www.techdays.ru Контроль визуального дерева и виртуализации Microsoft TechDays http://www.techdays.ru Страшная тайна про Outlook Позволяет максимально увеличить скорость скроллинга ScrollViewer.IsDeferredScrollingEnabled="True" Microsoft TechDays http://www.techdays.ru Уменьшает воспринимаемое время старта В WFP 3.5 SP1 загружается до старта инфраструктуры WPF. В есть готовый Project Item Template http://www.codeplex.com Microsoft TechDays http://www.techdays.ru Добавление Splash Screen Microsoft TechDays http://www.techdays.ru Optimizing WPF Application Performance http://msdn.microsoft.com/en-us/library/aa970683.aspx Performance Profiling Tools for WPF детальная отладка производительности http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx Improving Scrolling Performance in WPF http://download.microsoft.com/download/2/d/b/2db72dcf-5ae0445f-b709-7f34437d8b21/Scrolling_in_WPF.doc Microsoft TechDays http://www.techdays.ru Microsoft TechDays http://www.techdays.ru Улучшение четкости линий на экранах с низким разрешением WPF использует независимые единицы позиционирования и anti-aliasing Единица измерения – px (default) is deviceindependent units (1/96th inch per unit) SnapsToDevicePixels="True" http://msdn.microsoft.com/en-us/library/aa970908.aspx Microsoft TechDays http://www.techdays.ru Тексты также рассчитаны на высокое качество вне зависимости от устройства Используется ClearType и SubPixel Anti-Aliasing Но мониторах слабого разрешения текст может выглядеть мягче Используйте адаптированные шрифты: Cambria, Calibri, Corbel, Candara, Consolas ...) Измените настройки ClearType Подробнее - http://windowsclient.net/wpf/white-papers/wpftextclarity.aspx Microsoft TechDays http://www.techdays.ru SnapToDevicePixels Microsoft TechDays http://www.techdays.ru DataGrid, DatePicker, Calendar поставляется вместе с исходным кодом в рамках на www.codeplex.com DataGrid - возможности: Авто-генерирование колонок Различные типы: Text, CheckBox, ComboBox, Button, Hyperlink + TemplateColumn Редактирование Фильтры и группировки Item Container Recycling Deferred Scrolling Не забывайте про мощь шаблонов ListBox! Microsoft TechDays http://www.techdays.ru Архитектурная идея WPF – превалирование свойств над методами При связывании с данными (Binding) используйте ObjectDataSource XMLDataSource Старайтесь меньше использовать императивный подход определения связывания из кода Дизайнеры смогут вам очень помочь Microsoft TechDays http://www.techdays.ru Возможность декларативно определить способ представления повторяющихся данных в виде шаблона ListBox/ListView, TreeView и др. Сценарии шаблонов Линейные Иерархические <DataTemplate x:Key="itemTemplate"> <StackPanel x:Name="StackPanel"> <TextBlock x:Name="TextBlock1" Text="{Binding Mode=OneWay, XPath=title}"/> <TextBlock x:Name="TextBlock" Text="{Binding Mode=OneWay, XPath=pubDate}"/> </StackPanel> </DataTemplate> Microsoft TechDays http://www.techdays.ru Ресурсы могут присутствовать на разных уровнях Элемент, Контейнер (Grid, StackPanel …), Главный визуальный контейнер (Окно, Страница), Приложение (App.xaml), Ресурсный словарь Упрощают повторное использование визуальных и программных ресурсов в декларативном представлении Стилей (Styles), Шаблонов элементов управления (Control Templates), шаблонов данных (Data Templates), кистей и пр. Microsoft TechDays http://www.techdays.ru Шаблоны данных и ресурсы Data Templates Microsoft TechDays http://www.techdays.ru Инвестируя время в декларативное представление вы выигрываете за счет привлечения дизайнера или самостоятельного использования Expression Элементы пользовательского интерфейса выходят за рамки жестких визуальных границ и становятся поведенческими моделями с произвольной визуализацией Легкость в создании вложенных элементов управления, приводит к меньшей необходимости создания User Controls – необходимость их создания диктуется теперь более поведенческой моделью, нежели визуальной Microsoft TechDays http://www.techdays.ru Usability или удобство пользователя при использовании WPF Производительность в WPF Лучшие практики использования возможностей WPF Microsoft TechDays http://www.techdays.ru WindowsClient.net Optimizing WPF Application Performance http://msdn.microsoft.com/en-us/library/aa970683.aspx Performance Profiling Tools for WPF детальная отладка производительности http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx Windows Vista User Experience Guidelines http://msdn.microsoft.com/en-us/library/aa511258.aspx Designing with Windows Presentation Foundation Microsoft TechDays http://www.techdays.ru Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com http://blogs.msdn.com/roman Microsoft TechDays http://www.techdays.ru