What is Distributed Computing?

In a distributed computing environment, one application invokes another application that is loaded and running separately. The application being invoked is known as the server or service, and the application invoking it is known as the client. In many cases the two applications are on different machines, they might be written in different languages and run on different platforms, and the invocation is across a network or intranet, or the Internet.

Typically, the client's job is to get data from the user and to pass data back to the user, while the server's job is to access and update a database where this data is stored. Typically there are multiple instances of the client, presenting the user interface on many computers around the office or around the world. There may be different client applications, presenting users with different views onto the data.

Often the two applications are designed and written together, by the same organization. But several technologies exist whereby a server application can be made generally available for any client to use. The server application is kept loaded, and any client application with the necessary access and knowledge of the interface can invoke it. Such a server application is often referred to as a component, or as reusable software, or as a service.

One advantage of this client/server model is that the client and server are written and deployed independently of one another. You deploy the server under an application server, which is software that listens for requests coming in from clients. So once the server application is deployed, new clients can be written to use it.

Another advantage of the client/server model is that the application server can load as many copies of the server component as necessary to cope with the volume of requests coming in for it. This is called scalability. The application server can also take care of other requirements, such as security.