Previous | Table of Contents | Next |
Using the chain avoidance technique defined in this specification, the formation of view chains can be avoided. However, there
are cases where the chain avoidance information carried with the object references may have been discarded (for instance,
as the object reference is passed through a firewall). In this case, chaining of views cannot be avoided without an explicit
performance hit, which was deemed unacceptable. However, at the point when the first invocation is performed, information
about the current chain can be returned as out-of-band data. This information can then be used on subsequent invocations to
bypass as many views as possible in order to avoid the performance hit of multiple view translations.
Figure 20-3 Invocation With and Without Chain Bypass
Figure 20-3 shows an example of a call that does not perform chain bypass followed
by one that does. Note that chain bypass cannot eliminate all unnecessary calls since the client already has a reference to
the view (not to the original object) and thus invokes an operation on the view. It is the responsibility of the view to perform
the chain bypass if it so chooses -- in this case the view essentially becomes a rebindable stub.