Application and Content options with WPF
Application or content in WPF can be architected to fit into one of the following segments:
- Loose or Uncompiled XAML
- Browser-hosted applications (XBAPs)
- XPS documents
- Standalone, window-based applications (SAAs)
Loose XAML has the advantages of simplicity and is suitable for small islands of rich data or vector graphics, and sometimes even as standalone pages with low interactivity. Loose XAML is especially good for represent flow documents. However, no script or code-behind support is currently available in concert with loose XAML. Allows for seamless integration with existing web content: you can seamlessly navigate to a loose XAML file from HTML and back.
XBAPs run in a partial trust sandbox within the browser and aim to offer parity in features (I'd argue it achieves it more or less) with traditional web applications. This is suitable for building rich web applications. Currently XBAPs only work on browsers that support the Web Browser control (IE6/7, Netscape, MSN Explorer, Maxthon etc.). I know people have written WebOC plug-ins for Firefox, Opera etc. (e.g. Neptune, IETab etc) but I haven't played with these enough. XBAPs throw no prompts on launch and therefore they too allow for seamless integration with existing web content.
XPS documents are paginated representations of electronic paper. The doc format is open and cross-platform. Ideal for creating, sharing, printing and archiving documents. XPS provides support for a subset of XAML functionality. They may be viewed inside the browser akin to XBAPs, or in another viewer (say 3rd party) if one is registered.
Standalone, window-based WPF applications have the same deployment model of ClickOnce full trust applications (i.e. Start menu and Add/Remove Programs integration, update support etc.). These applications are installed per-user on your computer and you can tap into the complete power of Windows Presentation Foundation with these applications.
Besides these, there is:
- Windows Presentation Foundation/Everywhere (WPF/E)