Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

CHAPTER 1

INTRODUCTION TO CLIENT/SERVER


EVOLUTION OF CLIENT/SERVER TECHNOLOGY
For over two and a half decades till mid 1970s, networking scenario was Proprietary.
Proprietary networking is a networking design or technique that is owned by a company.
Such designs are built to match the specifications and requirements of an organization.
Proprietary networking solutions were quite expensive
It has its own set of networking and connectivity standards.

OPEN SYSTEMS
For create better and improved networking solution the concept of open
system introduced.
Open systems are systems that adhere to a standard set of interfaces
Standardization: Chips, Peripherals, Networking protocols, O/S and
Software Components.
Allows the implementation of networking & software products from multiple vendors

BIRTH OF CLIENT/SERVER TECHNOLOGY
A new computing technology based on open systems, called distributed computing
was introduced.
Distributed computing: Computing load distributed across multiple machine on
a network.
This new technology was further developed, called Client/server technology.

WHAT IS CLIENT/SERVER?
Client/Server is a computational architecture that involves client processes
requesting service from server processes.
It is an architectural model in which a system's functionality and its processing
are divided between the client PC (front end) and a server (back end).
System functionality: Programming Logic, business rules and data management
is segregated between client and server.
SERVERS: Powerful computers or processes dedicated for managing the network
traffic, storage space, and resources such as files and printers.
CLIENTS: PCs or workstations on which users run applications.
The clients rely on servers for resources, such as files, hard disk, and printers.

















BUILDING BLOCKS OF CLIENT SERVER TECHNOLOGY
These building blocks of the client/server technology are:
o Client
o Server
o Network
o Applications
THE CLIENT SIDE
The client is the user interface in a client/server environment
Client machines use sophisticated GUI tools that provide users with a
consistently tailored system view.
The client manages all user interactions, and hides the server and the network from
the user.
It creates an illusion that the entire application is executing locally, without the use
of other processes, machines, or networks.
THE SERVER SIDE
A server in a client/server environment is a reactive process, activated by requests
sent from clients.
The client programs send requests to the server for providing services, such
as transmitting a requested file, processing a program code, executing a set of
SQL statements, or printing a file.
A server is capable of providing multitasking support and shared memory services.

THE NETWORK
The Network in a client/server environment connects the clients with the servers.
Client computers communicate with the server through the network.
Network classification according to geographical coverage : LAN,MAN,WAN

THE APPLICATIONS
The applications tie the other three components to form the
client/server architecture.
Software applications that run on the client and the server establish
the communication between the client and the server.
BENEFITS OF CLIENT/SERVER
1. IMPROVED INFORMATON ACCESS
A well designed client/server system provides users with easy access to
information.
The user friendly front-end application displays information that the user
requests.
2. INCREASED PRODUCTIVITY
A client/server system increases users productivity by providing them
with the tools to complete their tasks more easily.
It automatically validates information, performs calculations and
reduces duplicate data entry.
3. AUTOMATED BUSINESS PROCESSES
A client/server system can automate company's business process by
eliminating manual labor.
Example: Electronic Purchase Ordering System.
4. POWERFUL REPORTING CAPABILITIES
Information is stored in relational database hence can be easily queried.
Client/server system provide features that enable end users to create and
customized report.
5. IMPROVED CUSTOMER SERVICE
Provides fast response to customer.
6. RAPID APPLICATION DEVELOPMENT
Provides programmers to create applications by taking advantage of OOP
technique.
GUI design tools provide drag and drop facilities.
7. COST REDUCTIONS AND SAVINGS
Many companies have replaced their mainframe systems with
client/server and saved millions of dollars.
People can accomplish their task faster so they save time and
effort which also translates into a financial savings.

8. INCREASED REVENUE
A client/server system does not generate revenue itself.
Plays a significant role in contributing to increase revenue.
Examples :
o Enables a new product to de developed faster so that it hits the
market sooner.
o Enables a company to spot sales opportunities faster.
o Identifies which marketing strategy work well and should be used
again.
o Identifies the desire of a customer.
9. QUICK RESPONSE TO CHANING MARKETPLACE
Businesses are changing rapidly.
The market place is now more competitive.
Change in business can be made with the help of client/server technology.
During 1980s,no real business processing were done on LANs : Centralized
System.
Successful client/server breaks up a company's major business areas into
several distinct units.

