The Custom Client

When a custom LongJump client is used (instead of a purely web-based interface) its architecture should be similar to that of the server. Just like the server, the client software should separate networking and security into their own packages. A separate state engine is, however, not needed for the client, which is accessed by only one user. In the absence of multiple users grouped into a variety of roles — which is the situation on the server — the client's state maintenance requirements are minimal.

Because the client is connected to the Internet, it still has real security needs. Nevertheless, the client's connectivity, exposure and potential for abuse are much less than that of the server, so a single Security Module is sufficient. This package provides a secure environment for the business logic on the client — an analogous arrangement to what occurs on the server.

The simplified requirements of many client subsystems makes it possible to build a lightweight client. This is especially important for mobile wireless devices, whose relatively weak hardware make them less capable of supporting complex software. These devices also benefit from the use of hard real-time design principles, which include ways to boost performance on marginal hardware in order to satisfy deadline-oriented constraints.

Lightweight clients based on hard real-time ideas benefit the more common desktop systems as well. Such clients resist the upgrade spiral and fight code bloat — two major scourges of modern practical computing. Reliability is also enhanced (see the section Achieving Reliability).

One critical client element that is mostly missing from the server is the user interface. The Flightdeck-UI whitepaper [Bel03] contains a lot of general information on this important topic — which applies to web-based as well as custom clients.