Why WPF is ready for LOB

24 04 2008

A rather interesting, though horribly misnamed, thread started on the WPF Forum. The “Why WPF is not ready for LOB” thread contains quite a few insightful perspectives on the topic of WPF’s viability for line-of-business (LOB) development. The thread also contains links to blog posts that carry the discussion out further.

If you have something to say about WPF for LOB that has not yet been introduced on that thread, please take the time to share with the rest of us. This is an important topic for WPF at this point in its life.



15 responses

20 08 2008
Peter Wilson

At this stage of the game WPF Validation is still a work in progress.

The problem is that the current model of validation confuses data validation with data binding.

This leaves the typical Dialog Box creator with a dilemma.

1. Do it yourself (back to Access, move the code to the form, validate it and move it back again).
Beatriz Costa http://www.beacosta.com/blog/?m=200705 recommends using the UpdateSourceTrigger=”Explicit” and then
using UpdateSource on the binding expression when the user clicks OK.
This works in that no changes are made to the model until you say so. However, all validation has to be performed manually when the OK button is clicked.
This method also fails to update related properties until the bindings are updated. (Think changing the product code on an order line and having the product description
and cost price immediately reflect the new value). Yet again, more explicit code to update these properties independently of data binding.

2. Use a more immediate data binding setting such as PropertyChange or LostFocus. Now, however, the model
is updated as part of the validation process and you need to back out the users changes if they click the Cancel button.
This is unacceptable. In my data model changing some properties causes extensive UI changes which should just not be happening until the user confirms the update.

I am in the progress of investigating the new BindingGroup feature. Perhaps this holds the answer. I am at the point where I may use the Access method – but perhaps using a code generator
to avoid the tedious coding. The current situation is untenable, with no clear solution and conflicting advice on all sides.

16 10 2008
John "Z-Bo" Zabroski

Hi Peter,

No one appears to have taken the time to reply to your comments, so I’ll do so now.

BindingGroup does offer part of the solution you are looking for, but you should also being pairing it with another 3.5 SP1 feature: ValidationStep. If you use the default ValidationStep (which preserves pre SP1 behavior), then you will have a combinatorial explosion in the number of value converter objects you must write. Furthermore, it limits your ability to dynamically load value converters and therefore replace existing value converters depending on context.

Unfortunately, ConverterParameter still cannot be dynamically bound to, and therefore there is still yet another source of code that can result in combinatorial explosion of classes being written to accomplish trivial tasks.

There is yet another scenario you might not have thought of that is much harder than it should be: Navigation. In particular, hard state versus soft state. Currently, WPF determines for you what it considers hard state and what it considers soft state. To some extent, this is a good thing, since it roughly approximates how the Web works. However, as Steffen Meschkat and Josh Mittleman have pointed out in their Human Computer Interaction 2007 & 2008 Conference Workshops, sometimes you need some additional control over what hard and soft state is, building on top of the History and Bookmark navigational model of the Web. In WPF, this hard-vs.-soft dichotomy does not exist by default, so you have to build it. However, doing so is a challenge because NavigationWindow does not expose its internals; the design of the entire navigation mechanism at release was pretty bad, all the way down to the ugly default browser bar that makes me hurl just looking at it.

I’m hoping navigation will improve, including adding the ability to determine the data structure for the journaling mechanism. This would allow me to pick what kind of navigation I want to provide the user. For instance, fisheye, etc. Right now, WPF’s navigation design projects the feeling that no one at Microsoft has ever heard of Adaptive Hypermedia, or Object-Oriented Hypermedia User Interfaces.

16 01 2009
Steve Thornton

Eighteen months ago I stopped using Microsoft Development tools, having used MS tools since VB2 it was a big step. I fealt dissolusioned with MS’s attitude toward developers, anyway my absence took me to Java – they have the wonderful new JavaFX and with the pace of development at Sun we’ll look forward to trying it in about ten years!

I have liked what Adobe have done with Flex & AIR and during 2008 I spent considerable time trying to re-write an old application and prototype a new one in Adobe AIR (I’m more of a desktop developer than a web developer). What line of business means to me is that when I have legacy applications – or ‘legacy clients’ 😉 They will ask if the new application I’ve developed for them can link to a legacy application or dip into an Excel file or Access db or some other thing that wasn’t in the original schema! I can’t say ‘No!’ to these clients and I have found that Adobe AIR is a long way from being fit for LOB development for this reason (I have been one of their beta testers).

