Distributed Asynchronous Collections: Abstractions for Publish/Subscribe Interaction

Publish/subscribe is considered one of the most important interaction styles for the explosive market of enterprise application integration. Producers publish information on a software bus and consumers subscribe to the information they want to receive from that bus. The decoupling nature of the interaction between the publishers and the subscribers is not only important for enterprise computing products but also for many emerging e-commerce and telecommunication applications. It is often claimed that object-orientation is inherently incompatible with the publish/subscribe interaction style. This flawed argument is due to the persistent confusion between object-orientation as a modeling discipline and the specific request/reply mechanism promoted by CORBA-like middleware systems. This paper describes object-oriented abstractions for publish/subscribe interaction in the form of Distributed Asynchronous Collections (DACs). DACs are general enough to capture the commonalities of various publish/subscribe interaction styles, and flexible enough to allow the exploitation of the differences between these flavors.

[1]  Dale Skeen,et al.  The Information Bus: an architecture for extensible distributed systems , 1994, SOSP '93.

[2]  Jim Waldo,et al.  Events in an RPC Based Distributed System , 1995, USENIX.

[3]  David S. Rosenblum,et al.  Challenges for Distributed Event Services: Scalability vs. Expressiveness , 1999 .

[4]  Ken Arnold,et al.  JavaSpaces¿ Principles, Patterns, and Practice , 1999 .

[5]  Doug Lea Design for Open Systems in Java , 1997, COORDINATION.

[6]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[7]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[8]  Guruduth Banavar,et al.  Gryphon: An Information Flow Based Approach to Message Brokering , 1998, ArXiv.

[9]  David S. Rosenblum,et al.  Design of a Scalable Event Notification Service: Interface and Architecture , 1998 .

[10]  David S. Rosenblum,et al.  A design framework for Internet-scale event observation and notification , 1997, ESEC '97/FSE-5.

[11]  Alexander A. Stepanov,et al.  C++ Standard Template Library , 2000 .

[12]  Rachid Guerraoui,et al.  Concurrency, distribution and parallelism in object oriented programming , 1997 .

[13]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[14]  Jim Waldo,et al.  The Jini Specification , 1999 .

[15]  David Powell,et al.  Group communication , 1996, CACM.

[16]  Richard Monson-Haefel,et al.  Java message service , 2000 .

[17]  Jim Waldo,et al.  Events in an RPC Based Distribution System , 1995 .

[18]  Jim Waldo,et al.  A Note on Distributed Computing , 1996, Mobile Object Systems.

[19]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[20]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[21]  Kenneth P. Birman,et al.  The process group approach to reliable distributed computing , 1992, CACM.

[22]  Denis Caromel,et al.  Toward a method of object-oriented concurrent programming , 1993, CACM.

[23]  Michael J. Vilot,et al.  Standard template library , 1996 .

[24]  Akinori Yonezawa,et al.  Modelling and programming in an object-oriented concurrent language ABCL/1 , 1987 .

[25]  Klaus-Peter Löhr,et al.  Object-Oriented Concurrent Programming , 1992, TOOLS.

[26]  Guruduth Banavar,et al.  An efficient multicast protocol for content-based publish-subscribe systems , 1999, Proceedings. 19th IEEE International Conference on Distributed Computing Systems (Cat. No.99CB37003).

[27]  Rachid Guerraoui,et al.  What object-oriented distributed programming does not have to be, and what it may be , 1999 .