Lists Home |
Date Index |
Robert Koberg wrote re: Publish/Subscribe:
> Why is this better/best? Is it? Or is it just
> new and experimental and could potentially be
Please note that I didn't say that Publish/Subscribe was
"better" or "best" relative to anything else. The determination of
what is better or best can only be made in terms of some specific
application. Also, please note that publish/subscribe is in no way
"new" or "experimental." This publish/subscribe pattern is implemented
in thousands of systems and has become very, very well known over the
last few decades. What is "new" is that we're seeing publish/subscribe
ideas and concepts begin to become more common on the "open" Internet
rather than just being used in closed applications.
Publish/Subscribe enables new forms of applications, for
instance, distributed event-based applications that are somewhat
difficult to build using the simpler protocol patterns.
You can think of these three patterns as enabling different
styles of types of "conversation" or statements:
1. Messaging: Declarative statements. i.e. "The sensor has
*this* value." or "This is what I want to say to you." "The building
is on fire. Get out now!"
2. Request Response: Simple questions: "What's the latest
news?" "What is my account balance?" "Is the building on fire?"
3. Publish/Subscribe: A request for persistent, sustained
service: "Tell me whenever XXXX happens." "Tell me whenever IBM stock
price is over $XXX." "Tell me whenever Ford issues a recall on my
automobile." "Tell me whenever there is a fire in this building!".
(Note: "Tell me" translates into: "Send me a message")
For many applications, a simple message or a simple query and
response is all you need. Thus, Messaging or Request/Response is
"better" or "best" for those applications. For a different set of
applications, what you want to do is make a standing request for
service -- i.e. you want to say something like "Tell me whenever..."
For those applications, you will often find that Publish/Subscribe is
the right pattern to use.