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