WPF Client and XBAP Design Considerations
Monday, February 05, 2007 7:44 PM
If you've been involved in any WPF development, you'll know that there are two main ways of deploying a WPF application: You can create a client executable that runs standalone or an XBAP (XAML Browser APplication) that runs in the context of a browser. Regardless of the technical implications of selecting one over the other, there are a number of design implications that I believe many people don't realize until they start down either path.
For example, I've been working on a project recently to migrate a Windows Forms application to WPF. As we started the migration we got thinking about deployment - our goal was to make deployment of the WPF application as painless as possible. Conversations ranged from custom MSIs to blind installs etc. After reviewing all options, a decision was made to host the WPF application in the browser - using an XBAP. We concluded that this would offer the best end user experience, and the security tradeoffs of running in a sandboxed environment were something that we could deal with.
What we didn't think about however was the design considerations of such a decision. For example, the original client application relied heavily on the use of "right click context menus" to navigate the data. This is a perfectly natural way of navigating using a client application - even with WPF - but when we moved to the XBAP model the immediate feedback from users was that they "didn't get it" without reading our instructions. (Very few people expect to be able to right click on a web page and not get the standard browser right-click menu).
Although the function of the application remained identical, the hosting of the application introduced some under recognized principles of user experience that we just overlooked (and as a result, we now have to go back and implement more "browser-accepted" design principles before we can release it to a wider audience!).
The moral of the post? Just because you can easily deliver a different experience from a technical standpoint doesn't mean that you can rely on the same, underlying user experience principles.