I was asked earlier when to use what Microsoft client Technology. I thought about just sending a link to Michael Schroeder’s post but decided I should put in my own thoughts on the matter first.
At the heart of Michael’s post is this table.
WPF | WPF XBAP | Silverlight | ASP.Net + AJAX | |
Client | Windows XP SP2 (With .Net 3.0), Vista and obviously Windows 7 | Internet Explorer + Windows XP SP2 (with .Net 3.0) & Vista | FireFox, Mac Safari, Internet Explorer | Any Web Browser |
Deployment | Downloadable Installer or ClickOnce | Runs in Internet Explorer secure sandbox | One-time install of Silverlight plug-in | Web Page |
When to use | Programs that need access to Windows desktop files. | Intranet applications for Windows-oriented companies. | Rich Internet Applications for public-facing web sites | General-purpose public-facing web sites |
Here’s my 2 cents on the subject.
WPF
WPF is a fantastic choice for applications that need full access to the desktop for any number of reasons. That could be full 3D support, access to desktop files and the like. You can install these applications through XCopy, a full downloadable Installer or a ClickOnce installer. Where possible, I like to leverage the ClickOnce installer as it gives some amazing benefits around auto-update and keeps my application in a secure sandbox so deployment becomes really easy.
WPF XBAP
Just don’t use XBAPs anymore. This was an attractive option for Intranet applications back before Silverlight 2 and to a lesser degree Silverlight 3. However, now that Silverlight has the power that it does with .NET and OOB options and the like, opt for Silverlight anytime you would have considered XBAPs.
Silverlight
Silverlight is the right choice for any external facing Applications. But that’s the key. I really look at Silverlight not as an HTML replacement but a true application layer. That’s one of the central points in the talk that James Ward and I did at Web 2.0 Expo last year – http://www.slideshare.net/joshholmes/best-and-worst-practices-building-ria-with-adobe-and-microsoft.
ASP.NET + AJAX
ASP.NET + AJAX is the right choice for external facing, or even internal facing, web sites where the primary focus is information dispersal. That said, there are some amazing applications built with JavaScript in the browser.
Overall
The reality is that there are a lot of grey lines. WPF is getting a lot easier to deploy breaking down the traditional decision points between desktop and web applications. Rich Web Applications blur those lines as well and the reality is that they could be used to build a lot of applications that have historically been either written as full desktop applications or as web applications. Then on the web application side, JavaScript and the browser are getting faster, strong and easier to develop all the time so it’s becoming more of a viable application building set of technologies.