My question is coming from an somewhat uneducated perspective.What are the relative merits of a message passing system vs an event based system.Why would one choose one over the other? What are their strengths and weaknesses?I would like to know not just in theory, but also in practice.EDIT:Specific problem:I want to build system of plug-able components which behave as small scale services (each performing some small task and or providing some piece of information).The services can:be layered so that the output of one service can act as one of the inputs to anotherhave containment hierarchies so that one service can be contained by another without a specific input-output relationship as mentioned in the previous sentenceThe goal of the system is to translate a single flow of low level events in another system into higher level information and functionality, and in addition provide a channel back to the other system providing a single series of events.I can provide more detail if this isn't enough.After looking around some more. This and this probably describes my situation better.This looks like it may be a good fit for my situation: http://akka.io/
Merits of a Message Passing system vs. an Event Based system
event programming;message passing
In my experience the only specific difference is that in most message passing systems, the sender of the message is aware of (and often declares) who the recipient of the message is.So instead of raising an event and anyone who is sucscribed to the event getting it, the sender defines some id of the intended recipient(s) or logical group of recipients and then either sends the message directly to them, or goes through a message broker (though the OS can be seen as a message broker in an event based system).Obviously there's the case of threading that Telastyn mentions with C#'s implementation of events, but you can still create your own pub/sub model that executes on different threads.