Previous | Table of Contents | Next |
When an interaction takes place across a domain boundary, a mapping mechanism, or bridge, is required to transform relevant
elements of the interaction as they traverse the boundary. There are essentially two approaches to achieving this: mediated
bridging and immediate bridging. These approaches are described in the following subsections.
Domain Domain Domain Domain
Mediated Bridging Immediate Bridging
Figure 13-2 Two bridging techniques, different uses of an intermediate form agreed on between the two domains.
13.4.3.1 Mediated Bridging
With mediated bridging, elements of the interaction relevant to the domain are transformed, at the boundary of each domain,
between the internal form of that domain and an agreed, common form.
Observations on mediated bridging are as follows:
• The scope of agreement of a common form can range from a private agreement between two particular ORB/domain implementations to a universal standard.
• There can be more than one common form, each oriented or optimized for a different purpose.
• If there is more than one possible common form, then which is used can be static (e.g., administrative policy agreed between ORB vendors, or between system administrators) or dynamic (e.g., established separately for each object, or on each invocation).
• Engineering of this approach can range from in-line specifically compiled (compare to stubs) or generic library code (such as encryption routines), to intermediate bridges to the common form.
13.4.3.2 Immediate Bridging
With immediate bridging, elements of the interaction relevant to the domain are transformed, at the boundary of each domain,
directly between the internal form of one domain and the internal form of the other.
Observations on immediate bridging are as follows:
• This approach has the potential to be optimal (in that the interaction is not mediated via a third party, and can be specifically engineered for each pair of domains) but sacrifices flexibility and generality of interoperability to achieve this.
• This approach is often applicable when crossing domain boundaries which are purely administrative (i.e., there is no change of technology). For example, when crossing security administration domains between similar ORBs, it is not necessary to use a common intermediate standard.
As a general observation, the two approaches can become almost indistinguishable when private mechanisms are used between
ORB/domain implementations.
13.4.3.3 Location of Inter-Domain Functionality
Logically, an inter-domain bridge has components in both domains, whether the mediated or immediate bridging approach is used.
However, domains can span ORB boundaries and ORBs can span machine and system boundaries; conversely, a machine may support,
or a process may have access to more than one ORB (or domain of a given type). From an engineering viewpoint, this means that
the components of an inter-domain bridge may be dispersed or co-located, with respect to ORBs or systems. It also means that
the distinction between an ORB and a bridge can be a matter of perspective: there is a duality between viewing inter-system
messaging as belonging to ORBs, or to bridges.
For example, if a single ORB encompasses two security domains, the inter-domain bridge could be implemented wholly within
the ORB and thus be invisible as far as ORB interoperability is concerned. A similar situation arises when a bridge between
two ORBs or domains is implemented wholly within a process or system which has access to both. In such cases, the engineering
issues of inter-domain bridging are confined, possibly to a single system or process. If it were practical to implement all
bridging in this way, then interactions between systems or processes would be solely within a single domain or ORB.
13.4.3.4 Bridging Level
As noted at the start of this section, bridges may be implemented both internally to an ORB and as layers above it. These
are called respectively “in-line? and “request-level? bridges.
Request-level bridges use the CORBA APIs, including the Dynamic Skeleton Interface, to receive and issue requests. However,
there is an emerging class of “implicit context? which may be associated with some invocations, holding ORB Service information
such as transaction and security context information, which is not at this time exposed through general purpose public APIs.
(Those APIs expose only OMG IDL-defined operation parameters, not implicit ones.) Rather, the precedent set with the Transaction
Service is that special purpose APIs are defined to allow bridging of each kind of context. This means that request-level
bridges must be built to specifically understand the implications of bridging such ORB Service domains, and to make the appropriate
API calls.