As event-based middleware is currently being applied for application component integration in a range of application domains, a variety of event services have been proposed to address different application requirements. This paper presents a survey of existing event systems structured as a taxonomy of distributed event-based programming systems. A taxonomy is a classification that allows different examples of some generic type to be systematically arranged in groups or categorised according to established criteria. The taxonomy presented in this paper is structured as a hierarchy of the properties of a distributed eventbased programming system and may be used as a framework to describe a distributed event-based programming system according to its properties. Our taxonomy identifies a set of fundamental properties of event-based programming systems and categorises them according to the event model and event service criteria. The event service is further classified according to its organisation and interaction model, as well as other functional and non-functional features. The event-based communication model is particularly useful in centralised and distributed applications that require one or more application components to react to a change in the state of another application component as it provides a one-to-many or many-to-many communication pattern [6][7][8][9]. Event-based communication is essentially asynchronous [10], [11] which results in a less tightly coupled communication relationship between application components compared to the traditional request/response communication model. Since it features anonymity, it is well suited for applications consisting of a possibly large number of anonymously interacting components, without having to rely on centralised control. Such communities of cooperating components are exploited in distributed systems where independent application components establish communication relationships dynamically over time in an unpredictable fashion.
Index TermsEvent-based middleware is currently being applied for application component integration in many application domains including finance, telecommunications, smart environments, multimedia, avionics, health care, and entertainment [1,2,[12][13][14][15][16][17][18][19]. Moreover, with the widespread deployment and use of wireless technology, where communication relationships amongst heterogeneous application components [10] are established very dynamically during the lifetime of the components, event-based middleware will become even more prevalent as it addresses important application requirements of the wireless and hence mobile computing domain, including avoidance of long-lasting and hence potentially expensive connections, hiding of communication latency due to decoupled interaction phases, omission of centralised control, and heterogeneity. Both mobility and wireless networking represent key enabling technologies underlying the vision of ubiquitous computing, where interconnected computers will be embedded in a wide...