The Buzz Words
It always helps to get a understanding of the buzz words in use. This article is an attempt to discuss the most common meaning attached to the top few definitions and terminology in the client-server networking context. The very first term that needs to be understood is the term Client.
In the most basic form, a client machine needs to allow user inputs that will be conveyed to servers. It must have the capability to send these queries to the server, get a response back and be able to display the results. The most basic client then can be just a terminal connected in a serial port to a server. However, what you need is a client machine that can do a little more. It should be able to connect over the LAN at a minimum.
If you assume these basic network communication capabilities, you are looking at a PC with just the networking capability, for example. These have come to be known as the Thin Clients. In a sense one can simply have these thin clients by the millions hooked onto a network that has many powerful servers and provide IT services. This is a scenario many have envisioned. The vision is yet to be fulfilled. Most machines on a corporate LAN are regular PCs. Users prefer reasonably high processing power and other resources, such as storage, locally. These are called thick clients when they connect to a server for services.
A server is a powerful machine that can service requests from several machines simultaneously and provide a service. There's a whole range of services one can think of that can be configured through these servers. Print Servers provide print services for clients, Fax servers provide fax receive/transmit services, File Servers provide central, managed file services, Application Servers make software applications available to multiple users. A Proxy Server provides Internet access services to your clients on the corporate network. It is the browser clients that communicate and get access to the web servers (via the proxy server) of specific sites you need to visit.
The application servers are a class by themselves. The simultaneous multiple use can be managed for a whole range of simple to complex software applications. They can be a simple timesheet application or as sophisticated an application as a database management system or even a customer relationship management (CRM) application. How much of the application should be handled by the client and how the server handles them are crucial issues in determining the architecture of the application server and client application. How these software applications are designed and developed is a topic in itself and will not be discussed here.
What we have discussed so far here is the two tier client server architecture. The scenario is such that clients directly communicate with the servers. The clients and the servers in the network form the two tiers of the network. Quite often it may be advantageous to introduce a Middleware. Clients communicate their requests to this middleware and the requests then get passed on to the real server on the backend. The middleware manages the transactions between the clients and the servers. The architecture that includes a middleware is called Three Tier Architecture.