Composable Message Semantics in Oberon
Most object-oriented languages offer a limited number of invocation semantics. At best, they define a default mode of synchronous invocation, plus some keywords to express additional semantic attributes, e.g. synchronisation. The very few approaches that offer rich libraries of invocation abstractations usually introduce significant overhead and do not support the composition of those abstractions.
This paper describes a pragmatic approach for abstracting invocation semantics with emphasise on remote invocations. Invocation semantics, such as synchronous, asynchronous, remote, transactional or replicated, are all considered first class citizens. Using an elegant combination of the Strategy and Decorator design patterns, we suggest an effective way to compose various invocation semantics. We completely separate the class definition from the invocation semantics of its methods and we go a step further towards full polymorphism: the invocation of the same method can have different semantics on two objects of the same class. The very same invocation on a given object may even vary according to the client performing the invocation. To reduce the overhead induced by the flexibility underlying our approach, we rely on just-in-time stub generation techniques.
Paper at the Joint Modular Languages Conference, JMLC 2000, Zurich, Switzerland, September 2000
Published in Lecture Notes in Computer Science 1897 (pp. 11-25), Springer-Verlag, 2000.
You can download the full paper in PDF format.