ServerPatterns are design or architectural patterns for
servers, i.e. systems that process requests from clients. Note that a server is
not application code -- it is an execution context that provides resources needed to run application code.
ApplicationPatterns are covered elsewhere.
For example, an
EjbServer consists of a
JavaVirtualMachine, an
EjbContainer, and various underlying services (transactions, security, etc.). The
ServerPatterns in this context use
JavaTwoEnterpriseEdition terminology.
Generalising somewhat, a particular request enters the server via some type of communications transport protocol carrying an application-level protocol, such as the
CommonObjectRequestBrokerArchitecture (CORBA)
InternetInterOrbProtocol (IIOP). The request is analyzed (validated, security checked, etc.), allocated various resources (such as memory, CPU, etc), and demultiplexed and dispatched to an appropriate request handler that processes it. As it runs, it may lose control if it attempts to acquire additional resources and will be re-dispatched when those resources become available.
ServerPatterns are concerned with connection and memory management, event handling, synchronization, concurrency, security, dependability and fault isolation, and other infrastructure issues.
A wide variety of
ServerPatterns can be found in
PatternOrientedSoftwareArchitectureTwo.
CategoryPattern