Skip to Main Content
This paper describes a family of design patterns that enhance the flexibility and extensibility of communication software by permitting network services to evolve independently of the strategies used to passively initialize the services. The paper makes three contributions to the study and development of configurable distributed systems. First, it identifies five orthogonal dimensions of passive service initialization: service advertisement, endpoint listening, service handler creation, passive connection establishment, and service handler activation. Second the paper illustrates how a family of design patterns have been used to build a communication software framework that supports flexible configuration of different strategies for each of these five dimensions. Third, the paper demonstrates how design patterns and frameworks are being used successfully to develop configurable large-scale production distributed systems.