Continuing on for a moment with our discussion of "reach clients":

An application that can run on any client regardless of hardware or operating system, that will never run into any download and installation problems, and that leaves no footprint on the local machine is definitely an attractive proposition.  Reach clients are the right choice for many applications, especially those that cannot take a dependency on a specific client platform.

But the reach client in the browser does provide a restricted application environment, so there is a cost – decreased user experience.  Depending on the application, this tradeoff may be well worth it, often times however, the productivity and business opportunity cost associated with a drop in user experience will far outweigh any deployment advantage gained by a browser based reach client.  We'll talk more in a future post about what "user experience" is, the role/importance of user experience, etc.

Not All Browser Based Apps are Reach Clients

All reach clients run in the browser, but not all browser based applications are reach clients.  As we talked about in a previous post, many line of business client applications were built to run in the browser for reasons other than reach.  They often are engineered to the features of a specific browser – typically Internet Explorer, and rely on hosted ActiveX objects.  Reach is therefore specifically not supported or required.  But the browser was never designed to support the needs of sophisticated operations oriented transaction processing applications.  As a result, developers have struggled for years to come up with tricks to work around these limitations.  Examples include techniques to prevent transactions from double posting as a result of user actions that cause the browser to re-issue an HTTP Post request, and approaches to formatting reports, receipts and letters for print.  The browser was invented for… well, browsing.  Smart clients are the answer to these more sophisticated application needs.

The issue then becomes, what platform do you build a smart client on.  The answer depends on your environment and customer base.  In this blog we're going to spend our time discussing .NET 3.0 smart clients which run on the WPF platform - and require Windows XP, Windows Server 2003 or Windows Vista.  And we'll touch on .NET 2.0 smart clients - which use the Windows Forms platform which runs on Windows 98 and above with current service packs.

Yesterday I spoke with a dev at a startup here in the Valley who was telling me tales of his struggles in trying to build an advanced LOB application using AJAX techniques in the browser.  When I asked why the browser, he said because their target customer base use both Macs and PC's.  Simply put, for V1 of their app, they need reach.  So I do get it - the entire world does not run XP.  But for those that do, wait till you see some of the client applications that they'll be getting, we'll be seeing in the coming years a new standard for user experience!  Would a superior UX trump a need to run the software on a Mac - we won't know in the near future in this specific case, but keep your eyes out for companies that choose UX over reach... or better yet, in addition to reach.  It is all about providing options that the competition doesn't.  Many will pay extra to drive a Mercedes.