"IGNORE THE MYTH"
Robust client/server systems can be developed overnight.
Implementing a client/server system is inexpensive

MOVING TO CLIENT/SERVER
Companies are introducing client/server systems into their organization
from two general directions.
Some companies are downsizing to client/server and replacing their mainframes.
Others are upsizing to client/server and replacing their file server based
database system.
1. DOWNSIZING
Replacements of mainframe systems.
The three main issues of replacement of mainframe computers are as follows
o The mainframe's inability to support adhoc queries.
o Inabilities to quickly modify mainframe programs.
o The high maintenance and support costs for keeping a mainframe
running.
2. UPSIZING
Many smaller to midsize firms are upsizing to client/server.
Companies are turning to client/server system because of the limitation in
current system.
o Incapable of managing larger number of concurrent users.
o Incapable of handling the increased volume of data.
o Incapable of providing acceptable performance.

ADJUSTING TO CLIENT/SERVER CHANGES
Designing, development and implementing a successful client/server system
requires increase end user involvement.
Department of Information System has to improve their communication skills.
Gain a better understanding of how the business works.
The IS staff must acquire new technical skills required to build client/server
systems.
Client/server systems are so powerful and flexible: Business re-
engineering concepts
Re-engineering translates people to learn new ways of doing jobs in
addition to the new computer system.


CLIENT SERVER IMPLEMENTATION
The client/server system can be either centralized or distributed.
Under centralized implementation, several client systems are connected to
a single centralized server in a network.
Distributed implementation, on the other hand, involves a collection of client
systems connected to various distributed servers in a network.
Distributed client/server system includes several groups of centralized networks.

CLIENT/SERVER PROCESS
Typically, the following steps are involved in processing a client request
in a client/server environment.
Client sends a request, such as retrieving data from a database, to
the server. Server accesses the database and retrieves the
required data for the client.
Server processes the retrieved data, if required.
Server sends this processed information
to the client. Client then presents this
information to the user.

TYPES OF SERVERS IN A CLIENT/SERVER MODEL
You might implement various types of servers in a client/server
environment. The various types of servers available in a client/server
model are:
o File server
o Database server
o Transaction server
o Application server
o Groupware server

1. FILE SERVER
A file server, also known as Networked File Server (NFS), is a server on
the network that stores the data files, which can be accessed by network
clients.
When a client sends a request for a file over the network, the file server
searches and returns the requested file to the client.
2. APPLICATION SERVER
An application server regulates resources and processes, such as e-mail, on the
network.
Various resources are placed on the server, enabling users at the client end
to share these resources, as and when required.
3. GROUPWARE SERVER
A groupware server is responsible for handling the management of
semi-structured information, such as text, image, mail, bulletin
boards, and the flow of work, in a network.
Groupware servers enable people in a client/server environment to
be in direct contact with each other
For instance, groupware servers might be implemented to enable
conferencing or electronic meetings among employees of an
organization located in Jomsom and Kathmandu.

4. DATABASE SERVER
A database server in a client/server environment is responsible for
maintaining data on the network.
A database server is responsible for handling database queries from the
clients and returning requested data to them.

5. TRANSACTION SERVER
A transaction server in a client/server environment contains an SQL
database engine.
Clients invoke remote procedures that reside on the transaction server.
The transaction server handles a set of SQL statements sent by a client as
a single transaction


CLIENT SERVER MODELS
Client/server systems can be classified based on the way in which the
systems have been built.
There are five different models:
o Distributed Presentation
o Remote Presentation
o Distributed Logic
o Remote Data
o Distributed Data

