Scott Guthrie recently outlined some of the changes developers can expect when building .NET 3.5 Windows Client applications. These changes will be released over the next few months.
The roadmap includes such areas as:
Improved .NET Framework Setup for Client Applications
One of the biggest pain points in distributing .NET Client applications can be setting up and distributing the .NET Framework. Microsoft is promising to make this easier:
Windows Forms and WPF client applications will be able to use this setup framework to cleanly “bootstrap” getting the .NET Framework installed onto machines. The setup “bootstrap” utility will support automatically downloading the minimal set of .NET Framework packages needed to enable .NET 3.5 client applications on a machine. For example, if a user already has .NET 2.0 installed on their machine, setup will be smart enough to automatically download only the upgrade patches necessary to update .NET 2.0 to 3.5 (and not have to re-download the components already provided by .NET 2.0). This will significantly shrink the payload size of client setup programs, and speed up the installation experience.
We’ll also be delivering improvements that enable a more integrated application install experience for both MSI and ClickOnce based solutions, and support a more consumer friendly user experience that is easy to build.
The setup framework can also be integrated with third-party installation frameworks, products like InstallShield. This enables smaller and faster end-user setup of the .NET Framework.
Improved Working Set and Startup for .NET Client Applications
The amount of time it takes for an application to load for the first time when no other .NET applications are running with the same version of the .NET Framework can take a fairly long time, certainly compared when starting up a second application when the framework is already loaded.
One of the other common asks we receive is to enable .NET client applications to launch faster in “cold startup” scenarios. “Cold startup” scenarios occur when no other .NET client applications are running (or have recently run) on a machine, and require the OS to load lots of pages (code, static data, registry, etc) from disk. If you are loading a large .NET client application or library, or are using a slow disk, these cold startup scenarios can require many seconds for your application to start.
This summer we are going to ship a servicing update to the CLR that makes some significant internal optimizations in how we optimize our data structures to cut down on disk IO and improve memory layout when loading and running applications. Among many other benefits, this work will significantly improve the working set and cold startup performance of .NET 2.0, 3.0 and 3.5 applications and will dramatically improve end-user experiences with .NET-based client applications.
Depending on the size of the application, we expect .NET applications to realize a cold startup performance improvement of between 25-40%. Applications do not need to change any code, nor be recompiled, in order to take advantage of these improvements so the benefits are automatic.
WPF Performance Improvements
This will be one of the updates developers will look most for. Performance of WPF seems to be a bit slow unless run on the fastest systems, the team is updating commonly used components to help developers:
This summer we are also planning to release a servicing update to WPF that includes a bunch of performance optimizations that improve its text, graphics, media and data stack. These include:
- Moving the DropShadow and Blur bitmap effects, which are currently software rendered, to be hardware accelerated (making them many times faster). The APIs for these effects will stay the same as they are today (which means you do not need to change any code nor recompile your apps to take advantage of these improvements).
- Text scenarios, especially when used in Visual and DrawingBrush scenarios, will be substantially faster. The APIs for these scenarios also stay the same (which means you do not need to change any code nor recompile to take advantage of the performance improvements).
- Media and video performance scenarios will also be much faster (also no need to change any code nor recompile to take advantage of the improvements).
- We’ll be including a new WriteableBitmap API that enables real-time bitmap updates from a software surface. We’ll also be adding support for a powerful new effects API that enables you to build richer graphics scenarios.
- We’ll also be including new data scalability improvements that can be leveraged for data editing scenarios. These include container recycling and data virtualization support that make it easier to build richer data visualization controls.
WPF Control Improvements
I speak with developers using WPF on a regular basis and a common complaint is the number of controls available. Microsoft will help with this as well:
Later this year we are also planning to release a number of new controls for WPF. Included in the list we are working on are DataGrid, Ribbon, and Calendar/DatePicker controls
These controls will go a long way in the adoption of using WPF for those waiting for additional controls.
Visual Studio 2008 WPF Designer Improvements
One last area with improvements is the WPF designer which lacks in some areas developers are used to:
We are also planning to release a servicing update of VS 2008 that includes a number of feature additions to its WPF designer. These include event tab support within the property grid for control events, toolbox support within source mode, and a variety of other common asks and improvements.
These updates are intended to help developers build desktop applications easier and in most cases won't require any code changes to implement. Developers need to be aware all these improvements run only on .NET 3.5 Framework and Visual Studio 2008.