What is Client-Server Computing

advertisement
What is Client-Server Computing?
Client-Server computing is the logical extension of modular programming with
fundamental assumption that separation of a huge program into its constituent parts
("modules") can create the possibility for further modification, easier development
and better maintainability. In Client-Server Computing, all large modules need not all
be excecuted within the same memory space. With this architecture, the calling
module becomes the client( requesting service) and the called module becomes the
server (providing service). Clients and Servers are running separately on 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.
Components in Client-Server Computing
Client-Server Computing is dividing into three components, a Client Process
requesting service and a Server Process providing the requested service, with a
Middleware in between them for their interaction.
A Client Server Process usually manage the user-interface portion of the
application, validate data entered by the user, dispatch requests to server programs.
It is the front-end of the application that the user sees and interacts with. Besides, the
Client Process also manages the local resources that the user interacts with such as
the monitor, keyboard, workstation, CPU and other peripherals.
On the other hand, the Server Process fulfills the client request by performing the
service requested. After the server receives requests from clients, it executes database
retrieval , updates and manages data integrity and dispatches responses to client
requests. The server-based process may run on another machine on the network; 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 acts as
software engine that manages shared resources such as databases, printers,
communication links, or high powered-processors. The main aim of the Server
Process is to perform the back-end tasks that are common to similar applications.
Middleware allows applications to transparently commnicate with other programs
or processes regardless of location. The key element of Middleware is NOS (Network
Operating System) that provides services such as routing, distribution, messaging and
network management service. NOS rely on communiction protocols to provide
specific services. 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.
Characteristics of Client-Server Architecture
There are four basic characteristics of Client-Server Architecture:
1) Combination of a client or front-end portion that interacts with the user, and a
server or back-end portion that interacts with the shared resource.
2) The front-end task and back-end task have fundamentally different requirements
for computing resources such as processor speeds, memory, disk speeds and
capacities, and input/output devices.
3) The environment is typically heterogeneous and multivendor. The hardware
platform and operating system of client and server are not usually the same. Client
and server processes communicate through a well-defined set of standard application
program interfaces (API's) and RPC's.
4) An important characteristic of client-server systems is scalability. They can be
scaled horizontally or vertically. Horizontal scaling means adding or removing client
workstations with only a slight performance impact. Vertical scaling means migrating
to a larger and faster server machine or multiservers.
Various types of Servers
Disk and File Servers
The simplest form of servers are disk servers and file servers. With a file server, the
client passes requests for files or file records over a network to the file server. This
form of data service requires large bandwidth and can slow a network with many
users.
Database, Transaction and Application Servers
The more advanced form of servers are Database servers, Transaction server and
Application servers (Orfali and Harkey 1992).
In database servers, clients passes SQL (Structured Query Language) requests as
messages to the server and the results of the query are returned over the network. The
code that processes the SQL request and the data resides on the server allowing it to
use its own processing power to find the requested data, rather than pass all the
records back to a client and let it find its own data as was the case for the file server.
In transaction servers, clients invoke remote procedures that reside on servers
which also contains an SQL database engine. There are procedural statements on the
server to execute a group of SQL statements (transactions) which either all succeed
or fail as a unit.
Application servers are not necessarily database centered but are used to server
user needs, such as. download capabilities from Dow Jones or regulating a electronic
mail process. Basing resources on a server allows users to share data, while security
and management services, which are also based in the server, ensure data integrity
and security.
Reasons for employing Client-Server Technology in
Business
Client/server computing has arisen because of a change in business needs. Businesses
today need integrated, flexible, responsive and comprehensive applications to support
the complete range of business processes. Problems with existing systems include:
- applications were developed to model vertical applications
- applications were built in isolation
- applications were implemented as monolithic systems
- applications were complex
- the supporting technology was based on a centralised control model
Information technology, which is an enabling factor in systems building, has almost
reached the stage where these systems can be designed and created. Unfortunately,
most businesses have existing systems based on older technology, which must be
incorporated into the new, integrated environment. The development and
implementation of client/server computing is more complex, more difficult and more
expensive than traditional, single process applications. The only answer to the
question "why build client/server applications?" is "because the business demands the
increased benefits.
Business Benefits From Client-Server Computing
Tremendous benefits for implementing Client-Server Technology in Business. Below
are just a few of it.
- Vendor independence as compared to the traditional mainframe computing. This
includes application development methodologies, programming paradigms, products
and architectures.
- Organisation have changed from steep hierarchies to flattened hierarchies.
Decisions making are carried out by many lower ranked mangaers across the
organisation rather than performed only by CEOs in the past.
- Network management is replacing vertical management
- Faster response and flexibilty to changing environment of business world outside.
- The customer has a single point of contact for all business with the organisation.
- The time required to complete the work will be minimised
- Better sharing of critical database resources and other application softwares
among clients through the network.
- Companies can cut costs on maintainence in employing Client- Server Computing
since servers are usually cheaper than mainframe (1/10 of mainframe) and the
performance of servers and mainframe are nearly identical.
- Networked webs of small, powerful machines. If one machine goes down, the
organisation can still function properly.
- Systems grow easily. It is easy to updated and modernise sytem, both hardware
and software as the companies evolved and has new requirements.
- Indiviual client operating environments. You can mix and match computer
platforms to suit the needs of individual departments and users.
References
Orfali, Robert, et. al. Essential Client/Server Survival Guide New York : Van
Nostrand Reinhold
Berson, Alex Client-server architecture / Alex Berson. New York : McGraw-Hill,
c1992.
Smith, Patrick. Client/server computing Carmel, Ind. : SAMS, c1992.
Computing Archive, Department of Applied Science, Johns Hopkins University
Byte Magazine , Issue 6 1993 & Issue 4 1995
INSPEC - CD ROMS titles by IEE
Updated by Albert Yau on 22nd May, 1995
An Introduction to
Client/Server Architecture
Goals and Specifications
| Purpose And Origin | Client/Server Definition | Client/Server Implementation
- The Notion Of Middleware | Middleware Definition | Two-Tier Client/Server
architecture | Three-Tier(or Multi-Tier) Client/Server architecture | Internet
Services | References and Information Sources | Author/Maintainer |
Purpose and Origin
Until the late 70s and early 80s, computerized information services
were based on mainframes and minicomputers, where almost all
inteligence is within a central host computer. Users interact with the
host through a terminal that captures keystrokes and sends that
information to the host. Another trend that gained acceptance, during
this time was PC networking based on the file sharing metaphor.In file
sharing the server simply downloads the requested data to the PC
where logic resides in its entirety (popularized with Xbase style
products dBASE, FoxPro and Clipper). File sharing architectures are
simple and work as long as shared usage is low (it can only satisfy
about 12 users simultaneously) contention is low, and the volume of
data to be transferred is low.
The limitation of mainframes to non-graphical user interfaces and the
continuous increase of online users, introduced a rush, in the mid-80s,
to wire personal computers to each other (in so-called peer-to-peer
networks), and most importantly, to a new class of "server" computers.
In particular the advantage of networking personal computers into
client/server LANs-thus offloading some processing and control
functions from the mainframe to the individual desktop, while
retaining the power of time-sharing and messaging systems
characteristics -proved to be compelling. The client/server software
architecture is a versatile, message-based and modular infrastructure
that is intended to improve usability, flexibility, interoperabilityand
scalability as compared to centralized, mainframe, time sharing
computing.
A client is defined as a requester of services and a server is defined as the provider of
services. A single machine can be both a client and a server depending on the
software configuration. Typically a client is an application that runs on a personal
computer or workstation or server, and relies on a server to perform some operations.
For example, an e-mail client (Outlook Express) is an application that enables you to
send and receive e-mail.
On the other hand servers are computers-most of the time powerfull ones- or
processes, dedicated to managing disk drives (file servers), printers (print servers) or
network traffic (network servers). For example, a print server is a computer system or
process that manages one or more printers, a database server is a computer system or
process that processes database queries. In general when client-server architecture is
mentioned the notion of a database based system is poping up into people minds. This
probably comes, from the extensive use of this architecture on data retrieving
applications. But this is not always the case. As mentioned above you can implement
a client-server application for printer access (print server), network
management(network servers), Web page access(Web Servers) etc.
There are actually many different implementation strategies built on the client-server
foundation. Which to follow depends on factors such as the volume of transactions,
whether the application is mission-critical and whether the application is localised or
enterprise-wide. This document summarizes some of them.
Client/Server definition
The term client-server architecture is a general description of a
networked system where a client program initiates contact with a
separate server program (possibly on a different machine) for a
specific function or purpose. The client exists in the position of the
requester for the service, provided by the server.
Client/Server Implementation - The Notion of Middleware
An important aspect on implementing a client/server application is
how to distribute the different parts of the application between the
client and the server and how to make this implementation transparent
to the user - the user must not have to worry about the location of
resources (information, services etc).
Middleware acts as a translator between different systems or components and allows
exchange and use of recourses between them (interoperability). Do not confuse the
term Middleware with the so-called "Middle Tier" (see Three-Tier (or Multi-Tier)
Client/Server architecture later on this page). Middleware is a software layer that is
logically placed between system components.
The notion of middleware introduces a common and consistent environment that
reduces the complexity of developing a distributed application, and allows application
developers, to concentrate on solving business problems independent of the operating
system, hardware platform and communication protocol. It manages the various
interactions among system components as well as security, routing and overall
distribution of transactions with-in the application.
Middleware Definition
Middleware is a logical software layer placed between software applications and the
various system components ( operating systems, protocols) that are distributed over a
network. It simplifies the development of a distributed computer system by eliminating
the confusion caused from heterogeneous operating systems, communication
protocols, implementation languages, hardware platforms.
Middleware can be implemented using various communication models. International
Systems Group Inc. classifies middleware into five distinct categories:





