.NET 3.5 Client Product Roadmap

A few months ago I did a .NET Web Product Roadmap blog post where I outlined some of the product plans we have to build on top of the web development features we’ve shipped with Visual Studio 2008 and .NET 3.5.

Over the next few months we will also be releasing a number of enhancements specific to client development as well.  We have put a lot of effort into addressing some of the biggest areas of customer feedback, while also trying to really push the envelope on the capabilities developers have when building Windows applications. All of these improvements build on top of VS 2008 and .NET 3.5, and will make .NET client development even better going forward. Below is a roadmap of some of the upcoming releases we have planned for the months ahead:

Improved .NET Framework Setup for Client Applications

One of the biggest asks we’ve had over the years from customers and ISVs building client applications is to make the setup and installation of the .NET Framework easier and faster.

This summer we are going to ship a new setup framework for .NET that makes it easier to build optimized setup packages for client applications. This setup framework can be integrated with existing installation frameworks (for example: products like InstallShield), and enables a smaller and faster end-user setup experience of the .NET Framework.

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.

Improved Working Set and Startup Improvements for .NET Client Applications

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 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

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.

VS 2008 WPF Designer Improvements

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.

Summary

The above improvements should make it easier to build great desktop applications. Because these improvements are built on top of VS 2008 and .NET 3.5, they will also be easy to take advantage of (and in most scenarios not require any code changes to take advantage of them). Stay tuned to my blog for more details about each of the above improvements in the weeks ahead.

Hope this helps,

Scott

