CLIENT/SERVER COMPUTING Client/Server computing divides a computer into three basic components: a client, a server, and a network that connects the client to the server. You can think of the network as the slash in the phrase client/server computing. The client and the server are both computers with varying degrees of processing power, and both share the computing workload necessary to get the job done. Some examples of what client/server computing can do are: 1.) Create customized business applications that access data on mainframe computers but are as easy to use as off- the- shelf PC applications, such as word- processing and spreadsheet programs. 2.) Develop applications that tie together data stored in otherwise incompatible computer systems- for example, a marketing system may access data stored in the corporate mainframe in Chicago, the departmental minicomputer in Cleveland, and the PC down the hall. 3.) Build a so- called Executive Informative System that summarizes the mass quantity of information typically stored in mainframe computers and presents it in a form that even the CEO can understand. CLIENT/SERVER CHARACTERISTICS 1.) Service: Client/server is primarily a relationship between processes running on separate machines. The server process is a provider of services. The client is a consumer of services. 2.) Shared Resources: A server can service many clients at the same time and regulate their access to shared resources. 3.) Asymmetrical protocols: There is a many- to-one relationship between clients and servers. Clients always initiate the dialog by requesting a service. Servers are passively awaiting requests from the clients. Note that in some cases a client may pass a reference to a callback object when it invokes a service. This lets the server call back the client. So the client becomes a server. 4.) Mix- and- match: The ideal client/server software is independent of hardware or operating system software platforms. 5.) Transparency of location: The server is a process that can reside on the same machine as the client or on a different machine across a network. Client/server software usually masks the location of the server from the clients by redirecting the services calls, when needed. A program can be a client, a server, or both. 6.) Message- based exchanges: Clients and servers are loosely coupled systems that interact through a message- passing mechanism. The message is the delivery mechanism for the service requests and replies. 7.) Encapsulation of services: A message tells a server what service is requested; it is then up to the server to determine how to get the job done. Servers can be upgraded without affecting the clients as long as the published message interface is not changed. 8.) Scalability: Client/server systems can be scaled horizontally or vertically. Horizontal scaling means adding or remove client work stations with only a slight performance impact. Vertical scaling means either migrating to a larger and faster server machine or distributing the processing load across multiple servers. 9.) Integrity: The server code and server data is centrally managed, which results in cheaper maintenance and the guarding of shared data integrity. At the same time, the clients remain personal and independent. TYPES OF CLIENT/SERVER PACKAGES 1.) With a file server, the client passes requests for file records over a network to the file server. This is a primitive form of data service that necessitates many message exchanges over the network to find the requested data. File servers are useful for sharing files across a network. 2.) DATABASE SERVERS: With a database server, the client passes Structured Query Language (SQL) requests as messages to the database server. The results of each SQL command are returned over the network. The code that processes the SQL request and the data resides on the same machine. 3.) TRANSACTION SERVERS: With a transaction server, the client invokes remote procedures (or services) that reside on the server with an SQL database engine. The remote procedures on the server execute a group of SQL statements. The network exchange consists of a single request/reply message (as opposed to the database server’s approach of one request/reply message for each SQL statement in a transaction). The SQL statements either all succeed or fail as a unit. These grouped SQL statements are called transactions. With a transaction server, you create the client/server, application by writing the code for both the client and server components. The client component includes a Graphical User Interface (GUI). The server component usually consists of SQL transactions against a database. These applications are called Online Transaction Processing, or OLTP. They tend to be mission- critical applications that require a 1-3 second response time 100% of the time. 4.) GROUPWARE SERVERS: Groupware addresses the management of semistructured information such as text, image, mail, bulletin boards, and the flow of work. These client/server systems place people in direct contact with other people. Lotus Notes and Microsoft Exchange are the leading examples of such systems, although a number of other applicationsincluding document management, imaging, multiparty applications, and workflow- are addressing some of the same needs. 5.) OBJECT APPLICATION SERVERS: With an object server, the client/server application is written as a set of communicating objects. Client objects communicate with server objects using an Object Request Broker (ORB). The client invokes a method on a remote object. The ORB locates an instance of that object server class, invokes the requested method, and returns the results to the client object. Server objects must provide support for concurrency and sharing. 6.) WEB APPLICATION SERVERS: The World Wide Web is the first truly intergalactic client/server application. This new model of client/server consists of thin, potable “universal” clients that talk to superfat servers. A web server returns documents when clients ask for them by name. The clients and servers communicate using an RPC- like protocol called HTTP. CLIENT/SERVER COMPUTING: INFORMATION FOR THE PEOPLE Technically speaking, client/server is a model of computing, just as the hierarchical mainframe is a model of computing. Models are abstract notions. A computer running a multitasking operating system, such as unix or NT, could quite possibly have a “client” and a “ server” residing on the same physical device. In the late 1980s, networked PCs were armed with office productivity tools. One thing that was missing was corporate data that was locked up on the mainframe. Client/server proponents seek to tear down this barrier Rather than just break through the walls of the glass house, there are some people who think we should get rid of the mainframe and its style of computing altogether. They are the downsizers. They ask, ”Now that we haveclient/server , why do we need mainframes?” This view is not only misguided, it can be downright dangerous. Client/server and mainframe computing aren’t in contention. Both have their place. Nothing is better than at processing information or keeping data more secure than mainframe. Client/server excels at collaborative computing. While it is by no means unusual for both to be a part of an organisation’s IT infrastructure, we invariably draw comparisons between them, and realise some rather surprising discoveries. Mainframes are expensive and so is their software. Their hard ware too is expensive. They need trained operators to attend to them constantly. They need airconditioned facilities to run in. Client/server, on the other hand, uses cheap PCs and not very expensive RISC – or CISC – servers. Most people now contend that client/server solutions are much more expensive than we thought- often even much more costly than traditional mainframe implementations. Client/server is more complicated than the types of solutions we have known in the past. Therefore training is a big part of client/server’s hidden cost. Developers, project leaders, designers, administrators and even end users need to be educated and, in many cases, completely reskilled. Client/server’s added complexity is further borne out by the alarming percentage of development projects ending in failure. And few out of those that actually make it through development end up saving money. Maintenance and ongoing technical support usually eat heavily into any savings. If client/server computing is so expensive, and risky why invest in it? “Information for the people” is the answer. Organisations run on decisions. Giving workers the information they nee – when they need it – in a manner that they can readily use should help them to make faster and better decisions. This is a large part of the motivation behind client/server computing. There’s a third view of client/serves computing known as a “pass- through” on our way to fully distributed computing. While client/server itself is a form of distributed computing, its extend is limited. In the client/server model clients are always clients and servers are always servers. A more flexible, and possibly more efficient, scheme would allow those roles to change as the circumstances dictated. This more distributed style of computing is known as peer-to-peer. Peer-to-peer computing is realistically several years away; most people are not ready for it.