Windows Forms still ahead of WPF in LOB applications

Just reading the roadmap from DevExpress it is pretty clear that that sales for Windows Forms are still very high. This has meant that investment in the Windows Forms platform is to continue.
The principal problem with WPF for LOB applications, is that you need to pay for a designer, and they do not come cheap. In a six month turnaround application, that can easily be £60,000, or much much more. With most LOB applications, you purchase presentation layer components from Infragistics, DevExpress, Component One etc, and your developers thrash out the necessary business logic with the Office 2007 UI or whatever UI is flavour-of-the-month.
Because Microsoft have just created the fluent interface in the Office 2007 ribbon, I cannot see a significant change to this UI in the next office version. Office is still written in C/C++ and I don’t see a re-write for the next office version. As a result most applications written in windows forms today will continue to be relevant. Look at Visual Studio, the toolbar components are pretty much the same as Office 2003, even down to the icons that have not been changed for years. Visual Studio is a tool, and most LOB applications are tools.

Differentiated UI is a big risk in LOB applications, because you usually have a workforce with varying IT skills. You can safely assume that most users are familiar with Outlook, so creating an application with a similar look and feel lessens the learning curve. WPF opens up new doors, and for me in LOB applications, only the subtle use of it with nice 3D charting or reports is the way to go. If you move to far away from the familiar, you will end up with users struggling to learn the application. The net resultant is increased training costs for the application, for no real business value.

Finally, An example of a Multi tier architecture for Linq to Sql

Update 2/6/2008:

The original post for this is available  beneath, but the link to the original article has been removed which turns this post to a pointless rant because you cannot reference the article. Luckily Beth Massi has a very good n’tier Linq example.


Anyone that is aware of my posts knows that I do whinge about the lacklustre implementability of Linq in real world scenarios. I have battled with this for some time now.

Microsoft’s response a few months back was that they were waiting to see how their customers would ‘conjure up’ a method of doing this.
I found this attitude dissatisfactory, because if you’re trying to negate the impedance mismatch between ‘objects’ and ‘data’, the ubiquitous scenario is n-tier. You cannot introduce such a feature (Linq), and not have examples of it being implemented n-tier.
I have just come across an example of implementing Linq to Sql on MSDN. The link is available here.

I have finished testing this and quite frankly, I’m very disappointed. This is not easier than datasets, but more complex, for absolutely no ROI for understanding the raised abstraction.
Validation is pain, even more painful is moving this to winforms/wpf applications, that do not have the object data source.

I keep returning to Linq because of all the noise Microsoft made. Indisputably, one is more expressive when composing queries, but that is just one small part in creating an n-tier app.

Nah, back to datasets for me, and quick. Unless a miracle happens.

Licensing and protecting your software

One of the first commercial mistakes I made, was to develop an application over a period of 4 months (it wasn’t that big an app), and not have any protection on it. The client was, emollient and friendly. He stated that his prime requirement, was he have a working demo. In my naivet√© I supplied him with a fully working copy. It will come as no surprise that it was the last I ever heard from him. Trust no-one!

There is a myriad of choice when it comes to approaching this subject, but something that may appeal to you is Microsoft Software Licensing and Protection. There is an introductory video and the option to trial the utility, very useful indeed!

Beware of 3rd Party RAD controls

Recently I have been involved in a discussion about 3’rd party rapid application development tools. The users wanted to know about Telerik controls.

Telerik are very new to the Windows Forms game as they have always been web giants. For a recent application, I needed a grid that displays progress bars/department progress as an order goes through various departments. Only problem is with all the main vendors they have heavily modified their grids to cater for 10 000 different situations. The net result, is that you have 10 000 options to learn, to fully utilise their grid. Personally I found that the DevExpess grid for instance, is optimised for databinding, and does not have an unbound mode (after a month of fiddling about with it). For all the others I needed to owner draw the progress bars, which I may as well have done with the standard datagrid view. I have now done this, and optimsed it though, getting rid of the flicker when painting.
The feature I do miss is grouping, and this is what most people that buy RAD components go for, i.e. getting their app to look like Outlook. I will be modifying this grid and adding a Linq data source. All in all, it will take me less time to do this, than learn third party vendor solutions, and improve my development skills. You automatically, in fact exponentially raise the complexity level when you use third party suites, when a lot of the time, not being lazy and working a little harder results in attaining what you wanted without the huge complexity overhead.

2 years down the line, you have to maintain the application (I want to move to WPF), you then need developers that are trained in whatever suite you used and that really does add to the costs. The only third party thing I will purchase will be a calendar/scheduler because I really haven’t time to update the open source ones and I need something that looks good.
You can say what you want about Krypton, but this I have found to be highly customisable with things like button specs. It is far, far, far more flexible than some of the main vendors, and I have tried them all.

One of the main complaints I receive from customers, is when using solutions like RedPraire. The main complaint is, that you are tied into their specific implementation for your business, i.e. you work around the system and not the other way around. This is no different with software from 3rd party vendors. Your are tied to their specific implementation of for example how a datagrid should work. Try 2 different vendors and get 2 completely different grids and abstractions. Just like windows forms the drag and drop experience is quick (dragging components onto the form), then the real challenge begins in learning the various abstractions.

Use third party components, if you have a substantial budget, and have 4-5 years programming experience. Without that, you will never fully utilise what’s on offer, and never know how .NET really works, because you are shielded from using delegates and interfaces.