Draw a circle.
Surround it with several more circles. Connect the new circles to the one in the center with lines.
This is your systems architecture. Before you read on, label each of the circles. I’ll wait.
OK, done? You almost certainly chose one of the following two labeling schemes: You either tagged the central circle with some synonym for mainframe, host, or server and the outside circles as terminals, PCs, or network computers; or you called the central circle a personal computer and the outside circles mainframe, server, minicomputer, World Wide Web, and other resources you can access through your PC.
If you chose the mainframe-centric labels, chances are you like the fat-network architectures now fashionable under the misleading “thin client” moniker. If, like me, you put the end-user in the middle of modern computing architectures, using a PC to draw on whatever resources are currently needed, you probably worry about the whole fat-network approach to systems design.
Fat-network systems come in two basic flavors: Windows terminals and “Webware” interfaces. What’s interesting about these two flavors is that they have exactly nothing in common except that they have both have been misrepresented as thin clients.
The Windows terminal approach, whether sold by Citrix, Microsoft, or any of the dozen or so remote-control vendors, is remarkable primarily because of how unremarkable it is. It ignores the application architecture entirely, instead providing an alternative for deploying the same old stuff. The term “architecture” really shouldn’t be applied to a Windows terminal solution at all, since all it does is extend the keyboard and screen across a network. It does, however, put the host firmly in the middle, since with Windows terminals IS tightly controls the resources available to end-users.
A Webware architecture means some code gets downloaded for desktop execution while other code executes on the server. The only option not available to you when designing Webware is storing software (other than a “thin” 50MB or so browser) on local hard drives. In other words, you never use the fastest and cheapest storage you have. That makes sense … if you have decided to put the host in the middle.
Take a moment to go beyond cost of ownership to deal with the more interesting benefit of ownership, and you’ll discover that GUI applications installed on the desktop and Webware-based applications aren’t mutually exclusive alternatives. You’ll want to use n-tier, thin-client (in the true, skinny presentation layer sense), probably object-based architectures to build both.
As a general rule you’ll use desktop GUIs for high-use applications targeted to a known desktop platform … for example, whenever you’re building or selecting software to be used by employees as part of their core job functions.
When you do, follow the rules for easy, stable installations: Don’t touch the registry, don’t put anything in the Windows folder or any of its subfolders, test builds for memory leaks, and deploy the full application in a scale-model test environment before implementing it in production. Design every module for portability and manageability, too.
When you don’t know what end-users will run on their desktops, or when you need to deploy an application for occasional use, go for Webware. Here, the increased functionality of a desktop-installed GUI no longer outweighs the benefit of easier deployment.
When you’re building for Web access, you have no control over bandwidth, so force developers to test applications on lowest-common-denominator (another misused term; they’re actually greatest-common-factor) systems. And … remember that testing and manageability thing? Building on Webware doesn’t eliminate the need for any of that.
When you’re building (or buying) for deployment on your intranet, don’t forget: Fatten up that network.
Putting the end-user in the middle doesn’t mean you want the data center to seem remote.