WPF in Line of Business, Why and where..
- This is part 2 in the "WPF in LOB series".
- This is not meant to be a comprehensive introduction to Windows Presentation Foundation (WPF).
- The goal is to share my experiences on why companies are using WPF to build line of business applications.
- These are a few common reasons and sample projects. For a more comprehensive list of customer evidence try the WPF in LOB case studies list or the Application Portfolio list ( which includes consumer apps).
Enterprises (and Enterprise ISVs) are realizing that a great user experience drives business value and makes significant impact to the bottom-line.
- Ease of use can save time to accomplish a task --> it can decrease training costs; it also increases employee morale.
- Insightful data visualization improves the information worker's decision making process --> accelerating time to market and time to solution.
- Higher fidelity of information, like Rich typography in documents, often increases end-user's retention or comprehension -- > Improving the decision making process
- Consistency in user interfaces also decreases training cost, and increases end-user productivity
- We live in a competitive world where great hardware is becoming the norm, a competitive advantage can be gained if you couple great software that takes advantage of these hardware resources ( like higher res monitor, a good video card, a little more memory, etc.). I think all of these factors ( responsiveness, adaptability to displays, etc.) are part of the end-user experience.
This desire for great UX has to be coupled with a technology that (cost) effectively creates these experiences; here is where WPF (and the whole .NET 3.0 framework) comes in with a solid foundation to create well architected , maintainable, and effective applications.
How does WPF improve user experiences?
- Integration of UI technologies..
Integration is one of the core reasons Microsoft created WPF. Today it is not hard to find LOB applications that need 2D, 3D, Text or Documents , and video all in the same application. The integration of technologies drives end-user productivity up; it allows end-users to meet all of their productivity needs in one app.
This unified UI stack is also good for the developer, with a single skill you can now code 2D, 3D, Text... where in the past devs would need to know Windows Forms, DirectX, and VBA to accomplish the same tasks.
Customer: Schneider Electric, a worldwide leader in electrical distribution chose WPF for their GAPS application. Electrical distribution systems are incredibly complex, but this application does an amazing job at simplifying and letting Schneider's engineers and partners visualize the system. The integration of animation, 3D, 2D vector graphics, and text really comes together to show you how these systems should be designed. Schneider sales agents not only wow their potential customers when they show them this 'configurator' but also make less mistakes as they have this visual drag & drop ambient where they build complex systems.
Developer & designer collaboration -
Though business applications are most often created by developers , designers are getting more involved in the creation process (and the trend seems to be paying off on usability, pleasantness, productivity, etc.)
In the past, graphic designers have used design tools (like Photoshop) to create "comps" of user interfaces that developers mimic (or re-create) using developer tools/technologies; this process is sub-optimal because the developer is re-creating every thing the designer has already done; also, the fidelity of the designer's vision is lost in the recreation process, any change in the design was significant, re-work, etc..
In the new model introduced by WPF, you have XAML, a common mark-up language that developer and designer tools can generate to represent user interfaces. Microsoft also introduced new tools (Expression Blend and Design ) aimed at helping designers create XAML-based user interfaces. The combination of the new common language and the new tools that write to this language and seamlessly integrate with Visual Studio projects so developers & designers can be working in parallel in same projects. Now the work the designer work can be used as-is or with minor refactoring; both of these are huge improvements over the previous models.
You end up with better applications, while at the same time decreasing redundancies, and optimizing time to market for your solution.
Wells Fargo, one of the largest banks in the US, provides great customer service via their networks of 7000 ATMs. In 2005, they were the first financial institution to runs their ATMs on windows, and in 2007 they again set the pace by leveraging WPF to create their ATM software.
Beyond a rich, stable platform this move is positioning Wells Fargo for business agility; if their new creation process is shortened, they can offer timely services at the ATM; in banking the special offers (e.g. rates) are time sensitive, but that is not a problem for Wells Fargo.
Full Disclaimer: I bank at Wells Fargo :)
[For more details on developer/designer improvements, you can check The new iteration: How XAML transforms the collaboration between developers and designers
- Branding, Styling, Customization - A lot of enterprise ISVs write software that needs to be branded or slightly customized for their largest customers.
WPF combines styling ( ala CSS) with rich, dynamic resource resolution services to make it pretty trivial to 'skin' or theme an application. Couple this with great tools and WPF templating and you end up with some incredible power.
- Richer visualization - 3D -
A third dimension is very useful for visualizing data. The value-add of WPF's 3D is that it is simple; you don't have to be a DirectX or C++ expert to build a 3D app.
Another advantage is that WPFs 3D was designed for putting 2D context into 3D space so often you can code simple 2D components (e.g. listboxes, charts, etc) but then put them in 3D planes to compare and derive relationships from the data.
I should disclaim that WPF's 3D though easy is also fairly primitive; it does not have the raw power and flexibility that DirectX does so I don't recommend you try to build games or CAD applications using WPF.
- Richer Visualization - 2D
WPF is vector-based, resolution independent, uses OpenType fonts,etc. so the 'quality' of the graphics is better than previous presentation technologies.
The WPF has what I often refer to as a "content model"; what this means is that "content" is a first class citizen -regardless of whether it is a document, controls, shapes, or video. This means you can equally apply transforms ( scale, rotate, translate) to controls or shapes or any other content; same goes for being able to animate or to apply layout, all content is created equal in WPF.
WPF also has very rich brush support: solid, linear gradients, and radial gradient brushes are easy to create; they also have Image and videobrushes and the concept of a VisualBrush where you can make a brush out of any Visual.
Rich Layout --imho WPF has the richest layout any Microsoft framework has ever included; both dynamic and static layouts are addressed and there is plenty of room for extensibility; the code is factored nicely and there are hooks such that you can easily create any thing from a basic layout to animated layout panels (ala kmoore bag-o-tricks).
- Animation I am stretching it here; I don't think this is the most common reason or the greatest value out of WPF; in very few cases it is a good enough reason on its own, but I still think animation is worth mentioning around two aspects:
- User feedback should be a part of a good user experience. Interactive feedback does not make time go faster, but it shows some thing is in motion. I like it.
- I have seen LOB apps that needed to show process workflow or transitions for data. WPF animation does provide richer visualizations of data or a process.
- Great software architecture.
There are several design principles in WPF that lend themselves well to creating good architecture:
- Out of the box, XAML as presentation with code-behind for business logic enables separation of concerns.
- On top of this separations, we have lookless controls where behavior is separate from presentation. You can define the look of a control (e.g. a round button vs. a square button) via its control template; this control templating feature allows you to create richer, more insightful visuals with out having to write a lot of code.
- Rich data binding and data templates enable for creating data-driven applications
- Routed Events and commands again help decouple business and UI logic .
[Sorry, no single customer to highlight here. Often that information is proprietary so I can't get into competitive advantages. . I will do a later post on the tenets of great client software that WPF enables/promotes]
- The promise of cross-platform user interfaces ( with out compromising the user experience).
This is not a feature but should be acknowledged because it is out there; I do know of customers that are adopting WPF because "it is the latest" .. I do not uite recommend it and will discuss that in the next part of this series.. I do have a thought for those trying to decide on platforms. As an insider I know that Microsoft is very committed to WPF, Silverlight and XAML the presentation language used for both of these platforms. I do believe that learning XAML, familiarizing yourself with Expression tools, and leveraging .NET (aka managed) code is a good long-term investment; but please! don't go there blindly.
[Sorry, no single customer to highlight here. We have to deliver silverlight 2.0 to truly execute here; rest assured it is on our radar and I have seen some extremely promising projects from customers].
Other reasons ? and more apps?
I am sure there are other reasons. If I missed yours please do let me know. I again emphasize the list is not all inclusive; but the trend is the quest for a better user experience - and as you can tell from apps above, it is quite attainable -.