Remote Procedure Calls (RPC) based Middleware
Message Oriented Middleware (MOM). MOM products can be
categorized as message passing, message queuing, and publish
& subscribe products
Portable Transaction Processing (TP) Monitors
Object Request Brokers (ORBs) including OLE/COM/DCOM
Database Middleware
Each one of these categories, provide different services, in terms of
communication, with subsequent advantages and disadvantages. The
selection between them is based on these services. For more
information, visit the ISG Inc page from the above link.
Typical product representatives of message passing are PeerLogic's PIPES Platform;
of the message queuing category is BEA Systems' DECmessageQ, IBM's MQSeries
and Microsoft's Falcon; and of a publish/subscribe product is Tibco's Software
Rendezvous (formerly known as Teknekron Information Bus). In addition, there are
MOM products such as Momentum's Software X-IPC which originated from solving
the problems of shared memory across machines.
As mentioned earlier, the client/server architecture can be implemented in various
ways. Two of them are described bellow:
Two-Tier Client/Server architecture
Two-tier approach on client-server was developed in the early 80's to
overcome the disadvantages of file sharing and to address the trend
towards graphical GUIs. One step was to replace the file server with a
database server. With this approach the client sends a query to the
server, which processes it, and returns the exact information wanted
instead of an entire file(which was the case with file sharing). This
reduces network traffic and increases update rates, reflecting a true
multi-user environment. There is a number of two-tier
implementations.

