BEEP - Blocks Extensible Exchange Protocol
The BEEP protocol is a lighter-weight protocol than HTTP, and can be used for nearly any kind of message pattern - it is not limited to the request/reply exchange. It has less byte overhead than HTTP, yet has a richer semantics (in some ways).
Overview of BEEP (Blocks Extensible Exchange Protocol)
- IETF framework
- layered directly on top of TCP
- built-in features include:
- initial handshake protocol
- authentication
- security
- error handling
BEEP is defined in
RFC:3080 (
IETF RFC 3080). The introduction to that document states:
This memo describes a generic application protocol kernel for
connection-oriented, asynchronous interactions called BEEP.
At BEEP's core is a framing mechanism that permits simultaneous and
independent exchanges of messages between peers. Messages are
arbitrary MIME [1] content, but are usually textual (structured using
XML [2]).
All exchanges occur in the context of a channel -- a binding to a
well-defined aspect of the application, such as transport security,
user authentication, or data exchange.
Each channel has an associated "profile" that defines the syntax and
semantics of the messages exchanged. Implicit in the operation of
BEEP is the notion of channel management.
A snapshot of the specification is in
BeepProtocolSpec.
BEEP and SOAP
- RFC:3288 (RFC 3288) - a Simple Object Access Protocol (SOAP) binding to the Blocks Extensible Exchange Protocol core (BEEP)
SOAP Message Patterns
4. SOAP Message Patterns
4.1 One-way Message
A one-way message involves sending a message without any response
being returned.
The BEEP profile for SOAP achieves this using a one-to-many exchange,
in which the client sends a "MSG" message containing an envelope, and
the server immediately sends back a "NUL" message, before processing
the contents of the envelope.
4.2 Request-Response Exchange
A request/response exchange involves sending a request, which results
in a response being returned.
The BEEP profile for SOAP achieves this using a one-to-one exchange,
in which the client sends a "MSG" message containing an envelope, and
the server sends back a "RPY" message containing an envelope.
Finally, the BEEP profile for SOAP does not use the "ERR" message for
SOAP faults when performing one-to-one exchanges -- whatever response
is generated by the server is always returned in the "RPY" message.
4.3 Request/N-Responses Exchange
A request/N-responses exchange involves sending a request, which
results in zero or more responses being returned.
The BEEP profile for SOAP achieves this using a one-to-many exchange,
in which the client sends a "MSG" message containing an envelope, and
the server sends back zero or more "ANS" messages, each containing an
envelope, followed by a "NUL" message.
From the
website:
RoadRunner is written in portable C code, utilizing the GNU utility library (GLib) to ensure portable multithreading, memory handling and network code. The codebase runs unmodified on most platforms supported by glib.
RoadRunner is primarily developed and regularly tested on GNU/Linux, OpenBSD and NetBSD, but has been compiled and tested on:
- GNU/Linux
- OpenBSD
- NetBSD
- Solaris
- FreeBSD
- MS Windows
- AIX
From the
FAQ:
Why is the library called RoadRunner?
Beep Beep
--
DaleBrayden - 26 Jun 2003
NOTE - Please note that the filename for the road runner source package has an extraneous .tar at the end. After download, you must strip the .tar from the end of the filename.