Distributed programming with typed events

The remote-procedure-call abstraction, including its derivates (underlying, for example, Java RMI, CORBA, and .NET), currently represents one of the most popular paradigms for devising distributed applications. Objects (when acting as servers) are invoked remotely (by clients) through proxies (also called stubs). Because proxies offer the same interfaces as their respective associated remote objects, they hide distribution details, leading to a convenient distributed-programming style that enforces type safety and encapsulation. However, RPC-style interaction does not apply equally well in all contexts. In its classic form, it tends to strongly synchronize-and hence couple-the invoking and invoked objects. Several proposed asynchronous variants of RPC illustrate the severity of this drawback. Type-based publish-subscribe is an appealing candidate programming abstraction for inherently decoupled and completely decentralized applications that run over large-scale and mobile networks. Like RPC, TPS enforces type safety and encapsulation; unlike RPC, it provides decoupling and scalability. To illustrate, we discuss two TPS implementations in Java.

[1]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[2]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

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

[4]  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.

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

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

[7]  Douglas C. Schmidt,et al.  The design and performance of a real-time CORBA event service , 1997, OOPSLA '97.

[8]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

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

[10]  Marcos K. Aguilera,et al.  Matching events in a content-based subscription system , 1999, PODC '99.

[11]  Robert J. Oberg Understanding and Programming COM+: A Practical Guide to Windows 2000 DNA , 1999 .

[12]  David S. Rosenblum,et al.  Achieving scalability and expressiveness in an Internet-scale event notification service , 2000, PODC '00.

[13]  Mads Haahr,et al.  Filtering and scalability in the ECO distributed event model , 2000, 2000 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[14]  Jean Bacon,et al.  Generic Support for Distributed Applications , 2000, Computer.

[15]  Patrick Th. Eugster,et al.  Distributed Asynchronous Collections: Abstractions for Publish/Subscribe Interaction , 2000, ECOOP.

[16]  Patrick Th. Eugster,et al.  On objects and events , 2001, OOPSLA '01.

[17]  Patrick Th. Eugster,et al.  Probabilistic multicast , 2002, Proceedings International Conference on Dependable Systems and Networks.

[18]  Patrick Th. Eugster,et al.  Pragmatic type interoperability , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..