Most of the
traffic on the Internet is web-based and web-based applications are predominantly
client-server. Client is usually a web
browser and server is usually referred to as the Web server. Example of a browser is Microsoft Internet
Explorer and example of a Web server is Apache.
Applications
that are written in HyperText Markup Language
(HTML) have limited functionality.
Static web pages are presented using HTML solely for marketing purposes
with no or little interactivity. Doing
business on line requires extensive functionalities, not only in the form of
comprehensive interactivity but also the need for centralisation of data. For example in order to enable a customer to
shop on line we need to provide for presentation of web content in accordance
to the customer's requirements and allow the customer to register and login and
pay online.
Generally
computing applications consist of three different and distinct types of
functionalities.
Data Management Functional Logic Presentation Services
A
stand-alone computing application is one when all these three functionalities
are on one computer. For example an
Access database application that runs on your PC at home. Client-server applications are when we have
separated these three functionalities and distributed them across two or more
computers. With this type of architecture
one has to decide on the number of computers (or tiers) and how to distribute
the three functions among the tiers.
What are the different types (the various ways we
can distribute) of client-server architecture? |
|
Specialisation-
Separation of the functionalities means that a tier could specialise in what it
does. For example presentation layer in
a 3-tier client-server architecture may only be concerned with interaction with
the user and not the data management or the business logic. Similarly the other two tiers may well be
highly specialised. This means that
alterations to the presentational functions at the front -end should not effect
the functions at the other two tiers.
Openness
(Design flexibility)- Separation of the functions across a number of tiers
could also mean that these tiers are technology and platform independent. Consequently different technologies and
programming languages can be used at different tiers, hence a greater choice of
components and higher flexibility.
Reliability/Availability/Scalability
- By distributing system functionality
across a number of tiers, through
appropriate duplication high availability and robustness of the system can be
ensured.
1st tier-
Web browser 2nd
tier- Web server 3rd
tier- Data storage
Typically,
web-based systems are 3-tier. The 1st
tier is the presentational tier and is
usually a Web browser. 2nd tier is
almost always associated with a Web server.
3rd tier is usually a database.
The separation explained here refers to a situation when we have a thin
client. As such drawing definitive lines
for the functionality of the tiers is
sometimes unrealistic. This is in
particular the issue when we have not so thin clients or when we have fat
clients. Some of the business logic for
example could be attributed to the 1st tier under these circumstances.
It is also
important to note that Web application architecture sometimes is referred to as
multi-tier. In effect we could have more
than 3-tiers in circumstances when the Web server requires to access one or
more application servers for specialised services.
What are the thin and fat clients? How do these effect the architecture? What does the architecture look like? |
|
Food for
thought:
How do you
decide on the functionalities at various tiers?
Is there
any advantage in increasing the number of tiers to say 4?
What are
middle tiers and what are their functionalities, and advantages?