63 Comments

  • This is great news. When/how can we find out more information about the new install bootstrapper? Will it be an evolution of the existing .NET bootstrapper, or something new? We've encountered some limitations in the existing bootstrapper that make it less useful than it should be - hope they are being addressed.

  • I'm verry happy to see that a grid will be added to the default dataset. The lack of the grid was sometimes for customer of mine a drawback.

  • Great news. Like others, I'm interested in how this gets deployed. Is it a Service Pack with some additional DLLs? Is it a point release?
    Will there be a CTP or beta for some of the new APIs. Very keen to try them out with our large real-time dataset scenarios.

  • Speaking of client installs, are there any plans to address the situation where a client may not have the .NET framework and cannot be guaranteed to be connected to the internet at the time of the install?

  • I hope you finish up some of the 'loose ends' - like sortable binding collections for use by the new data grid (and the old listview). While I like WPF, it remains very 'unfinished'. And can someone check into what happened to WIA? The replacement, WPD is hideous (including no .Net support) at this point. How many LOB apps can ignore docuement scanning?

  • Scott,

    Sounds like a great summer for WPF. Thank you!

    Karl

  • Hi KevinDente,

    >>>>>>>> This is great news. When/how can we find out more information about the new install bootstrapper?

    Send me email (scottgu@microsoft.com) and I'll hook you up with the folks building it. It would be great to have your feedback on the design.

    Thanks,

    Scott

  • Hi Joe,

    >>>>>>> Will there be a CTP or beta for some of the new APIs. Very keen to try them out with our large real-time dataset scenarios.

    Yes - we'll have a beta for the new APIs later this spring. We'll then role the changes into a servicing update that will distribute via Windows Update.

    Thanks,

    Scott

  • Hi Duncan,

    >>>>>>> Also, is there likely to be a more modular approach? It's getting too big! e.g many desktop apps never use WF or WCF, so why are they required?

    Yes - we are investigating a more modular setup as part of this.

    Thanks,

    Scott

  • Hi David,

    >>>>>>> Speaking of client installs, are there any plans to address the situation where a client may not have the .NET framework and cannot be guaranteed to be connected to the internet at the time of the install?

    Yes - we'll support both local installation (for example: included on a CD/DVD with a sample application), as well as internet download.

    Hope this helps,

    Scott

  • Yes, finally an admission that WPF performance stinks.

    It is a servicing update of CLR, so that is only a part of the big problem (aka 'working set', 'cold startup', data structures bloat). You should rewrite most of the stuff already in GAC and %windows% path..

    Generics need massive improvement (without __hack here and there, and proper iterators and death of ConstrainedCopy and similar silliness).

    XAML forest and verbosity needs plenty of work. The fat needs to trimmed from the entire media stack and opened up.

    Look at how Adobe is approaching it, aim straight at the GPU.

    Do that PropertyGrid justice too? The problem they have is deep in declarative mess spread across attributes, markup, activation, setup, and I'll venture a guess: data binding will change shape, to quote, 'dramatically'. Yeah right..

    Just look at what new 'games' are doing with media and graphics, something WPF will not approach for a decade at this pace.

    I bet my CPU utilisation will drop from 100% to 80% and they'd be another call of success, you watch (like it was called success 3 years ago).

    Do it justice, complete it first, polish it, then provide a native impl with optimal metadata rep in RAM wherever possible. Then you have a real hype, not another 'revolution in non-performance'.

  • Hi Scott,

    Couple of questions.

    Is the new setup going to be based on WiX? I thought that wasn't coming out until Rosario? I know one or two people who might be interested in this ;)

    Also, how come no improvements for WinForms? I haven't heard much about what is happening with that since WPF.

    Oh, congrats on the promotion.....

    Cheers

    Ben

  • Great news.
    I hope this will mean that changes to red bits for 3.5 if required will be taken care of by the install process.

  • Any hints on what the api for creating hw bitmap effects will look like?

    Jer

  • WOO HOO a datagrid for WPF!!!

  • awsome :O
    will there be channel9 videos about this stuff? or recorded talks from mix? *fingers crossed*
    also any word on when we will be able to write pixelshaders for wpf? :) (that is, shades that are not fixed function) that whould really really cool :)

    /aL

  • Those improvements sound great. Most of the apps I have distributed have been to a dev style audience but I have some that are aimed at the general public so giving concise install notes in the case that the end user has no .net framework (or an older one installed) can be a bit painful!

  • ScottGu on WPF enhancements...........

  • Thanks for the great news scott.

  • Sounds great. Any chance you can give or point to some more detail on exactly what will be improved in ClickOnce? Will we be able to customize the user interface portion, etc...

    Roel

  • This is all great news Scott. Having a Ribbon from Microsoft provides us with a compelling reason to get serious about doing a WPF version of our software.

    Will the new controls be available on Windows XP?

    Is there any chance the Ribbon will find it's way to Silverlight 2.0 (or 2.0+)? They seem made for each other IMO.

    Thanks!
    Joe

  • Will Microsoft use .NET for its applications in the future? The only .NET app I know of is the Media Center software. But what about, say, MS Office?

  • We use automated builds using cruise control on a build server here. One of our problems with the current setup projects is that they're part of Visual Studio and not from MSBuild. This means we had to install Visual Studio on the Build Server, surely something we would like to get rid of. Does this new setup feature take care of this?

  • Why is WPF/XAML not available on the Compact Framework?

    Why o Why o Why

  • Hello Scott,

    Please ensure that a set of resource dictionaries encapsulating the Microsoft Office themes are released with the ribbon and datagrid controls. Microsoft need to move away from having vendors do all the presentational work for their components (Infragistics/Devexpress etc), especially if you are releasing a design centric platform.

    It is pretty easy to knock up the office themes (plus one or two others) in WPF and inclusion of them will attract swathes of LOB developers (myself included).

    The other big problem that you allude to is performance. Please do/get a Rico Mariani performance testing with any of the list type components and the tree view which really slow down when there is a lot of data (Check Bea Costa's blog)

  • Given the number of talented ASP developers Microsoft must have, surely someone could be tasked to create a better blog comments system than this? It is very difficult to see what answers are in response to what questions, if a question has been answered, etc?

    Time to dogfood the ScottGu blog!!

  • The installer imrpovements are very welcome. I liked ClickOnce, but I had to drop it from my application, because it did not give me enough control over the system. The biggest headache was that I was unable to register my clickonce deployed application to be auto starting. Is this going to be change anytime soon?

  • We are *really* looking forward to using WPF, LINQ and all that good stuff in applications. As welcome as the improvements you write about will be - especially the improvements to the installation process - the reason we can't use WPF and other new .NET functionality is that it's too hard to get companies to install .NET. If an app is developed by an in-house group maybe they have the influence to persuade the company to deploy .NET 2.0+ but as an ISV we don't. .NET 1.1 is out there because it's installed as part of Windows XP SP2 so we're constrained to this version because we can reasonably sure that it will be available on client machines running Windows XP.

    Are there any plans to get later versions of .NET more widely distributed?

  • Great news, although I'm not a big desktop app developer myself, all the features you talked about were exciting.. the .NET installer service is something I've thought about myself, and its nice to see an intelligent system being created to get .NET working dependent on the context of the deployment..

    Also, its a great feeling to improve the internals of something, to make them faster, or more capable, without making breaking changes.. kudos to everyone working on these optimizations.

  • Hi Scott,

    Setup & Deployment is a real pain with VS, although its got better with every release. However I would really love to see xml config approach for building a Setup & Deployment project where developers can mention required settings and parameters in some xml config file, click 1 button inside VS IDE and VS does the rest.

    The xml config file can have settings like order of installation screens, text to be shown on screens, etc etc. We can then have this xml config file as an embedded resource

    This would result in updates to Setup & Deployment projects real easy at run time, where if any changes are required, all the developer has to do is modify the XML file and embed it again

    Cheers,
    Raj

  • Im wondering when there will be improvements to Windows.Forms. There are many Controls that I miss, which can be seen in many other Applications (even in VS): a good DockingWindows-System, MultiColumnListviews that support CustomControls depending on Data, Sortable (by drag and drop) Lists and Treeviews, MultiColumnTreeviews...

  • Good news. Please add my vote to including the PropertyGrid in the future WPF controls. I've grown accustomed to its face...

  • This is what we've all been waiting for! So far I've been involved in three major WPF projects and I've seen a great degree of disappointment in terms of performance despite HW acceleration.
    Better performance + DataGrid = greater chances of selling WPF to the enterprise.
    I hope you'll provide a cooler looking set of default styles, too.
    Looking forward to the CTP.

    cheers
    Florian

  • When the visual inheritance(its like visual inheritance of windows form) of Wpf-Xaml will be implemented and published by Microsoft?

  • Will the DataGrid support Column virtualization? In my opinion this is one of the shortcomings of the current commercial WPF Grid controls. Add anything more than about 25 columns, and the whole thing grinds to a halt.

  • Thank you for giving us a heads-up on the updates coming soon. If I remember correctly, the 2008 designer doesn't support the Viewbox WPF element for some reason...which I always thought was odd.

  • This is really great news! Increasing cold startup performance (even for .NET 2.0 apps) will give as the necessary story to calm down some of our very demanding bigger customers in the German market! Thanks very much for this news!

  • Thanks for answering my question about deployment Scott.
    If this is released as a service update on Windows Update, how will apps detect the presence of the new APIs? How will the binding work? Will the new APIs be shipped in a separate DLL that can be installed in the local dir? If local, then how will they be patched? Or will you be using the new upgrading/bootstrapping features to roll out a build incremenet?

  • I hope you guys can optimize the Graphic Interface of VS2008. I find it very slow, and difficult for fast development.

  • I send the comment "WOO HOO a datagrid for WPF!!!"

    But please make it as responsive as Excel when scrolling through very large tables (>100K rows.) That probably means virtualizing data storage so that me, the programmer, doesn't have to worry about the size of the grid. Also enable lazy loading so that I can see the top of the grid before all rows are added. Also make sure discontiguous rectangular selection is implemented.

  • WriteableBitmap has my attention. Is the intent of this to provide essentially an "immediate mode" aspect to WPF? Our app creates graphs with hundreds of thousands of points/markers, and creating each point/marker as a FrameworkElement was too memory intensive. Sounds like maybe we could draw our graphs as WriteableBitmaps instead.

    Can't wait.

  • Dunno if this is the right avenue for this question, but one issue I have with the VS2008 Web Designer is that it still cannot support CSS inside the designer. I am using asp.net themes and they don't apply properly in the visual view. This is not a huge issue, but I thought this was something that was supposed to work now. Am I missing something?

  • What about the mobile web stuff? With the release of the iPhone there have been downward pressures on carriers to offer flat rate data packages. Rogers Wireless here in Canada announced $7 unlimited mobile web browsing which is a first as far as I know.

  • Can you please add ngen to the click once installation, we are installing applications on the clients using click once, and we have no direct way to run ngen after the installation, and even if we find a workaround, ngen still cannot run without admin permissions.

    Ngen on click once will be very nice to have!

  • Scott,

    This is all very good, however it would also be nice if existing bootstrapper packages were also kept up to date; for example, if you want to install SQL Express SP2 as a part of a solution the only option is a (very good) 3rd party bootstrapper modification - Microsoft have failed to provide one of their own.

    Similarly, I have yet to find a bootstrapper that will allow the compact framework redistributable to be installed onto a PC so that it can be installed via ActiveSync at the same time as an application.

    This all makes for very disjointed installers at the present; I hope that the changes you are hinting towards will address all of this?

    Martin.

  • I find it interesting that you front-loaded the cool new features in the web product roadmap, while you back-loaded the relatively minor new features in the client product roadmap and front-loaded the boring perf improvements. Perf improvements do matter, but based on your allocation of resources toward sparkly new features, it appears that DevDiv is far more interested in making web development cool and exciting than it is in making client development cool and exciting. Boo.

  • awesome - I hope a VirtualizedWrapPanel is in that list of new controls!

  • I'm a bit curious what this WPF ribbon control would look like. From a logical tree standpoint, I'm able to recreate the ribbon just fine via a TabControl (although the Office button requires a new window subclass to override the title bar drawing, but that's not really part of the core ribbon, IMO). Property pages, customization, etc. also don't seem to be dependent on logical tree changes. Guess I'll have to wait and see, but I'm crossing my fingers that WPF doesn't wind up getting overloaded with new control classes when a style would suffice.

  • Awesome news, especially on the performance end! Thanks for the update =)

  • WPF Performance Improvements WPF Performance Improvements!!!!!! all what we need

  • Any chance the new WPF controls includes a masked edit control (please?). 8^)

  • Scott,

    Are there any plans at all for WPF/SL to have a richer Media API? I know you've announced the WritableBitmap, but the Video & Audio APIs seem to be somewhat lacking. Even to display something fairly basic (like a graphic equalizer) isn't possible with the current libraries (never mind Video effects). Is anything happening in this space?

    pq

  • Scott
    Regarding your comment - "Yes - we'll have a beta for the new APIs later this spring. We'll then role the changes into a servicing update that will distribute via Windows Update."

    is there a place we can sign up to get on the Beta?

  • I really hope these updates will significantly improve the "WPF 1.0 (managed)" experience.
    It's a very promising platform but not good enough (as of yet) to use for new applications.
    Too many show-stopper issues, especially considering VS2008 was released a year AFTER Windows Vista ... :|

    Remember: developers, developers, developers! :)

  • This is great, but when are we getting the .Net framework 3.5 SDK?

  • This is a great feature list. I do hope that the bootstrap will be available to Express users with both ClickOnce and stand alone (I myself currently use InnoSetup for a more traditional setup experience.)
    Very much looking forward to blur and drop shadow being hardware rendered, and an out of the box ribbon with most of the Office UX guidelines already filled out and ready will be great! :)

  • I have no idea if I'll get an answer to this since its so close to Mix08, but is there any chance of the WriteableBitmap API that was mentioned in this post being available in Silverlight 2.0?
    Man there are so many Web applications that would benefit from such an API e.g. web paint programs, image/photo manipulation, remote display implementations such as VNC etc.

  • Scott,

    Any plan for .Net for IPhone???? Java is already porting JVM to IPhone specially now that the SDK is relased.

  • Looking forward to finally having a DataGrid in WPF. Is there any idea of whether it will be roughly as capable as DataGridView, or how it will compare to the existing third-party WPF grids such as Xceed? Is there a beta/CTP release of this planned? Also worried about performance on large datasets. Thanks.

  • Scott,

    It would be awful nice to get some gesture support into the WPF framework. Being able to do swipes with a mouse, or a finger, ala like the iphone interface, as part of WPF, would be nice. And please, make client development a first class citizen again. Not all of us do web, or ajax.

    Thanks

  • I second (or third/fourth - didn't read all the comments!) TestUser's desire for a performant grid and presumably, the WPF plumbing underneath to enable it.

    We had to abandon development with WPF (at considerable costs) due to the available grids from Exceed and Infragistics having severe performance issues. We went back to the "legacy" C++ grid, rather than starting from scratch in Winforms which was less than ideal, since we are having to do COM Interop with many of the newer C# pieces we have developed.

    We work primarily with the desktop, and often have to deal with very large amounts of data - 5 Million rows plus. Unfortunately, the C++ side of the house is so fast, user expectations is set at a very high level, so only a small performance degradation could be tolerated, if offset with great new features.

    By the way, really enjoyed your presentation at the PSR in Redmond back in October.

    Gareth

  • I'm glad to see the improvements coming to WPF. As one who has personally cursed the performance of the TreeView control before writing one from scratch, I'm glad to see both it and ItemsControls in general get some sweet performance love.

    Two major issues left for me. Our ui needs to integrate with an existing application written for OpenGL, and that application exposes it's own data source. It would be great if..

    (1) we could integrate an OpenGL render buffer the same way we will soon be able to integrate DirectX surfaces.

    (2) we could have data templates triggered by the object type names in our custom data source the way XmlDataProvider and XmlLinqProvider do.

  • Please don't keep us in suspense! Even some documentation on the proposed changes would be nice :-)

Comments have been disabled for this content.