WPF in Line of Business, Why and where..

Introduction/Disclaimers:

  • 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).
     

Why WPF?

Enterprises (and Enterprise ISVs) are realizing that a great user experience drives business value and makes significant impact to the bottom-line. 
For example:

  • 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.

image 
Other customer examples:  Pfizer, Microsoft's CRM, pretty much every other customer.

 

  • 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 :)

WFATM_main_menu_small
Other customer examples: London Underground,  Carl Zeiss.

 

[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.

 

Carl Zeiss, a leading provider of Laser Scanning Microsocopy, used WPF styles and control templates to create a very usable user interface that exposes the power of their microscopes in an intuitive manner. Styling allowed Carl Zeiss to crate themes for different environments (e.g. dark room and light room) so not only is the UI gorgeous, but it really leverages deep understanding of the end-user's scenarios to complement the lab environment.  CarlZeissSmall
Other customers:  Expression Blend, London Underground,
  • 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. 
ICONics, a leader in visualization software for manufacturing and automation does an impressive job at leveraging WPF to create 3D models of manufacturing plants; the software provides the plant operator prompt, actionable context into the manufacturing floor. ICONics also has a WPF based great design-time for operators to build their custom widgets/controls.
Other customers:  Accruent , Scripps Research Institute , Lectra,

 

  • 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).
London Underground created an application to analyze historical data from their underground network. The application was a re-write from an existing SVG application; right out of the box they got much better performance;  their designer/developer collaboration models improved significantly as they went from loose svg + javascript to XAML and C# with partial classes, etc. The app is 100% data bound;  there are multiple 'views' for the data and these simply consist of new data templates and new styles being applied to the same underlying data. You can watch a video of the app and a write up via Richard Godfrey (of British Library fame) ..  Look about 45 mins into the video, it is a wonderful showcase of insightful visualization and a concert integration of vector graphics, styling, triggers, templates, data binding, and even 3D..
Other customers:

 

  • 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.
       
Lectra's Kaledo Trend3D  allows fashion designers to create storyboards to present a fashion design collection..  Trend3D couples WPF's 3D and animation capabilities to create a 3D surface where designers simply drag & drop materials, and designs, and decorative assets; through camera manipulations the designer creates a storyboard that strolls through a design collection; as the designer goes through,  Trend3D records keyframes and then replays them in a storyboard;  from replaying the storyboard Lectra can also export a movie. KaledoTrendSmall
Other customers:  ICONics, Scripps
  • 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 -.