Bus-oriented architecture
Nat Pryce wrote interesting thoughts about bus-oriented architecture: " I like event-based systems, especially with content based multicast. I've usually used the style in distributed systems not in a single process. The big benefit is that you can easily change the components in the system without fiddling with the "wiring" between them. However, there is a trade-off. The event bus hides the dependencies between your components. It looks like every component only has a dependency on the bus, but really they have connections to whichever other components produce events they must react to or react to events that they produce. If you are not careful, the protocols between components can become an unintelligible, fragile mess. If you design the system right, you can back out the real dependencies from your components subscription and advertisement definitions and thereby visualise the real architecture of the system with graphviz or whatever. But usually