A two-tier implementation where the bulk of data processing
operations is performed in the client side. The database server
acts only as a repository of data imposing only simple
constraints to the data (like foreign key constraints, not null
constraints etc.), ensuring data integrity. This approach is often
characterized as "fat client" approach.
Although "fat client" is a term that refers to software, it can also


be used for a network computer with relatively strong
processing abilities.
A two-tier implementation where application logic can be
implemented in both the server and the user-end depending on
where it is judged to be more efficient.
A two tier implementation where all application logic is deployed
on the server. This is often characterized as a "thin-client"
approach usually used to describe the software on the client
machines. The thin-client term is also used to address network
machines or NET PCs that communicate with a server and do not
have a hard disk, whereas a fat client includes a hard disk.
Applications with the following attributes are well suited to a 2-tier
architecture:




The application is expected to support a limited number of users
(e.g. no more than a few hundred)
The application is networked and databases are "local" (i.e. not
over WAN or Internet)
A normal level of security is required (data is not overly sensitive)
Data access from outside applications is minimal
The main advantages of the 2-tier model are as follows:


Productive: many advanced tools have special optimizations that
mean less effort is required when working within the two-tier
model (e.g. Visual Basic, PowerBuilder, Delphi)
Better Re-use: Where application logic is placed solely on the
server, it can be initiated from many client applications and
tools.
The main disadvantages of the 2-tier model are:



Inability to partition application logic
Lack of robust security
Lack of scalability
Three-Tier(or Multi-Tier) Client/Server architecture
To overcome the limitations of two-tier architecture, a middle logical
tier(also called application server), was added between the
input/output device(presentation tier) and the server(data tier). This is
where the application/business logic of the system now resides
performing a number of different functions like queuing, application
execution, database staging and so forth.
The middle tier can be physically located on a separate machine but this is not always
necessary. In an application where the amount of users is limited, the application
server can be deployed on the client(s) machines or on the database server, reducing
the number of interface connections required making the system faster. As the number
of users grow it can be moved on its separate machine(s), addressing the desired
scalability benefits. As the number of users or processing needs grow, the number of
machines, that application logic resides, and the processing power in these machines
can grow as needed.
It is not always rationale to place application logic in its entirety in the middle tier.
For example integrity constraints are more efficient when placed in the data tier.
The benefits of the 3-Tier model are as follows:





Scalability: In this model the application servers(application logic)
can be deployed on many machines. The database server no
longer needs connections to every client. In stead it needs to be
connected with a fewer amount of application servers.
Data Integrity: Because of the fact that all database updates pass
through the middle tier, the middle tier can ensure that only
valid data is allowed to be updated in the database thus
removing the risk of data corruption from fraud client
applications.
Security: Security is implemented in multiple levels thus making
more difficult for a client to access unauthorized data, than it
would be if security was placed only on the database. Business
logic is implemented on a more secure central server, than if it
was distributed across the network.
Reduced distribution: Potential changes in the business logic can
be centralized into one place.
Hidden Database structure: The structure of the database is
hidden from the caller, so a potential enhancement of the
database application ( due to a new app. Release) will be
transparent from him.
Services
Client/Server architecture, was initially developed to support the early
versions of the Internet, and remains the basis of it. Internet though, is
far from a simple client/server notion. It is a collection of networks
where information and services are distributed. Information on a
number of services can be found in the following links:



Distributed Name Services
Examples include SNS, DNS, GNS and X.500
Author:M J Gregson
Security Services
Prime example is Kerberos
Author: Dassen Sathan
Comments to: dsathan@hotmail.com
Distributed File Service
Examples include NFS, AFS, Coda
Author: Stuart Thompson
Comments to: thstu@hotmail.com
Download