| Introduction | p. 1 |
| Networked Computing | p. 1 |
| Middleware | p. 2 |
| Event-Based Systems | p. 3 |
| Application Scenarios | p. 4 |
| Information Dissemination | p. 4 |
| Network Monitoring | p. 4 |
| Enterprise Application Integration | p. 5 |
| Mobile Systems | p. 6 |
| Ubiquitous systems | p. 6 |
| Putting Event-Based Systems Into Context | p. 7 |
| From Centralized to Internet-Scale Event Systems | p. 8 |
| Structure of the Book | p. 8 |
| Basics | p. 11 |
| Terminology | p. 11 |
| Events and Notifications | p. 11 |
| Producers and Consumers | p. 12 |
| Subscriptions and Filters | p. 13 |
| Event Notification Service | p. 13 |
| Models of Interaction | p. 14 |
| Request/Reply | p. 15 |
| Anonymous Request/Reply | p. 15 |
| Callback | p. 16 |
| Event-Based | p. 16 |
| Comparison | p. 17 |
| Interaction vs. Implementation | p. 17 |
| Notification Filtering Mechanisms | p. 19 |
| Channels | p. 19 |
| Subject-Based Filtering | p. 19 |
| Type-Based Filtering | p. 19 |
| Content-Based Filtering | p. 20 |
| A Model Distributed Notification Service | p. 20 |
| System Model | p. 20 |
| Architecture | p. 21 |
| Distributed Notification Routing | p. 22 |
| Specification of Event Systems | p. 23 |
| Formal Background | p. 24 |
| A Simple Event System | p. 26 |
| A Simple Event System With Ordering Requirements | p. 30 |
| Simple Event System With Advertisements | p. 31 |
| Further Reading | p. 33 |
| Content-Based Models and Matching | p. 35 |
| Content-Based Data and Filter Models | p. 35 |
| Tuples | p. 35 |
| Structured Records | p. 36 |
| Semistructured Records | p. 52 |
| Objects | p. 56 |
| Matching Algorithms | p. 57 |
| Brute Force | p. 59 |
| Counting Algorithm | p. 59 |
| Decision Trees | p. 60 |
| Binary Decision Diagrams | p. 61 |
| Efficient XML Matching | p. 63 |
| Further Reading | p. 64 |
| Distributed Notification Routing | p. 67 |
| System Model | p. 67 |
| Routing Algorithm Framework | p. 69 |
| Atomic Steps of the Implementation | p. 69 |
| Notification Forwarding and Delivery | p. 72 |
| Avoidance of Duplicate and Spurious Notifications | p. 73 |
| Routing Table Updates | p. 73 |
| Valid and Monotone Valid Routing Algorithms | p. 74 |
| Valid Routing Algorithms | p. 74 |
| Monotone Valid Routing Algorithms | p. 76 |
| Valid Framework Instantiations | p. 77 |
| Content-Based Routing Algorithms | p. 80 |
| Flooding | p. 81 |
| Simple Routing | p. 82 |
| Identity-Based Routing | p. 85 |
| Covering-Based Routing | p. 91 |
| Merging-Based Routing | p. 98 |
| Discussion | p. 104 |
| Extensions of the Basic Routing Framework | p. 107 |
| Routing With Advertisements | p. 107 |
| Hierarchical Routing Algorithms | p. 112 |
| Rendezvous-Based Routing | p. 115 |
| Topology Changes | p. 117 |
| Joining and Leaving Clients | p. 119 |
| Routing in Cyclic Topologies | p. 120 |
| Exploiting IP Multicast | p. 122 |
| Topology Maintenance | p. 123 |
| Further Reading | p. 125 |
| Engineering of Event-Based Systems | p. 129 |
| Engineering Requirements | p. 129 |
| Application Examples | p. 130 |
| Requirements | p. 132 |
| Existing Support | p. 136 |
| Accessing Publish/Subscribe Functionality | p. 137 |
| Generic APIs | p. 137 |
| Domain-Specific APIs | p. 139 |
| Using the API | p. 140 |
| Patterns and Idioms | p. 141 |
| Emitting Notifications | p. 143 |
| Further Reading | p. 147 |
| Scoping | p. 149 |
| Controlling Cooperation | p. 150 |
| Implicit Coordination and Visibility | p. 150 |
| Explicit Control of Visibility | p. 151 |
| The Role of Administrators | p. 151 |
| Event-Based Systems With Scopes | p. 152 |
| Visibility and Scopes | p. 152 |
| Specification | p. 153 |
| Notification Dissemination | p. 156 |
| Duplicate Notifications | p. 158 |
| Dynamic Scopes | p. 159 |
| Attributes and Abstract Scopes | p. 161 |
| A Correct Implementation | p. 161 |
| Event-Based Components | p. 164 |
| Component Interfaces | p. 164 |
| Scope Interfaces | p. 164 |
| Event-Based Components | p. 167 |
| Example | p. 167 |
| Notification Mappings | p. 169 |
| Specification | p. 169 |
| A Correct Implementation | p. 173 |
| Example | p. 176 |
| Transmission Policies | p. 176 |
| Publishing Policy | p. 177 |
| Delivery Policy | p. 179 |
| Traverse Policy | p. 180 |
| Influencing Notification Dissemination | p. 181 |
| Engineering With Scopes | p. 182 |
| Development Process | p. 182 |
| Scope Graph Handling | p. 183 |
| Scope Graph Language | p. 187 |
| Implementation Strategies for Scoping | p. 196 |
| Scope Architectures | p. 197 |
| Comparing Architectures | p. 209 |
| Implement Scopes as Event Brokers | p. 210 |
| Integrate Scoping and Routing | p. 213 |
| Combining Different Implementations | p. 225 |
| Architectures and Scope Graphs | p. 226 |
| Bridging Architectures | p. 227 |
| Integration With Other Notification Services | p. 228 |
| Further Reading | p. 228 |
| Composite Events | p. 231 |
| Application Scenarios | p. 231 |
| Requirements | p. 234 |
| Composite Events | p. 234 |
| Composite Event Detection | p. 236 |
| Composite Event Detectors | p. 236 |
| Composite Event Language | p. 238 |
| Detection Architectures | p. 242 |
| Centralized Detection | p. 243 |
| Distributed Detection | p. 244 |
| Further Reading | p. 250 |
| Advanced Topics | p. 253 |
| Security | p. 253 |
| Application Scenarios | p. 254 |
| Requirements | p. 255 |
| Access Control Techniques | p. 256 |
| Secure Publish/Subscribe Model | p. 258 |
| Further Reading | p. 264 |
| Fault Tolerance | p. 264 |
| Fault Masking | p. 265 |
| Self-Stabilizing Publish/Subscribe Systems | p. 265 |
| Self-Stabilizing Content-Based Routing | p. 266 |
| Generic Self-Stabilization Through Periodic Rebuild | p. 273 |
| Further Reading | p. 276 |
| Congestion Control | p. 276 |
| The Congestion Problem | p. 277 |
| Requirements | p. 277 |
| Congestion Control Algorithms | p. 279 |
| Further Reading | p. 285 |
| Mobility | p. 287 |
| Mobility Issues in Publish/Subscribe Middleware | p. 289 |
| Physical Mobility | p. 290 |
| Logical Mobility | p. 295 |
| Further Reading | p. 302 |
| Existing Notification Services | p. 305 |
| Standards | p. 305 |
| Corba Event and Notification Service | p. 305 |
| Jini | p. 310 |
| Java Message Service (JMS) | p. 311 |
| Data Distribution for Real-Time Systems (DDS) | p. 313 |
| WS Eventing and WS Notification | p. 317 |
| The High-Level Architecture (HLA) | p. 317 |
| Commercial Systems | p. 318 |
| IBM WebSphere MQ | p. 318 |
| TIBCO Rendezvous | p. 320 |
| Oracle Streams Advanced Queuing | p. 322 |
| Research Prototypes | p. 324 |
| Gryphon | p. 324 |
| Siena | p. 326 |
| JEDI | p. 329 |
| Rebeca | p. 331 |
| Hermes | p. 334 |
| Cambridge Event Architecture (CEA) | p. 337 |
| Elvin | p. 340 |
| READY | p. 340 |
| Narada Brokering | p. 340 |
| Outlook | p. 343 |
| References | p. 349 |
| Index | p. 379 |
| Table of Contents provided by Ingram. All Rights Reserved. |