3. CAPS™ communication infrastructure
CAPS™' layers 1, 2 and 4 communicate securely among
themselves with the SSL (Secure Sockets Layer) protocol,
as implemented by the OpenSSL library. Python's
interface to OpenSSL, known as PyOpenSSL, was developed
by Strakt and released under the GNU Lesser General
Public License (LGPL). [Layer 3 runs within the same
process as Layer 2, and therefore intrinsically
communicates with it securely and rapidly by typical
intra-process mechanisms such as function calls and
callbacks].
SSL runs on top of TCP/IP. Therefore, the processes that
run the programs composing CAPS™' layers 1, 2 and 4 can
(and, in fact, generally do) run on multiple hosts in
the same LAN. This "naturally distributed" architecture
eases the deployment of scalable systems, with optional
load sharing and redundancy.
Secure communication among CAPS™ layers 1, 2 and 4 is also
quite feasible over WANs, and indeed even over the
Internet. However, performance issues related to network
traffic (bandwidth and delay) need to be carefully
assessed in order to make such deployments practical. As
a rule of thumb, most front-end (layer 4) programs may
often be successfully deployed at locations remote from
upstream layers. Deployment of server-layer programs at
locations remote from each other, on the other hand,
normally requires reliable, high-speed connections.
CAPS™' communication with other systems employs various
appropriate protocols and formats. CAPS™ uses SQL (and
modules compliant with Python's DB/API specifications)
to interoperate with relational database systems
(including the "layer 0" database). SMTP and RFC 2822
formats (as implemented by Python libraries and
extensions) let CAPS™ interoperate with e-mail systems.
Other standard formats and protocols, such as HTTP,
HTML, and XML, similarly allow CAPS™ to interoperate with
Web servers and browsers, Web services, and other
applications yet.
All of the communications-related components within CAPS™
use a highly scalable and responsive asynchronous
architecture. This architecture employs both event-driven
processing and multi-threading, and is implemented on
top of the "Twisted Matrix" Python communications
framework.
|
|