I'm going to work on a client/server application in C++ running on Windows, the server being itself made of a "manager" executable, spawned once, and a "worker" executable spawned from 1 to 29 times depending on the configuration.
The coms are between the clients and the "manager" process, between the "manager" process and the "worker" processes (to configure them, send them data to process) and between some of the "worker" processes. On a side note: when I say worker process, I don't mean processes doing exactly the same job in parallel for super performances: they are all configured differently, do a different job, and performance really isn't an issue. The separation in several processes here is more about stability.
Now I don't know what network library to choose to do all that.
I know boost::asio, I am familiar with boost and its particular style, but I'm afraid other members of my team are not. I was also advised to use zeroMq. And I've seen a few others with their pros and cons. But I'm a bit lost!
With zeroMq I think we loose the proactor of asio? So in a sense it feels it is lower level? On the other hand it provides features like publish/subscribe that I don't think are useful for us.
None of those libraries are going to help us with the serialization part (data exchanged is heterogenous). I was thinking google protocol buffer could help us on this point, unless there is a do it all library around?
Other choices we've vaguely considered are Corba, amqp. The former feels clumsy and we've been advised against it. The later feels overly complex. (?)
Any word of advise?