Clark has proposed structuring such systems, where both upward and downward control flow are required, to use efficient synchronous procedure calls between the layers whenever possible. The term upcall is used by Clark to describe this synchronous upward communication from server to client.
Several techniques are possible for structuring such programs using upcalls.
Comparisons are made by implementing a communication protocol described by Clark in three different ways. The first method implements all the protocol routines in a single large module. The second method structures the routines into modules occupying vertical slices of the protocol layers, and the third method structures the routines into modules corresponding to the protocol layers. The horizontally layered design is the least efficient, but it is the easiest to program. Performance The Digital Library is published by the Association for Computing Machinery.