The Channel Framework Architecture (CFA) is a highly flexible and scalable solution for client and server transports and provides common networking services, protocols, and I/O operations for the Expeditor Web Container.
Taking a protocol stack abstraction to building a transport, individual channels within this architecture may be thought of as protocol layers in a network stack. This architecture provides extended plugability along the entire chain of events involved in handling communication with the server and processing of the content of the communication at various steps in the server.
The CFA defines a set of interfaces that can be used to implement two main types of objects, channels and channel chains. Channels are used to transport data between the network and the Web Container server component. Channels are an encapsulation of the logic for processing some part of a data stream or for interfacing with a component. The data stream may be part of an inbound request to an application server or an outbound request from an application server. Channel chains consist of a set of channels that are linked together and used to transport data from the network to a component or from a component to the network. By defining a standard mechanism for combining channels, it becomes possible to plug in custom channels that support requirements unique to a particular customer or environment.
In the CFA, a component that is at the beginning or the end of a channel chain is known as the channel framework user (CFU). In an inbound channel chain, the request originates at the network and ends at the CFU. In an outbound channel chain, the request originates at the CFU and ends at the network. The Expeditor Web Container is a CFU. CFUs may have many inbound channel chains leading to them and many outbound channel chains leading from them.
Types of channels
Channels are classified into the following types:
- Connector channels are those channels closest to the network interface. A connector channel is the lowest channel in the channel protocol stack. An example of a connector channel is a TCP (Transmission Control Protocol) channel.
- Protocol channels are responsible for abstracting information that is transferred through them. When reading information, a protocol channel will generally parse the information into high-level structures that map to constructs which are specific to the protocol. When writing information, a protocol channel will take information provided in protocol-specific structures and map it to the structures needed by the channel below it in the stack. There may be zero or more protocol channels in the link between the connector channel and the application channel. An example of a protocol channel would be an HTTP (HyperText Transfer Protocol) channel.
- Application / Acceptor channels are the top-level channels. These channels are generally built on top of specific protocols in order to draw the correct data out of them. An example of an application channels is the one included for the Expeditor Web Container.
- Filter channels can only appear in the interior of a chain. Filter channels do not perform protocol conversions, and thus should accept and emit the same data type. Filter channels may be used for such applications as logging, SLA enforcement, etc.
The Channel Framework service is responsible for managing the channel framework lifecycle. It is responsible for the correct behavior of channels and channel chains at server startup and shutdown.
Parent topic: Configuring the Web Container