What do well-known techniques such as gather/scatter for
input/output, code downloading for system extension, message
batching, mobile agents, and deferred calls for disconnected
operation have in common?
Despite being rather different techniques, all of them share a
common piece of design (and, possibly, implementation) as their
cornerstone: the B
ATCHING design pattern.
All techniques mentioned above are designed for applications running across
multiple domains (e.g., multiple processes or multiple nodes in a network).
In these techniques, multiple operations are bundled together and then sent
to a different domain, where they are executed. In some cases, the objective
is to reduce the number of domain-crossings. In other cases, it is to allow
for dynamic server extension.
In this paper, we present the B
ATCHING pattern, discuss the circumstances
in which the pattern should and should not be used, and identify eight
classes of existing techniques that instantiate it.