Book contents
- Frontmatter
- Contents
- Preface
- Annotated Table of Contents
- Acknowledgments
- PART I Overview
- PART II Software Modeling
- PART III Architectural Design
- 12 Overview of Software Architecture
- 13 Software Subsystem Architectural Design
- 14 Designing Object-Oriented Software Architectures
- 15 Designing Client/Server Software Architectures
- 16 Designing Service-Oriented Architectures
- 17 Designing Component-Based Software Architectures
- 18 Designing Concurrent and Real-Time Software Architectures
- 19 Designing Software Product Line Architectures
- 20 Software Quality Attributes
- PART IV Case Studies
- Appendix A Catalog of Software Architectural Patterns
- Appendix B Teaching Considerations
- Glossary
- Answers to Exercises
- Bibliography
- Index
15 - Designing Client/Server Software Architectures
from PART III - Architectural Design
Published online by Cambridge University Press: 05 June 2012
- Frontmatter
- Contents
- Preface
- Annotated Table of Contents
- Acknowledgments
- PART I Overview
- PART II Software Modeling
- PART III Architectural Design
- 12 Overview of Software Architecture
- 13 Software Subsystem Architectural Design
- 14 Designing Object-Oriented Software Architectures
- 15 Designing Client/Server Software Architectures
- 16 Designing Service-Oriented Architectures
- 17 Designing Component-Based Software Architectures
- 18 Designing Concurrent and Real-Time Software Architectures
- 19 Designing Software Product Line Architectures
- 20 Software Quality Attributes
- PART IV Case Studies
- Appendix A Catalog of Software Architectural Patterns
- Appendix B Teaching Considerations
- Glossary
- Answers to Exercises
- Bibliography
- Index
Summary
This chapter describes the design of software architectures for client/server systems. In these systems, a client is a requester of services and a server is a provider of services. Typical servers are file servers, database servers, and line printer servers. Client/server architectures are based on client/service architectural patterns, the simplest of which consists of one service and multiple clients. This pattern has several variations, which will be described in this chapter. In addition, certain decisions need to be considered about the design of client/server architectures, such as whether the server should be designed as a sequential or concurrent subsystem, what architectural structure patterns to use for the design of the client/server architecture, and what architectural communication patterns to use for interaction between the clients and the services.
This chapter differentiates between a server and a service. A server is a hardware/software system that provides one or more services for multiple clients. A service in a client/server system is an application software component that fulfills the needs of multiple clients. Because services execute on servers, there is sometimes confusion between the two terms, and the two terms are sometimes used interchangeably. Sometimes, a server will support just one service or perhaps more than one; on the other hand, a large service might span more than one server node. In client/server systems, the service executes on a fixed server node(s) and the client has a fixed connection to the server.
- Type
- Chapter
- Information
- Software Modeling and DesignUML, Use Cases, Patterns, and Software Architectures, pp. 253 - 277Publisher: Cambridge University PressPrint publication year: 2011