The Many Faces of Publish/Subscribe 117
Decoupling the production and con-
sumption of information increases scala-
bility by removing all explicit dependen-
cies between the interacting participants.
In fact, removing these dependencies
strongly reduces coordination and thus
synchronization between the different en-
tities, and makes the resulting commu-
nication infrastructure well adapted to
distributed environments that are asyn-
chronous by nature, such as mobile en-
vironments [Huang and Garcia-Molina
2001].
Complementary classifications of the in-
teraction models of distributed informa-
tion systems have been proposed in the
literature. Franklin and Zdonik [1997]
classified dissemination-based systems
according to their data delivery mecha-
nisms: push versus pull, aperiodic ver-
sus periodic, and unicast versus 1-to-N.
Push-based information systems have
been studied extensively [Hauswirth and
Jazayeri 1999; Hauswirth 1999]. Simi-
lar characterizations are used in software
engineering [Sullivan and Notkin 1990;
Garlan and Notkin 1991] and coordination
models [Papadopoulos and Arbab 1998].
3. THE COUSINS: ALTERNATIVE
COMMUNICATION PARADIGMS
Message passing, remote invocations, no-
tifications, shared spaces, and message
queuing do all constitute alternative
communication paradigms to the pub-
lish/subscribe scheme. They stand at dif-
ferent abstraction levels and are not easy
to compare. Nevertheless, we overview
below their commonalities with pub-
lish/subscribe systems and emphasize
their inability to fully decouple communi-
cation between participants.
3.1. Message Passing
Message passing can be viewed as the an-
cestor of distributed interactions. Message
passing represents a low-level form of dis-
tributed communication, in which partic-
ipants communicate by simply sending
and receiving messages. Although com-
plex interaction schemes are still built
on top of such primitives, message pass-
Fig. 3. Message passing interaction: the producer
sends messages asynchronously through a commu-
nication channel (previously set up for that purpose).
The consumer receives messages by listening syn-
chronously on that channel.
ing is nowadays rarely used directly for
developing distributed applications, since
physical addressing and data marshaling,
and sometimes even flow control (e.g., re-
transmission), become visible to the ap-
plication layer. Message passing is asyn-
chronous for the producer, while message
consumption is generally synchronous.
The producer and the consumer are cou-
pled both in time and space (cf. Figure 3):
they must both be active at the same time
and the recipient of a message is known to
the sender.
3.2. RPC
One of the most widely used forms of dis-
tributed interaction is the remote invoca-
tion, an extension of the notion of “oper-
ation invocation” to a distributed context.
This type of interaction was first proposed
in the form of a remote procedure call
(RPC) [Birrell and Nelson 1983; Tay and
Ananda 1990] for procedural languages,
and has been straightforwardly applied
to object-oriented contexts in the form of
remote method invocations, for example,
in Java RMI [Sun 2000], CORBA [OMG
2002a], Microsoft DCOM [Horstmann and
Kirtland 1997; Chung et al. 1998].
By making remote interactions appear
the same way as local interactions, the
RPC model and its derivatives make dis-
tributed programming very easy. This ex-
plains their tremendous popularity in dis-
tributed computing. Distribution cannot,
however, be made completely transparent
to the application, because it gives rise
to further types of potential failures (e.g.,
communication failures) that have to be
ACM Computing Surveys, Vol. 35, No. 2, June 2003.