Reactive Extensions are in that ballpark. It’s based on observable collections. It let’s you write event handlers in LINQ.
I read a bunch of stuff on it, and watched some videos. So, not quite an expert. I’m going to keep going with this for at least another day. I’m about 1/2 way through the last video.
I’m particularly interested in this topic because of DevDash. It has a bus so rudimentary that I call it “Stupid Bus”. All it is is a class to which you can initiate and consume events. For example: when a node changes, the thing that changes the node says “I changed node X!”. That message is forwarded to anything that subscribed to the NODE UPDATED event. There is a second event to handle process restarts. After the node syncs, the sync task publishes a process restart request. The host catches that event and initiates the appropriate restart mechanism for that host.
NOTE: now that I wrote that, I see an inconsistency. I should be publishing WHAT HAPPENED, not WHAT YOU NEED to do. Instead of saying “Restart the Process”, it needs to say “Synchronization Complete”. Then the subscriber for “Synchronization Complete” may choose to restart. I will correct that.
Anyway, back to my original point: The stupid bus is a potential candidate to be made cooler by Reactive Extensions. I’m going to have to continue to delve into it.
I’m about 1/2 way through the last video.