Client/Server Frequently Asked Questions

Client/Server Definitions


2.1 What is Client-server Computing?
2.2 What is a Client Process?
2.3 What is a Server Process?
2.4 What is a Two-Tier Architecture?
2.5 What is a Three-Tier Architecture?
2.6 What is Middleware?
2.7 What is Cooperative Processing?
2.8 What is Distributed Processing?

------------------------------

Subject: Part 2: Definitions


------------------------------

Subject: 2.1  What is Client-server Computing?
From: Steve Hultquist 

The short answer:

Client/server is a computational architecture that involves client processes
requesting service from server processes.

The long answer:

Client/server computing is the logical extension of modular programming.
Modular programming has as its fundamental assumption that separation of
a large piece of software into its constituent parts ("modules") creates
the possibility for easier development and better maintainability.
Client/server computing takes this a step farther by recognizing that
those modules need not all be executed within the same memory space.
With this architecture, the calling module becomes the "client" (that
which requests a service), and the called module becomes the "server"
(that which provides the service).

The logical extension of this is to have clients and servers running on
the appropriate hardware and software platforms for their functions.
For example, database management system servers running on platforms
specially designed and configured to perform queries, or file servers
running on platforms with special elements for managing files.

It is this latter perspective that has created the widely-believed myth
that client/server has something to do with PCs or Unix machines.


------------------------------

Subject: 2.2 What is a Client process?
From: Ravi Kalakota 

The client is a process (program) that sends a message to a server
process (program), requesting that the server perform a task (service).
Client programs usually manage the user-interface portion of the
application, validate data entered by the user, dispatch requests to
server programs, and sometimes execute business logic. The client-based
process is the front- end of the application that the user sees and
interacts with. The client process contains solution-specific logic and
provides the interface between the user and the rest of the application
system. The client process also manages the local resources that the
user interacts with such as the monitor, keyboard, workstation CPU and
peripherals. One of the key elements of a client workstation is the
graphical user interface (GUI).   Normally a part of operating system
i.e. the window manager detects user actions, manages the windows on the
display and displays the data in the windows.


------------------------------

Subject: 2.3 What is a Server process?
From: Ravi Kalakota 

A server process (program) fulfills the client request by performing the
task requested. Server programs generally receive requests from client
programs, execute database retrieval and updates, manage data integrity
and dispatch responses to client requests. Sometimes server programs
execute common or complex business logic. The server-based process
"may" run on another machine on the network. This  server could be the
host operating system or network file server; the server is then provided
both file system services and application services. Or in some cases,
another desktop machine provides the application services. The server
process acts as a software engine that manages shared resources such as
databases, printers, communication links, or high powered-processors. The
server process performs the back-end tasks that are common to similar
applications.


------------------------------

Subject: 2.4 What is a Two-Tier Architecture?
From: Lloyd Taylor 

A two-tier architecture is where a client talks directly to a server,
with no intervening server.  It is typically used in small environments
(less than 50 users).

A common error in client/server development is to prototype an
application in a small, two-tier environment, and then scale up by
simply adding more users to the server.  This approach will usually
result in an ineffective system, as the server becomes overwhelmed.  To
properly scale to hundreds or thousands of users, it is usually
necessary to move to a three-tier architecture.


------------------------------

Subject: 2.5 What is a Three-Tier Architecture?
From: Lloyd Taylor 

A three-tier architecture introduces a server (or an "agent") between
the client and the server.  The role of the agent is manyfold.  It can
provide translation services (as in adapting a legacy application on a
mainframe to a client/server environment), metering services (as in
acting as a transaction monitor to limit the number of simultaneous
requests to a given server), or intellegent agent services (as in
mapping a request to a number of different servers, collating the
results, and returning a single response to the client.


------------------------------

Subject: 2.6 What is Middleware?
From: Ravi Kalakota 

Connectivity allows applications to transparently communicate with other
programs or processes, regardless of their location.  The key element of
connectivity is the network operating system (NOS). NOS provides
services such as routing, distribution, messaging, file and print, and
network management services.  NOS rely on communication protocols to
provide specific services. The protocols are divided into three groups:
media, transport and client-server protocols. Media protocols determine
the type of physical connections used on a network (some examples of
media protocols are Ethernet, Token  Ring, Fiber Distributed Data
Interface (FDDI), coaxial and twisted-pair). A transport protocol provides
the mechanism to move packets of data from client to server (some
examples of transport protocols are Novell's IPX/SPX, Apple's AppleTalk,
Transmission Control Protocol/ Internet Protocol (TCP/IP), Open Systems
Interconnection (OSI) and Government Open Systems Interconnection
Profile(GOSIP)).  Once the physical connection has been established and
transport protocols chosen, a client-server protocol is required before the
user can access the network services. A client-server protocol dictates the
manner in which clients request  information and services from a server
and also how the server replies to that request (some examples of client-
server protocols are NetBIOS, RPC, Advanced Program-to-Program
Communication (APPC), Named Pipes, Sockets, Transport Level Interface
(TLI) and Sequenced Packet Exchange (SPX)).


------------------------------

Subject: 2.7 What is Cooperative Processing?
From: Ravi Kalakota 

Cooperative processing is computing which requires two or more distinct
processors to complete a single transaction.  Cooperative processing is
related to both distributed and client/server processing. It is a form of
distributed computing where two or more distinct processes are required to
complete a single business transaction. Usually, these programs interact
and execute concurrently on different processors. Cooperative processing
can also be considered to be a style of client/server processing if
communication between processors is performed through a message
passing architecture.


------------------------------

Subject: 2.8 What is Distributed Processing?
From: Ravi Kalakota 

The distribution of applications and business logic across multiple
processing platforms.  Distributed processing implies that processing will
occur on more than one processor in order for a transaction to be
completed. In other words, processing is distributed across two or more
machines and the processes are most likely not running at the same time,
i.e. each process performs part of an application in a sequence. Often the
data used in a distributed processing environment is also distributed across
platforms.