Client Server computing is rapidly changing as three main forces attempt to set a standard. One camp is Microsoft with its Windows operating system and DCOM. Another is the Object Management Group (OMG) and its CORBA-based distributed- objects model. The third group is SUN and the Enterprise JavaBeans (EJB) environment based on the Java programming language.

The material presented in this node is derived primarily from an article on the CORBA-based model published in ACM Computing Surveys (Lewandowski 1998). Mr. Scott Lewandowski presents a technologically superior model for Client/Server computing, but goes on to imply that technological superiority does not guarantee dominance. 1 The EJB environment is described separately in Enterprise JavaBeans.

I. Definition of Client/Server

Client/Server is an interrelated, but independent, set of software and hardware components that dynamically open and close transparent relationships, based on the request/response paradigm, that are mutually beneficial to the participating entities.2

An interrelated set of software and hardware components means there are at least 3-tiers of interacting entities: a client, a server, and a data repository. A client is a net consumer requesting services from a server, which is a net provider. The server may in turn obtain informational resources from a data repository in order to meet the client request. The entities are independent and self-contained and may interact with any number of other Client/Server entities. The relationships are dynamic in that they begin and end based on the request and response of the entities. When the request has been fulfilled the relationship ends. The relationships are transparent in that each entity is self-contained. The method by which each entity carries out its part in the relationship is not visible to any other entity.

Lewandowski presents this vision of Client/Server based on Distributed Objects interconnected via the Common Object Request Broker Architecture (CORBA). Objects encapsulating data and functionality would be created new or be "wrapped around" legacy informational systems. Under a distributed environment these diverse objects would take responsibility for managing their own resources. Distributed objects could then form relationships ad hoc in diverse configurations creating applications to fill specific requests. CORBA provides the language- and system implementation-neutral communications mechanism to allow such relationships.

Compare the CORBA vision to the Microsoft ideal. The latter wish to maintain control of their installed base of Windows operating systems. Distributed Component Object Model (DCOM) is actually a set of services or interfaces and does not follow the traditional, independent-object model. This version of Client/Server computing tries to incorporate too much functionality in a central location - the operating system. The technologically superior version is the CORBA-based distributed object model. It will allow the type and number of interactions between objects to grow exponentially developing new relationships and ideas that will benefit commerce. The DCOM model is too centralized and will in the long run constrain the relationships that can enhance commerce.

II. Glossary of Client/Server Terms
1. Client
A net consumer of services. It is presentation software that makes a request for information and then displays it in a user-desired manner. Most often via a graphical user interface (GUI).

2. Server
A net provider of services. It generally is software running on a separate machine from the client. It is encapsulated so that its service- providing mechanisms are hidden from clients. A server may assist many clients.

3. Middleware
A framework of software that facilitates the communication between the parts of Client/Server systems. Examples include CORBA, DCOM, ODBC, SQL and EJB.

4. Objects
A software abstraction that couples data and the operations to process that data together into a self-contained entity. "Objects provide a clean way separating related data and functionality from other parts of a system in order to ease system construction and maintenance"3

5. Distributed Objects
An extension to the Object paradigm. The objects may reside anywhere on a network. They will retain their existence independent of any program, application, or other objects. They may be accessed by other objects or programs via standard message protocols contained in the Middleware.

6. Business Objects
Self managing components representing key objects or processes of a real-life system. They are composed of three cooperating components: Presentation Objects to represent the Business Object to a user; Business Logic Object to embody functionality and data of the Business Object; and Business Process Object to interact with the system as a whole and maintain long-lived processes.

Common Object Request Broker Architecture. It is middleware software that provides structure for the client, server, data repositories, and other distributed objects to interact seamlessly. CORBA supports the traditional notion of encapsulated, self-operating objects. It is an open-standard supported by many competing companies in the industry, but not by Microsoft.

8. IDL
Interface Definition Language. It is a language-neutral mechanism to define the services an object provides to a CORBA based Client/Server system. IDL is part of the CORBA specification for the seamless interaction between objects written in different computer languages or structured in diverse ways: from current object formats back to mainframe data structures on legacy business systems.

Component Object Model and Distributed Component Object Model. This is the Middleware standard supported by Microsoft and competes directly against CORBA. DCOM does not support the traditional notion of objects. Instead it is a collection of interfaces to services. DCOM objects do not provide "state": the results of a request/response interaction are not available to other clients.

10. Tiers
Tiers refer to the number of interacting components in a Client/Server system.

2-Tier refers to a two-component architecture predominant in the early 1990s. The two components were just the client and the server. A data repository was an integrated part of the server, if present. The business logic portion of the interaction was placed in either the client, the server, or both. This led to undesirable higher coupling between the client and server.

3-Tier refers to the current predominant model involving three interacting components: client, server, and data repository. This is a better model because the three components are encapsulated and hide the mechanisms by which each operates.

A variation on 3-Tier is N-Tier. N-Tier indicates that a higher number of interacting components may cooperate to fulfill a request. N-Tier describes the multi-object relationships that exist under a CORBA-based distributed component architecture.

1. Page 27, Lewandowski, 1998. As with VHS and BETA video technologies in the 1970-80s, dominance may result from the superior marketing efforts, in the present case, of Microsoft (DCOM) rather than technological superiority of OMG's CORBA/JAVA/Distributed Objects model.
2. Page 8, Lewandowski 1998.
3. Page 20, Lewandowski 1998.

Gama, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object Oriented Software., Addison Wesley, Reading, MA.
Gralla, P. 1996. How Intranets Work, Ziff-Davis, Emeryville, CA.
Lewandowski, Scott M., 1998. "Frameworks for Component-Based Client/Server Computing", ACM Computing Surveys, Vol. 30, No. 1, March, pages 3 - 27.
Linthicum, D., 1997, David Linthicum's Guide to Client/Server and Intranet Development, John Wiley, New York.
Orfali, R., and Harkney, D. 1998. Client/Server Programming with Java and CORBA, 2nd ed. John Wiley, New York.
Orfali, R., Harkney, D., and Edwards, J. 1999, Client/Server Survival Guide, 3rd ed. John Wiley, New York.