Rather than shoehorning HTTP into inappropriate roles, wise
developers are using Beep.
At the heart of the Internet revolution lies the ability of
heterogeneous computer systems to communicate seamlessly.
Communication was certainly possible before the arrival of the Net,
but typically within isolated families of hardware. The Internet's
great achievement was to allow any hardware to communicate with any
other through the platform-independent TCP/IP (Transmission Control
Protocol/Internet Protocol) standard. In other words, the Internet
is all about protocols - the rules for communicating.
Naturally enough, the extraordinary success of the Internet's core
protocols - TCP/IP for basic routeing, HTTP (Hypertext Transport
Protocol) for Web transport and SMTP (Simple Mail Transfer
Protocol) for e-mail - has proved rather too seductive to
programmers creating new services that run across the Internet. As
a result, we have seen the basic protocols - particularly HTTP -
forced into all kinds of strange usages for which they are frankly
rather inappropriate.
But there are many situations where HTTP's virtues of familiarity
and simplicity are outweighed by the contortions required to
shoehorn it into an entirely different kind of role. In such cases
it makes sense to come up with a way of communicating that more
closely fits the needs of the particular situation.
Writing such a protocol from scratch is not for the faint-hearted.
Fortunately, it is also generally unnecessary thanks to Beep
(Blocks Extensible Exchange Protocol). Originally known as BXXP,
Beep is a set of building blocks for creating customised protocols
without the hard work this generally implies.
Beep's
home
page is the best place to start for all things Beepish, and
also has some
information
about Beepcore.org. There is a useful
Q&A
with the inventor of Beep, the inimitable Marshall Rose. There are
several
introductions
to Beep as well as a
presentation
by Rose on the subject.
Also worth noting is a
book by
Rose, published by O'Reilly. There is a
sample
chapter online which gives a little of the unique flavour
of both the book and its author. A page of
links
to other documents and specifications includes three RFCs:
RFC 3117,
which provides some useful background information on Beep and on
the general area of designing protocols;
RFC 3080,
which is the main Beep standard; and
RFC 3081,
which explains how Beep can run over TCP/IP.
Running Beep over TCP/IP is not the only possibility. For example,
Beep will also work over other protocols, such as
SCTP
(Stream Control Transmission Protocol), a reliable transport
protocol specifically designed to allow the transport of PSTN
(public switched telephone network) signalling messages across IP
networks. Also worth noting are the
mailing
list and
archives
for the Beep community.
There is a list of Beep
projects
and
products,
as well as an impressive number of Beep
developers.
One interesting
application
- and an area where it may start entering the mainstream - is for
Web services, using Beep as the protocol for sending messages
written in
Soap
(Simple Object Access Protocol).