1. DISTRIBUTED PRESENTATION
Distributed presentation means both the client and the server machines
format the display presented to the end user.
The client machine intercepts display output from the server and reroutes
the output through its own process before presenting to the user.
The easiest model is to provide terminal emulation on the client.
More advanced form of terminal emulation: Screen scraping.
2. REMOTE PRESENTATION
It is useful when moving from a dumb terminal environment to a
PC-LAN environment.
The server sends a raw data stream to client.
The client formats the data and presents it to the end user.
All the core system and application logic resides on the server.
The client and server process communicate through more advanced
protocols such as IBM's Advanced Peer to Peer Communications (APPC).
3. DISTRIBUTED LOGIC
A distributed logic client/server splits the logic of application between the
client and server processes.
Typically, an event-driven GUI application on the client controls the application.
The client and server process can communicate through variety of middleware
tools.
4. REMOTE DATA
The client handles all the application logic and end user presentation.
The server provides only the data.
Clients typically use remote SQL or ODBC to access the data stored on the
server.
Applications built in this way are currently the most common in use.
5. DISTRIBUTED DATA
The distributed data model uses data distributed across multiple networked
systems.
Data sources may be distributed between the client and the server or
multiple servers.
It is complex and requires a great deal of planning and decision
making to use effectively.
It requires advanced data management scheme to
enforce data concurrency, security and integrity across
multiple platforms.
This model is the most difficult client/server model to use.
FAT AND THIN CLIENT CONCEPTS:
A fat client (also called heavy, rich, or thick client) is a computer (client) in clientserver
architecture or networks that typically provides rich functionality independent of the central
server. Originally known as just a "client" or "thick client" the name is contrasted to thin
client, which describes a computer heavily dependent on a server's applications.

A fat client still requires at least periodic connection to a network or central server, but is
often characterized by the ability to perform many functions without that connection. In
contrast, a thin client generally does as little processing as possible and relies on accessing
the server each time input data needs to be processed or validated.

A thin client (sometimes also called a lean or slim client) is a computer or a computer
program which depends heavily on some other computer (its server) to fulfill its traditional
computational roles. This stands in contrast to the traditional fat client, a computer
designed to take on these roles by itself. The exact roles assumed by the server may vary,
from providing data persistence (for example, for diskless nodes) to actual information
processing on the client's behalf.

Thin clients occur as components of a broader computer infrastructure, where many clients
share their computations with the same server. As such, thin client infrastructures can be
viewed as the amortization of some computing service across several user-interfaces. This is
desirable in contexts where individual fat clients have much more functionality or power
than the infrastructure either requires or uses. This can be contrasted, for example, with
grid computing.

Thin-client computing is also a way of easily maintaining computational services at a
reduced total cost of ownership.


CLIENT SERVER COMPUTING MODELS
We have the following architectures
2-Tier Architectures
3-Tier Architectures
N-Tier Architectures

First generation systems are 2-tiered architectures where a client presents a graphical user
interface (GUI) to the user, and acts according to the user's actions to perform requests of a
database server running on a different machine.

2-Tier Architectures

Client/server applications started with a simple, 2-tiered model consisting of a client and an
application server. The most common implementation is a 'fat' client - 'thin' server
architecture, placing application logic in the client. (Figure 1) The database simply reports
the results of queries implemented via dynamic SQL using a call level interface (CLI) such
as Microsoft's Open Database Connectivity (ODBC).

An alternate approach is to use thin client - fat server waylays that invokes procedures
stored at the database server. (Figure 2) The term thin client generally refers to user
devices whose functionality is minimized, either to reduce the cost of ownership per desktop
or to provide more user flexibility and mobility. In either case, presentation is handled
exclusively by the client, processing is split between client and server, and data is stored on
and accessed through the server. Remote database transport protocols such as SQL-Net are
used to carry the transaction. The network 'footprint' is very large per query so that the
effective bandwidth of the network, and thus the corresponding number of users who can
effectively use the network, is reduced. Furthermore, network transaction size and query
transaction speed is slowed by this heavy interaction. These architectures are not intended
for mission critical applications.

Development tools that generate 2-tiered fat client implementations include PowerBuilder,
Delphi, Visual Basic, and Uniface. The fat server approach, using stored procedures is more
effective in gaining performance, because the network footprint, although still heavy, is
lighter than that of a fat client.