So since December I’ve come back to the MS fold and frankly I amazed at what MS have done with WPF – anyone doubting what MS have done ‘Don’t !’ if you have to develop ‘real’ applications they are miles ahead of the competition.

I have also found that Microsoft’s attitude toward us ‘small – independant’ developers has improved.

Well done Microsoft.

Steve Thornton
Thornton Software UK

25 02 2009
Xavier Le Galles

(I’m French so my English is not perfect, sorry about that)

This subject “Is WPF ready for LOB ?” is so important for us as we are going to rewrite from scratch a huge application (C++/MFC) in .NET. But it is really difficult to have a clear answer even from MS. I think there is a marketing point of view and a technical point of view which may not be the same.

After all, it seams that WPF suffers from a lack of performance when you have lots of dynamics graphics to display (here is typically what i’m talking about). And even the next release would not be better (MS source). Of course, i use conditionnal and we are investigating further on this subject …

If it’s true, we will use WinForms.

25 02 2009
Steve Thornton

Hi Xavier,

My personal experience with performance is quite positive – I have re-developed a booking system that was originally developed in VB6. It is difficult to compare speeds between the old app and the new one because the new one is far richer graphically and this richness takes rendering and that takes time. However I have managed to reduce rendering time down now so that the new app takes only 600ms longer to render than the old one, this is rendering a scrollable grid with sometimes two thousand rendered objects populating the grid.

The trade-off is how ‘rich’ your new app nees to be!

21 05 2009

I, for one am quite excited about WPF. I work in an industry that uses a lot of custom applications which are horrid to use because hacking together custom controls is not “cost effective”. I am hoping that a new age of application design is ushered in where finally looks and functionality are back on the priority list!

25 06 2009

Link fail: error 404

27 01 2010

I’m using WPF in a LOB right now. I have to say that my client is quite progressive in how they think about technology which made selling WPF as the technology to use easier.

In coming from a mixed web and client background, I find the technology liberating from the shackles of making applications that look like Windows 3.1. It definitely opens a door to allow you to start thinking of new ways to visualize data and present it to users in ways that engage and encourage them. After all, thats what LOB apps should be for.

23 02 2012

The link above doesn’t work.

Anyway, when I want to create a LOB application I rather go to SL instead of WPF.

The reasons are:
– WCF RIA generations
– SL gives me both OOB and In-Browser modes
– SL is multi-platform (though not on iOS and Android which is a serious lack, many customers don’t want SL apps just for this reason)
– SL ships with more controls, and its controls need zero to minor styling (compare the SL DataGrid to its WPF opponent)
– I feel like Silverlight is getting much more love from MS than WPF
So for conclusion, for LOB the choice is surely SL, WPF is good for in-machine applications (i.e. Video/Audio editing apps, file-system or machine utilities, etc.)

24 08 2012

Thank all, very good…

25 08 2012

I love your blog, It very good…

30 11 2012

Windows forms is no longer being developed by Microsoft, but that’s largely irrelevant. As a platform, it is complete. It’s as much of a wrapper around GDI/GDI+ as it can be, enough for an enormous third-party control market. This is the reason most LOB applications are developed using windows forms.

Will WPF catch up and even exceed its popularity? Absolutely! But it’s not there yet. There is still probably at least a hundred times as much development happening on windows forms as there is in WPF, and to call it “obsolete” as if it shouldn’t be considered is ill-advised.

5 07 2014

Its like you read my mind! You seem to know so much about this, like you
wrote the book in it or something. I think that you can do with some pics to drive the message home a little bit, but other than that,
this is magnificent blog. An excellent read. I’ll certainly be back.

21 09 2014

Un discours de mariage rédigé en bon français, foncez!

26 10 2014
stamina body trac glider 1050 review

I was extremely pleased to find this site. I need to to thank you
for ones time just for this fantastic read!! I definitely savored
every little bit of it and I have you book marked
to see new information on your site.

Leave a Reply to Shimmy Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: