I'm working on a small distributed system, which is completely message driven. Right now, I usually open up a socket each time I have to send something and close it right afterwards. State is only maintained on the server side (for instance, if no message arrives for 5 minutes from a client, consider it dead).
However, I have to do some low-level scheduling of messages on the client as well (if a status message cannot reach the server, retry, if still fails, assume server is down, switch to different server, etc.), as well as having to manually listen on both client and server (plus exchanging the information how to reach the client from the server). I'm also planning to add some kind of broadcast system, but this is starting to pile up ... so the question is, is there some existing bus/messaging system for .NET that works with Mono and Microsoft, which handles this messaging stuff? I looked at NServiceBus, but it depends on MSMQ (still true?), which is more-or-less supported on Mono; all in all, NServiceBus already looks a bit too heavyweight. Ideally, the system would support 1:1 and 1:N connections, robustly handle errors and report them, and have some advanced features as well (queueing messages, security).