One of the challenges of trying to write a blog like this is getting the level right. I'm conscious that some of my readers are expert "Avalonians" who have been working with the technology since PDC 2003, whilst others are just coming across this technology for the first time or starting out. I try to post things that are interesting at several levels at once, or at least make sure that there's something for everyone. Anyway, this is an extended preamble into a number of positioning questions I'm frequently asked. I figure that it would be somewhat more efficient for me to handle them here on the blog so I can refer others back to them, rather than writing the same reply via email once a week!
How do Windows Presentation Foundation, XAML and ASP.NET fit together? I've heard you can build web applications using XAML - does that mean that ASP.NET is dead?Windows Presentation Foundation uses XAML for constructing user interfaces, certainly. And you can use WPF to build applications that run in a standalone window or in-browser, that's true. But both classes of applications are smart client applications, that is to say that they require the WinFX Runtime to execute. The browser application model in WPF allows for really rich, visually immersive applications to be deployed via the web in a secure manner. However, you're not running HTML when you run a XAML Browser Application (XBAP) - instead, you're simply loading a compiled application within the confines of a browser. ASP.NET is very much alive - it's our server platform for building HTML applications.
Right, I get it. So WPF is the new rich client technology for building web and standalone applications in WinFX. Where does that leave DirectX and Windows Forms, then? Well both technologies are alive and healthy. In fact, Windows Presentation Foundation does its rendering via DirectX, so that's not going anywhere. The truth is that since WPF provides an abstraction layer over the underlying technology, DirectX is still the best choice for the highest-intensity 3D applications. For example, I don't think we're going to see games like Far Cry written using WPF any time soon. In applications where the highest priority is 3D performance and coding to the metal is the order of the day, then DirectX is the best choice. Where you're prepared to sacrifice a little performance for developer productivity and great integration across 2D, 3D, text, animation and media then WPF is the perfect tool.
As far as Windows Forms goes, the current release as part of Visual Studio 2005 demonstrates a level of maturity and strength that is enviable. It's the culmination of the last twenty years of development based on the GDI/GDI32/GDI+ platform. It'll be around and supported for many years to come, there's a great ecosystem of controls and plenty of trained developers. WPF sets off in a new direction, building on a new architecture that we hope will last us as long as the GDI world did. The potential with this platform is to build applications that would be completely impossible in Windows Forms, setting a new bar for usability and user experience. We haven't yet released our first version, so there are inevitably a few minor gaps and limitations, but for new applications this is a fantastic emerging platform to build on for longevity. By the way, if you've already built an application with Windows Forms, it's not an either/or choice - we have good interop support and you can embed a Windows Forms control into a WPF application or vice versa. Some early adopters have dipped their toes into the water by building a new WPF visualization or component for their existing application using the interop layer.
Last question. Windows Forms, ASP.NET/Atlas, DirectX, WPF, Win32 - that's five UI technologies to choose between. How do I decide?Really the variety of choice isn't such a bad thing - it enables you to pick the best technology for the job rather than having to pick a lowest common denominator that tries to serve all masters and ends up serving none.