1.1 Pre-CORBA Approach to Client/Server Development

Client/server computing is an application development methodology that allows programmers to distribute processing among networked machine systems, thus enabling more efficient use of machine resources. In client/server computing, an application consists of two parts: the client application and the server application. These two applications typically run on different machines, connected by a network, as shown in the following figure.

Figure 1-1 Client/Server Computing

Describes the Client/Server Computing application.

The client application makes requests for information or services and typically provides users with a means to display results. The server application fulfills the requests of one or more client applications and usually performs compute-intensive functions.

The key advantages of the client/server model are:

  • Computing functions run on the most appropriate machine system.
  • Developers can balance the load of application processing among several servers.
  • Server applications can be shared among numerous client applications.

For example, desktop systems provide many business users with an easy-to-use graphical environment for displaying information. However, desktop systems may have restricted disk space and memory and are typically single-user systems. Larger, more powerful machine systems are better suited to perform compute-intensive functions and provide multiple user access and shared database access.

Therefore, larger systems usually run the server portion of the application. In this way, distributed desktop systems and networked servers provide a perfect computing environment for deploying distributed client/server applications.

Although the non-CORBA client/server approach provides the means to distribute processing in a heterogeneous network, it has the following disadvantages:

  • For communications, the client application must know how to access the server application, including any necessary network protocol information.

    Client/server applications might use the same, single network protocol or different protocols. If they use multiple protocols, the applications must logically repeat the protocol-specific code for each network.

  • Applications must handle data format conversions when they are integrated with machines that use different data formats.

    For example, some machines read an integer value from the lowest byte address to the highest (little endian), while others read the highest byte address to the lowest (big endian). Some machine systems might also use different formats for floating-point numbers or text strings. If an application sends data to a machine that uses a different data format, but the application does not convert the data, the data is misinterpreted.

    Transporting data over the network and converting it to its proper representation on the target system is called data marshaling. In many non-CORBA client/server models, applications must perform all data marshaling. Data marshaling requires that the application use features of the network and operating system to move data from one machine to another. It also requires that the application perform all data format translations to ensure that the data is read in the same way it was sent.

  • There is less flexibility for extension of the application.

    The non-CORBA client/server approach ties the client and server applications together. Therefore, if either the client or server application changes, the programmer must change the interface, network address, and network transport. Additionally, if the programmer ports the client and server applications to a machine that supports a different network interface, the programmer must create a new network interface for those applications.