Post on 29-May-2020
.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 3.5 SP1
WPF Enhancements Other Enhancements (ASP.NET, etc.)
.NET Framework 3.5
WPF 3.5 LINQ Add-in FrameworkWF & WCF
Enhancements
.NET Framework 3.0
WPF CardSpaceWCF WF
.NET Framework Roadmap
.NET Framework 2.0
CLR Base Class LibraryWinForms/
ASP.NET
WPF in a nutshell
Rich Windows Applications
Great Architecture + Great Graphics
Rapid Prototyping
2D, 3D, Vector, Document Flow, Layouts, Composition, etc.
WPF 3.5 Enhancements
• .NET Framework Client Profile
• ~25MB client subset of .NET Framework
• Customized install experiences
Deployment
• Interactive 2D on 3D
• Pixel Shaders and Effects Model
• DirectX Interop
• New Controls
Graphics
• Cold Startup Improvements
• Several perfenhancements
• Profiling tools and instrumentation
Performance
.NET Client Profile
~25MB Client-only Subset of .NET FxIncludes WinForms, WPF, LINQ, etc.
Excludes ASP.NET, WCF, etc.
200KB fully customizable Bootstrapper
.NET Framework Client ProfileUsing 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 EnhancementsTrue Interactive 2D-on-3D
Pixel Shaders Effects ModelHardware-Accelerated
HLSL Support
DirectX Interop
Interop Bitmap Replaces Writeable Bitmap
Faster Layered Window Support
Animation Fixes
New ControlsWeb Browser Control
Interop between HTML and WPF content
WPF -> HTMLWPF application can call script methods in HTML with WebBrowser.InvokeScript
HTML -> WPFScript 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 ControlsDataGrid Control
Available from WPF Toolkit (www.codeplex.com/wpf)
CTP Release with several features, being further improved upon
Ribbon-UI ControlPart of a future release with other controls and style templates
Performance EnhancementsGreatly 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 downlevel targeting
Downloadable VS Template from WPF Futures (www.codeplex.com/wpf)
Perf ToolsSnoop
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 .NETShows 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 renderingA set of tools:
Perforator: Analyzes general rendering behaviorVisual 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 filesTrace 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 apiused, 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 indicatorsLarge # 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 Tools - Perforator
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 layoutShows inclusive/exclusive times and element countsHistory graph of time breakdown: Helps identify whether an application’s bottlenecks lie in layout, rendering, animation, etc
Perf Tools - Visual Profiler
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
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
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.