SEC. 9.1 CORBA 519
performance it is important that different consistency models can be simultaneously supported, because the applicability of a model strongly depends on the usage and access patterns of an object. CASCADE meets this requirement.
As a CORBA service, CASCADE relies heavily on interceptors. To a client, CASCADE is virtually invisible; all issues dealing with consistency are hidden behind the interfaces that an object normally provides. The only time a client has explicit access to CASCADE is when it requests its local DCS to start caching a specific object. Whenever such an object is invoked, the invocation is intercepted at the client ORB and subsequently forwarded to that DCS.
Depending on the consistency model for the referenced object, additional information is added to the invocation request before sending it off to the DCS. For example, when a client requires read-your-writes consistency, it is necessary to tell what the last write operation was that the client has seen.
Cached object |
Cached object |
Cached object |
Cached object |
Invocation |
CASCADE RTS
Server ORB
Interceptors
Local OS
Object
Policy object
Method invocation control
Invocation request
Figure 9-16. The( simplified) organization of a DCS.
The general organization of a DCS is shown in Fig. 9-16. A DCS manages a number of copies of an object. Such a copy consists of the state and the implementations of the operations on that state. In CORBA terminology, a DCS has the same servant as the original copy of the object. The interceptor underlying the DCS intercepts an incoming invocation request and extracts the information that, for example, the client interceptor has added. The request is then forwarded to a method invocation control module uniquely associated with the referenced object. As shown in Fig. 9-16, each cached object has its own policy object that contains specific information to control method invocations. The additional information that was extracted by the interceptor is passed separately to this policy object.
Although CASCADE offers more or less transparent caching of object servers, it is seen that the more effort is needed to implement such a caching service for CORBA. Although interceptors allow invocations to be changed as necessary to implement such a service, no other support is provided by CORBA.