AltME: R3 Protocols


Now I'm tickled
Kaj, maybe I should ask, instead, what poking under the hood you've had to do. I'm not stressing 0MQ in my work (very low message rates, largely for IPC), but some other work I did with it a few years ago hit it much harder and was still very easy to do.
Most simple examples, and what most people start with, is request/reply, but this quickly becomes useless in real-world situations
To be more flexible and scale it, you have to switch to dealer/router, which means managing and interpreting the multiple parts of request/reply messages, including the under-the-hood identity part
Now you're juggling sub-messages and babysitting their consistency, and soon you have to manage the internal sub-messages by creating, copying and destroying them, and comparing their content
First you think, ZeroMQ is about queueing, so I don't have to make my own message queues anymore, but again that only works in the simplest examples
When you need more flexibility and performance, you're back to maintaining your own message queues, and the 0MQ queues become a hindrance, because you can't access them once a message is in there
I'm probably spoiled because I never worked with earlier, complex messaging systems, but this is my experience
It would also be different if you're working with low-level languages, but in REBOL/Red a message queue is easy to do, so why give up control over it?

Kaj - having your experience with ZeroMQ - what do you think about the Rebol/Services architecture? Is it any better in organising more higher (app) level stuff, than starting with low level ZeroMQ stuff?
I see BEEP at a much higher level than 0MQ. It's for application developers, you care about the application protocol not the technology below. Here is an even higher-level lib build on top of BEEP:
Petr, I just happened to review REBOL/Services again with the hindsight of 0MQ experience
It's amazing how Carl solved all the same problems at around the same time 0MQ was designed
Also, a lot of stuff that was traditionally missing from 0MQ is in R/S, such as encryption and authentication
On the other hand, both fail to provide the first needs most people have: an HTTP transport that is able to traverse firewalls is missing from both
Further, R/S manages to cripple its added value of encryption by only providing cloaking in the free version, and requiring paid versions for real encryption that you can't even order anymore
R/S is much nicer and quicker to program because it's all REBOL, but 0MQ's point is the reverse: that it's language neutral, which is also very powerful
They target two entirely different problems. Hard to compare them. And R/S does have the CGI option.

I see a big overlap between them
LNS (R/S) is high-level dialected req-rep (not always RPC) over, theoretcially, any transport and is point-to-point client-server. 0MQ is mid-level sockets with semantics. Mid-level meaning framed messages, multiple connection points, brokering/proxying, buffering, etc. LNS also has the concept of an admin interface and file sharing, but those are incomplete AFAIK.
I like both, but they are very different to me. I LOVE the idea of a completely native REBOL solution, but 0MQ opens the door to interacting with other systems.

Last message posted 185 weeks ago.