One of the most common topics that we have discussions around in our Fasttrack reviews with ISVs is the choice of User Interface (UI) technology. If you go back 10 years or so, it was a an easy decision - there was the choice of Visual Basic or MFC/C++ from Microsoft, plus other tools vendors, such as Borland, with their own offerings. Now there is a vast array of options, spurred on by the growth of the internet, each with their own strengths and weaknesses.
Within the Microsoft stack, the most common options are (on a sort of rough decreasing scale of power and features)
- Windows Presentation Foundation (WPF)
- Silverlight
- HTML and Ajax (ASPX)
- Pure HTML (ASPX)
Many ISVs still have Visual Basic 6 apps, many of which are in turn, deep down, simply Visual Basic 3 apps, recompiled for version 6. For them, it’s usually time to reassess the needs not just of the UI, but the application as a whole, as many of the design decisions taken at the applications inception were pre-Internet, pre-web services, pre-N-tier, etc, so a rethink makes a lot of sense
For .NET developers with a big investment in WinForms, the same imperative to move to a new platform is not so strong. WinForms has been around for years, it is a well understood technology, it’s easy to find people who can program in it, most quirks and bugs have been ironed out, and it will be around for years to come, and for many types of Line of Business applications, which focus on data entry and display forms, it’s a pretty good match, though as we shall see, its not as simple as that . . . .
If you are not familiar with Windows Presentation Foundation (WPF), now’s the time to take a look. WPF has its own Wikipedia entry, which seems pretty accurate, with some useful links, including the official MSDN WPF Developer Centre, which in turn has lots of good links, not least of which is the WindowsClient.net which covers the wider topic of applications and technologies for the desktop. Bookmark these links now!
The most interesting bit of WPF is its UI, so reading technical articles about it tends not to bring it to life. A very quick and painless way to get a feel for how WPF apps differ from more traditional apps is watch some videos. Try Yahoo Messenger or (and this is one of my favourites) British Library's Turning Pages. It’s worth looking into the British Library's Turning Pages in a bit more depth, as it really shows how WPF is pushing the boundaries of what is possible, in a way that has never been possible before – this is as far away from grey buttons with grey text on a grey screen as is possible. There is list of plenty more WPF applications up on Channel 9.
But to get a real feel for WPF, you need to get the .NET Framework onto your machine, so you can run the samples – a good place to start is to download the Microsoft .NET Framework 3.5 Service Pack 1. Once you have it installed, run the British Library Turning Pages Application on your own machine. It’s good, isn’t it:
So, when it comes to graphics, design and UI, it’s clear that WPF has a major role to play. But for most LOB apps, many developers have wrongly dismissed WPF because they see no role for it, in apps that tend to be so focused on data entry.
Wrong! Think about navigation. Think about how a user navigates through the application to find the work they need to do. Think about how you visualise all the complexities of the data and tasks that are possible, and highlight the ones that are outstanding or relevant. When you then think about the costs of re-training users or users not doing the right work, then UI becomes even more important, and is often critical to the success of a product or application.
Here is a screen dump from TaskVision, one of the early standard Windows Forms reference applications:
Can you work out what you, as the user of the app, are meant to do next? Which tasks require your attention? It’s not obvious is it?
When you start clicking menu options and buttons, the UI gets no better:
One of my colleagues re-wrote parts of the application in WPF to demonstrate how it could look:
Its a lot more visually appealing, and its easier to see how tasks are progressing. What’s not clear from these screenshots is that you can drag and drop tasks onto members of the team to assign the tasks to them – a very easy metaphor for users to work with.
Go ahead and install the WPF FamilyShow application developed by Vertigo – it uses ClickOnce, so its very quick and easy to install from the link on the page. Its a genealogy application, and to get your started, it includes our own royal family.
You can then use the slider bar in the bottom left corner of the screen to go back in time, and display only a subset of the family:
Very intuitive very easy to use.
But don’t take my word for it – take a look at the Lawson Smart Client – a real world LOB app, which has generated a lot of positive comments.
A final thought. Windows 7 will come with WPF on it, and with its touch screen, will no doubt herald in a new era of visual applications, and WPF is the natural technology to fulfil those requirements. They will be easier to use than their WinForms counterpart, give users more visual clues, and provide feedback. Here are some early screen shots of some of these:
So start playing with WPF now, and see what the likes of Conchango did with the Tesco project.
Don’t forget to check out the WPF Toolkit on Codeplex, as the main focus for WPF 4.0 will be LOB scenarios - “The WPF Toolkit is a collection of WPF features and components that are being made available outside of the normal .NET Framework ship cycle. The WPF Toolkit not only allows users to get new functionality more quickly, but allows an efficient means for giving feedback to the product team. Many of the features will be released with full source code as well. Over time, some of these features may be moved into the .NET Framework, based on readiness and customer feedback”.