Advantages of 2-Tier System
Good application development speed
Most tools for 2-tier are very robust
Two-tier architectures work well in relatively homogeneous environments with fairly
static business rules

A new generation of client/server implementation takes this a step further and adds a
middle tier to achieve a '3-tier' architecture. Generally, client-server can be implemented in
an 'N-tier' architecture where application logic is partitioned. This leads to faster network
communications, greater reliability, and greater overall performance.


3-Tier Architectures
Enhancement of network performance is possible in the alternative 'N-tier' client-server
architecture. Inserting a middle tier in between a client and server achieves a 3-tier
configuration. The components of three-tiered architecture are divided into three layers: a
presentation layer, functionality layer, and data layer, which must be logically separate.
(Figure 3) The 3-tier architecture attempts to overcome some of the limitations of 2-tier
schemes by separating presentation, processing, and data into separate distinct entities.
The middle-tier servers are typically coded in a highly portable, non-proprietary language
such as C. Middle-tier functionality servers may be multithreaded and can be accessed by
multiple clients, even those from separate applications.

The client interacts with the middle tier via a standard protocol such as DLL, API, or RPC.
The middle-tier interacts with the server via standard database protocols. The middle-tier
contains most of the application logic, translating client calls into database queries and
other actions, and translating data from the database into client data in return. If the middle
tier is located on the same host as the database, it can be tightly bound to the database via
an embedded 3gl interface. This yields a very highly controlled and high performance
interaction, thus avoiding the costly processing and network overhead of SQL-Net, ODBC, or
other CLIs. Furthermore, the middle tier can be distributed to a third host to gain processing
power capability.
Advantages of 3-Tier Architecture
RPC calls provide greater overall system flexibility than SQL calls in 2-tier
architectures
3-tier presentation client is not required to understand SQL. This allows firms to
access legacy data, and simplifies the introduction of new data base technologies
Provides for more flexible resource allocation
Modularly designed middle-tier code modules can be reused by several applications
3-tier systems such as Open Software Foundation's Distributed Computing
Environment (OSF/DCE) offers additional features to support distributed applications
development
As more users access applications remotely for business-critical functions, the ability of
servers to scale becomes the key determinant of end-to-end performance. There are several
ways to address this ever-increasing load on servers. Three techniques are widely used:
Upsizing the servers
Deploying clustered servers
Partitioning server functions into a "tiered" arrangement

N-Tier Architectures
The 3-tier architecture can be extended to N-tiers when the middle tier provides
connections to various types of services, integrating and coupling them to the client, and to
each other. Partitioning the application logic among various hosts can also create an N-
tiered system. Encapsulation of distributed functionality in such a manner provides
significant advantages such as reusability, and thus reliability.

As applications become Web-oriented, Web server front ends can be used to offload the
networking required to service user requests, providing more scalability and introducing
points of functional optimization. In this architecture (Figure 4), the client sends HTTP
requests for content and presents the responses provided by the application system. On
receiving requests, the Web server either returns the content directly or passes it on to a
specific application server. The application server might then run CGI scripts for dynamic
content, parse database requests, or assemble formatted responses to client queries,
accessing dates or files as needed from a back-end database server or a file server.

The basic characteristics of client/server architectures are:
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.
The client process contains solution-specific logic and provides the interface
between the user and the rest of the application system. The server process
acts as a software engine that manages shared resources such as
databases, printers, modems, or high powered processors.
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
multi-servers.
Advantages of a client/server network:
Centralized - Resources and data security are controlled through the server.
Scalability - Any or all elements can be replaced individually as needs increase.
Flexibility - New technology can be easily integrated into system.
Interoperability - All components (client/network/server) work together.
Accessibility - Server can be accessed remotely and across multiple platforms.
Disadvantages of a client/server network:
Expense - Requires initial investment in dedicated server.
Maintenance - Large networks will require a staff to ensure efficient operation.
Dependence - When server goes down, operations will cease across the network.

You might also like