Object Oriented Software Engineering   View all facts   Glossary   Help
subject > pattern > software architecture > distributed architecture > client-server architecture
Updistributed architecture

client-server architecture
subjectfact 
client-server architecturehas definition An architectural pattern in which the system is divided into clients and servers2001-08-30 14:54:53.0
has advantages
  • The computational work can be distributed among different machines
  • The clients can access the server's functionality from a distance
  • The client and server can be designed separately, so they can both be simpler than a program that does everything
  • All the data can be kept centrally at the server, thus making it easier to assure its reliability
  • Conversely, distributing data among many different geographically-distributed clients or servers can mean that if a disaster occurs in one place, the loss of data is minimized
  • The server can be accessed simultaneously by many clients
  • Competing clients can be written to communicate with the same server, and vice-versa
2001-08-30 14:54:53.0
has alternatives
  • Have a single program on one computer that does everything
  • Avoid having any communication and have each computer perform the work separately
  • Have some mechanism other than client-server communication for exchanging information
2001-08-30 14:54:53.0
is one of the most widely used ways of structuring software systems2001-08-30 14:54:53.0
is a subtopic of 3.4 - The Client-Server Architecture2001-08-30 14:54:53.0
is a subtopic of 9.5 - Architectural Patterns2001-08-30 14:54:53.0
is a kind of distributed architecture2001-08-30 14:54:53.0
distributed architecturefacilitates designing for flexibility because distributed systems can often be easily reconfigured by adding extra servers or clients and clients and servers can be developed by competing organizations, giving the customer a choice2001-08-30 14:55:20.0
facilitates divide and conquer since dividing the system into processes is a very strong way to divide the system up2001-08-30 14:55:20.0
increases abstraction because separate distributed components are often good abstractions2001-08-30 14:55:20.0
increases reuse because it is often possible to find suitable frameworks on which to build good distributed systems2001-08-30 14:55:20.0
reduces coupling since there is usually only one communication channel between distributed components although you have to watch out for control coupling2001-08-30 14:55:20.0
software architectureconstrains the overall efficiency, reusability and maintainability of the system2001-08-30 14:57:33.0
is decided early in the design process, although it will continue to mature as iterative development proceeds2001-08-30 14:57:33.0
must be understood by software engineers2001-08-30 14:57:34.0
see also software architecture^22001-08-30 14:57:34.0
see also software architecture^32001-08-30 14:57:34.0
patternshould be described in an easy-to-understand form so that people can determine when and how to use it2001-08-30 14:56:56.0
should contain a solution that has been proven to effectively solve the problem in the indicated context2001-08-30 14:56:56.0

Kinds of client-server architecture :

Updistributed architecture