Reasons To Use Two-Tier Fat Client Instead of Browser-Based Application Deployment Technology

In a letter to the editor in the May 12, 1996 issue of PC Week/NetWeek, Marc Andreessen, Chief Technical Officer of Netscape, writes

Netscape didn't say client/server is dead, we said the client/server application model that has traditionally been used (fat custom client connecting to dumb back-end database) is dead.

Applications from here on out, we believe, will use the universal client, plus an application server (a Web server or whatever), plus a database - in other words, basic three-tier, with the universal client twist. (And I'll even limit the claim to those applications that will benefit from running on a network - which over time is all applications, although that may not be the case right now.)

There's no reason - none - to develop an application using the old client/server two-tier application model of fat client and dumb database anymore. That model always had huge liabilities, and IS people tend to hate it these days (at least that the case with the ones we talk to), due to issues involving deployment, maintenance, user training, inflexibility, ease of use, platform and so forth.

Marc's claim in the last paragraph raises a red flag for me. In my experience, such an absolute position is simply untenable. Different solutions are appropriate depending on the circumstances, i.e. there may be business reasons to ignore technically superior options. Therefore, I immediately set out to create a list of reasons why I would develop an application using the old client/server two-tier application model of fat client and dumb database. (BTW, I don't know whether use of the term "dumb" is meant derogatorily or implies that stored procedures are not used.) In making this list, I specifically had in mind the alternative of a three-tier application with the universal client; other three-tier implementation options are ignored. In no particular order, the list is

  • Exploit rich, native GUI. The widgets available in HTML forms are simply pitiful. Even with Java applets, not every standard Windows 95 widget is supported.
  • Leverage existing skills. The people I work with today know fat client technologies cold. The world cannot stop while these people are retrained or new people hired.
  • Reuse existing code. We have C++ and Visual Basic frameworks in place to maximize productivity and quality.
  • Lack of universal client. I have two points here. First, not every desktop has a browser! Second, there are a great number of features in today's browsers that are not universal.
  • OLE integration. We love to embed Word or Graph in VB forms, or control Excel with OLE Automation. Try that from your browser.
  • User-defined queries and reports. Can a browser user change the order of columns on a report with a drag and drop?
  • Non-TCP/IP networks. Not every SPX/IPX, NetBEUI or proprietary network has a gateway to access Web servers, and Java doesn't speak these natively.
  • Non-GUI clients. Try viewing an icon bar or table with Lynx!
  • Performance. Every screen must be loaded across the network from the server (even cached screens require verification of last modified date), and CGI, the lowest common denominator for connecting Web servers to database engines, is a pitifully inefficient user of server resources.
  • Tools. VisualWave might be the only shipping tool that makes developing for the Web as simple as 2-tier C/S. Testing tools are just beginning to become available. Partitioned 4GLs (e.g. Forte and Dynasty) barely support Web technologies.
  • Transactions running across multiple screens. Each CGI call establishes a new RDBMS connection, which is not too cool if you need to keep a database transaction going.
  • Live, scrolling edits. We finally get scrollable engine cursors, but with three-tier Web solutions, we can't use them.
  • Support for mobile users. Products like RemoteWare simply do not exist for Web-based implementations.

Copyright (c) 1996 Scott Nichol.
27-May-96