270 likes | 495 Views
What is new in Windows Presentation Foundation for .NET 3.5 SP1?. Pandurang Nayak & Supreet Singh Client Platform / UX Evangelist | Microsoft Corporation. .NET Framework and Tools Roadmap. 2006 .NET Framework 3.0 VS 2005 Extensions for .NET 3.0 (CTP) 2007 .NET Framework 3.5
E N D
What is new in Windows Presentation Foundationfor .NET 3.5 SP1? Pandurang Nayak & Supreet Singh Client Platform / UX Evangelist |Microsoft Corporation
.NET Framework and Tools Roadmap • 2006 • .NET Framework 3.0 • VS 2005 Extensions for .NET 3.0 (CTP) • 2007 • .NET Framework 3.5 • Visual Studio 2008 • Expression Blend 1.0 • 2008 • .NET Framework 3.5 SP1 • Visual Studio 2008 SP1 • Expression Blend 2.0
.NET Framework Roadmap .NET Framework 3.5 SP1 WPF Enhancements Other Enhancements (ASP.NET, etc.) .NET Framework 3.5 WPF 3.5 LINQ Add-in Framework WF & WCF Enhancements .NET Framework 3.0 SP1 WPF WCF WF CardSpace .NET Framework 2.0 SP1 CLR Base Class Library WinForms/ ASP.NET
WPF in a nutshell • Rich Windows Applications • Great Architecture + Great Graphics • Rapid Prototyping • 2D, 3D, Vector, Document Flow, Layouts, Composition, etc.
.NET Client Profile • ~25MB Client-only Subset of .NET Fx • Includes WinForms, WPF, LINQ, etc. • Excludes ASP.NET, WCF, etc. • 200KB fully customizable Bootstrapper
DEMO .NET Framework Client Profile Using the Client Profile Deployment option in Visual Studio 2008 SP1
WPF 3.0 Graphics Recap • Rich set of 2D drawing primitives • Basic 3D functionality via Viewport3D • Rich Media Integration • Extensive Animation System • Advanced Text Stack • Bitmap Effects • Imaging • Compositor
WPF 3.5 Graphics Enhancements • True Interactive 2D-on-3D • Pixel Shaders Effects Model • Hardware-Accelerated • HLSL Support • DirectX Interop • Interop Bitmap • Replaces Writeable Bitmap • Faster Layered Window Support • Animation Fixes
DEMO Graphics Enhancements Interactive 2D on 3D Pixel Shader Effects
New Controls • Web Browser Control • Interop between HTML and WPF content • WPF -> HTML • WPF application can call script methods in HTML with WebBrowser.InvokeScript • HTML -> WPF • Script in HTML can call methods and access properties on WebBrowser.ObjectForScripting that are COM-Visible with window.external • Load hosted HTML content from a stream or string • Access the document object loaded in the WebBrowser
New Controls • DataGrid Control • Available from WPF Toolkit (www.codeplex.com/wpf) • CTP Release with several features, being further improved upon • Ribbon-UI Control • Part of a future release with other controls and style templates
Performance Enhancements • Greatly improved cold start time • >15% cold start gains for small apps • >35% cold start gains for large apps • XBAP cold start improvements (real + perceived) • ~10% faster XBAP cold start in addition to gains above by improving the concurrency of the ClickOnce download sequence • Instant (HTML) download progress UX to improves perceived XBAP startup
Performance Enhancements • Splash Screen to improve perceived startup for Standalone apps • New public SplashScreen APIs • Intuitive VS integration (3 clicks to enable) • “Add / New Item…/SplashScreen (WPF)” • Sample code available for existing apps or for downleveltargeting • Downloadable VS Template from WPF Futures (www.codeplex.com/wpf)
Perf Tools • Snoop • Generally useful to understand your app, view element tree. • WPFPerf Suite • Perf “power toy”, a set of diagnostic tools • Visual Studio Profiler • Great for CPU profiling • VS Developer Edition and VS Team Suite • CLR Profiler for .NET • Shows managed memory usage and leaks
Perf ToolsSnoop • Use to understand the size of the app Visual tree • Useful to detect Virtualization related issues & large app trees
Perf ToolsSnoop • Customer app lessons learned: • Watch for conditions that may turn virtualization off: • Make sure ScrollViewer.CanContentScroll=True • Make sure VirtualizingStackPanel.IsVirtualizing=True • Keep VirtualizingStackPanel as your default panel …or write own virtualized panel. • Avoid Grouping • # of elements can grow also when using rich templates • Use Snoop to watch element count
Perf ToolsWPF Perf Suite • Available for external download (WPF SDK & forums) • Initial diagnosis of over-invalidation & software rendering • A set of tools: • Perforator: Analyzes general rendering behavior • Visual Profiler: Provides breakdown of an object's use of WPF services, such as rendering and layout • String profiler (new): Analyzes where strings are being allocated • Event Trace: Analyze events and generating event log files • Trace Viewer: Record, display, and browse ETW log files in a WPF user-interface format
Perf ToolsWPF Perf Suite: Perforator • To detect low perf b/c SW rendering: • Tint SW rendering: Draws purple when falling back to SW (or when SW api used, old driver, card, layered windows on XP, etc) • # SW Render Targets: If not 0, significant perf problem (old card, layered windows on XP) • # HW Render Targets: # should be equal to the number of app windows times # of display adapters. Indicates app running in HW • Low perf indicators • Large # of Intermediate Render Targets: additional images that WPF needs in order to get content ready for drawing • Maximum SW/HW IRTs per Frame:Shows max # of surfaces needed to render any one frame of the application. Usually caused by the use of DrawingBrush, VisualBrush, Opacity, or Tile modes on a TileBrush. If # high (e.g. > 7), indicates a potential perf issue
Perf ToolsWPF Perf Suite: Visual Profiler • Inspect the Visual Tree • Show “hot path” of layout time: Tints the elements in the tree based on their time spent in layout • Shows inclusive/exclusive times and element counts • History graph of time breakdown: Helps identify whether an application’s bottlenecks lie in layout, rendering, animation, etc
Perf ToolsETW Event Trace & Event Trace Viewer • Useful to view low-level WPF ETW events. WClientUceNotifyPresent: Use to calculate frames-per-second rendering perf (e.g. during animation, video, etc) WClientLayout: Use to calculate time app spends in laying out controls (e.g. during resize) • Can also use Xperf/Xperfinfo
DEMO photoSuru WPF 3.5 Application Running Snoop on photoSuru
References • What’s new in WPF 3.5 SP1? http://windowsclient.net/wpf/wpf35/wpf-whats-new-35sp1.aspx • Introducing .NET Framework Client Profile http://windowsclient.net/wpf/wpf35/wpf-intro-client-profile.aspx • Optimizing WPF App Performance MSDN paper http://msdn2.microsoft.com/en-us/library/aa970683.aspx • Snoop tool http://www.blois.us/Snoop • Various performance related blog http://blogs.msdn.com/jgoldb
Contact • Blog Address www.thinkingMS.com/pandurang • Email Address pandurang.nayak@microsoft.com supreet.singh@microsoft.com