WPF/e on Devices and with Data

This week there has been a lot of hype (here, here, here and here) about the December CTP of WPF/e (which you can download here).  As Doug points out there is unfortunately no managed code support in this CTP but hopefully this will be resolved in the next CTP.  The whole notion of WPF/e is interesting when you pitch it against previous web technologies (ASP.NET, AJAX) and client technologies (WinForms, WPF).  In fact if you look at the WPF there is a browser deployment option where you can build an application that will be rendered in the browser.  However, this still requires the .NET v3 runtimes to be installed on the client machine.  Clearly this isn’t a great option for cross platform applications.  Where WPF/e is positioned is similar to Flash.  There are/will be runtimes available for a cross section of platforms and it will be supported in a number of different browsers.  In the past if you wanted to build an application that worked across platforms/browsers you were somewhat limited in what you could do but going forward the power of WPF/e will allow us to build “almost” client side applications.

I say “almost” because there are a number of hurdles to overcome before this will be possible.  With .NET v2 and WPF you have the option to ClickOnce deploy your application.  This is appealing as it combines the benefits of installation (ie offline availability) and application updates (ie when a new version is available the client will be prompted to update).  Clearly this is a direction the WPF/e should go in so that you have a cross-platform/browser application that is always available regardless of connectivity.

The next point to consider is that once you have an application that is capable of working offline where is it going to source its data.  This is the same issue that needs to be considered when building Windows SideBar gadgets – you have to handle the scenario where the computer is not online.  Ideally it would be great to be able to cache data, or better still synchronise data to the local computer, and use this data in the application.  Given the history of SQL Server CE (ie for mobile devices that had different platform architectures) and its ability to run with minimal (or in fact zero installation) this would be truely awesome convergence of web and client technologies.

WPF/e wouldn’t truely be “everywhere” if there wasn’t support for mobile devices and I don’t just mean Windows Mobile devices.  It would be great to have a technology that would enable applications to run on any mobile devices regardless of manufacturer.  This combined with offline capabilities and local data is enough to get any developer (regardless of platform or technology preference) excited.

Leave a comment