I like to classify client applications into one of 4 buckets:
Desktop and Smart Client apps I talked about in my previous post. So that leaves us these 2 “reach” categories.
What do I mean by reach?
Here’s the Readers Digest version: Reach apps run in the browser and are designed to work in all major modern browsers running on all modern client operating systems. Standards reach refers to Ajax/HTML applications. Rich reach refers to applications that require ubiquitous proprietary browser plug-ins to work. Flash is an example of a rich reach platform.
Here’s the long version (again, the focus here is on LOB applications, but this discussion does apply to consumer scenarios as well):
Reach – 2 Perspectives
Like “rich”, the word “reach” means different things to different audiences. One way to look at reach is from the perspective of a software consumer. From this angle, a LOB application can be considered to have a good reach user experience if the user can access the application in the most productive and efficient way possible from whichever device they happen to be using at the time. There are 2 key components to a good reach user experience. First, the application can be accessed from a variety of devices in a variety of scenarios, and second, the experience is optimized for the device, so that the user experience is as productive and powerful as the platform and scenario allows.
A good reach user experience means the status of a critical customer order can be pushed to a cell phone while on the golf course, it can be polled from a public Sun workstation at a Java conference, and it can be reviewed and used to generate opportunity proposals from a corporate laptop running Windows - while traveling home on the train without network connectivity. From this perspective, that of the user, reach does not mean one client interface that that can be accessed anywhere, it means being able to optimally perform a business function using the most appropriate device from where ever the user happens to be.
Another perspective to take when talking about the term reach is that of the software publisher. In order to obtain the reach user experience described above, multiple clients will be required. A client for a handheld device that can operate in a semi-connected state, a client for a corporate managed PC that can expect to leverage a variety of local resources, and a client that can run on just about any computer that has a standards based web browser. To a software publisher, this last ubiquitous browser based client is known as the “reach” client. It is important to keep in mind that the reach client is only one piece of an application strategy that results in the reach user experience as described above.
Rich reach clients are applications that rely on ubiquitous proprietary technologies to achieve an enhanced user experience in the browser – and won’t function without the necessary plug-ins installed and enabled on the client machine. Flash is an example of a ubiquitous proprietary technology. It is a browser plug-in that runs in all modern browsers and on all common operating systems. It has achieved ubiquity - Flash V7 is already installed on around 95% of the computers on the internet. Usage of Flash can be categorized in 2 ways, as a technology to add rich “islands” in an HTML application and as a complete replacement for the HTML interface. Applications built with this second approach are ubiquitous rich clients… they won’t function without Flash. Microsoft's goal is to expand the WPF/XAML platform out to this rich reach category with WPF/E.
Shades of Gray
These four categories are easy to describe, but there are of course many applications that don’t fall crisply into one or the other. For example, many browser based LOB applications were developed to run in IE only, they often require ActiveX components and only work in a specific version of IE. These “IE applications” were likely built as browser applications to achieve ease of deployment and/or access beyond the firewall, not to achieve ubiquitous reach. IE applications do not fall into the categories of desktop, smart client, standards reach or rich reach as I’ve described them, and I’m OK with that, because I don’t recommend building them for many reasons that we won’t get into now.
Another example of an application that does not fit neatly into only one of these categories is an HTML application that uses Flash “islands”. In my experience, these applications can usually be categorized as either primarily HTML or primarily Flash and therefore we can “force” them into either the standards reach or the rich reach classification.
We have much more to discuss. In this post and the last I've introduced smart client and defined my 4 categories for describing client applications. I personally am a fan of a premium user experience - the best the hardware in front of me can offer, so I have a bias towards smart clients. But all four application categories I've described have their place, I am in no way advocating the demise of desktop and reach applications.
What LOB scenarios require reach? Why is the browser still interesting, even if reach isn’t a requirement? Where does Ajax fit in? Where does a WPF application hosted by the browser (xbap) fit in? What is this WPF/E stuff all about? Why exactly does WPF re-invent this entire discussion? Stay tuned, and keep that mail coming.