Event Systems : How to Have Your Cake and Eat It Too
This paper addresses the fundamental tradeoffs in event systems between scalability (of event filtering, routing, and delivery mechanisms), expressiveness (when describing interests in events), and event safety (ensuring encapsulation and type-safe interaction with polymorphic events). We point out some ramifications underlying these tradeoffs and we propose a pragmatic approach to handle them. We achieve scalability using a multi-stage filtering strategy that combines approximate and perfect matching techniques for the purpose of event routing and filtering. We achieve expressiveness and event safety by viewing events as objects; instances of application-defined abstract types.