On Tue, Mar 22, 2011 at 11:08 PM, Martin Lucina <[email protected]> wrote:
> You're describing ZMQ_XREP as an "old alias, remove in ...", when in fact > it's not. A request/reply forwarder device uses XREQ/XREP, not > ROUTER/DEALER. It's really a matter of view. As a conceptual fabric, it's neat to have REQ/XREP/XREQ/REQ in a chain. However in practice it almost never works like this. That is, the conceptual framework does not survive even modest real world use. * Typically the REP node has to be multithreaded, so has to become an XREP. * Or, if it's not multithreaded, it has to become asynchronous, e.g. to do heartbeats, so becomes an XREQ. Not, however, an XREP! * Or, perhaps you want to do N-to-N routing without a device, then the REP node *does* become an XREP. Aha! * Or, the REQ socket wants to recover from failures, so it becomes an XREQ. So you rapidly get very weird chains of words that make no sense any more without painful decoding. And then you realize the names are not neat, but a major problem. Four completely different semantics with a Hamming distance of 1 each way is unacceptably confusing. Devices are not a special case, they are the core of any real application. Many endpoints end up working like devices or have devices embedded in them. Anyhow, I'm not interested in debating this. It's been the best part of a year, and after writing a *lot* of very different patterns, and after careful discussion with folk here, it's amazingly satisfying to do my very best to remove those names from the user lexicon. They will be mentioned in the Guide as a small footnote, and removed from every single piece of code I'm responsible for. -Pieter _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
