This post comes after an internal discussion we had today... in summary, we've a project in progress (client-server application) where the client side is a complex WPF application. Now there's a requirement about having the client functionalities available also via browser on the intranet. What solution to propose? The "survey"'s results are these:
ASP.NET (Silverlight) application: 95%
XBAP: 5%
Unfortunately I see that many .NET developers doesn't know what XBAPs are or, if they know, they completely neglect them. Do you know that there's also this project type on Visual Studio 2008?
XBAP (or XAML Browser Application) permits you to bring a WPF application into the browser world. An XBAP is a WPF application that runs inside Internet Explorer in a limited-trust sandbox to prevent applications from accessing resources on the local system. With this technology you get all the rich interactivity of WPF (full features) and simple deployability of a Web based solution.
XBAP is in my opinion a really interesting technology that must be really taken into consideration if you need a full feature WPF application that must be run on a IE browser inside an intranet.
Why this limitations? Because XBAP is not the "paradise"...
XBAP has a series of limitations that you've to consider during your choice:
- The .NET Framework 3.x must be installed on the client machine
- They only works on Internet Explorer (but I can say you that Firefox 3.x supports XBAP as well)
- They conforms to the .NET security model, so there are restrictions on the "Internet Zone"
So, if you need a rich intranet application and on your intranet you're sure that all the clients have IE (or Firefox at least) and .NET 3.x installed (maybe controlled via network policy), XBAP is a perfect solution. Your WPF client application could be available also via the browser with the full effects you want...
If you're on an intranet where you have different browsers or different platforms, or if you want to open your application to the Internet world, maybe Silverlight is the best choice.
Silverlight is a browser plug-in that provides a cross-platform and cross-browser support to WPF applications. You will not have all the WPF features available, but you can satisfy this needs.
For our requirements I think that XBAP is an interesting choice and we can have our WPF application available as an XBAP in a really quick time. So... long life to the neglected XBAPs... 