DefiningImageAccess/Standard/WebEventDelivery
From ImageWeb
Contents |
Web Event Delivery
This page surveys frameworks for delivering asynchronous events to web-based applications, and more broadly on the Internet.
Notifications look set become an important element of many kinds of web and internet application, as the list of use-cases may illustrate.
Use cases
Many of these use-case are very similar, but they are listed separately where they have given rise to separate proposals for event delivery, in no particular order:
- Notification of new or updated data availability from a web server
- Syndication protocols (RSS/ATOM) - so far, these seem to rely on polling
- Notification of new emails received
- See also: Sieve notifications (Sieve is an email filtering language)
- Web portals - synchronizing portlet displays (cf. WSRP v2)
- Notification of new or updated publications in a document or data repository (OAI, etc.). Currently, polling is a workable solution, and this is effectively provided by OAI repositories, but asynchronous notification will allow more timely indexing, and a clean way to hook in portal-based access where one portlet may be performing an update while another is maintaining a view of the repository content.
- WebDAV notification (http://www.xmpp.org/internet-drafts/attic/draft-hildebrand-webdav-notify-00.html)
- Telephony and call control (e.g. SIP - http://en.wikipedia.org/wiki/Session_Initiation_Protocol)
- Synchronizing web pages with voice message stores (DMSP, http://en.wikipedia.org/wiki/Distributed_Multimodal_Synchronized_Protocol)
- Universal plug-and-play notifications (http://en.wikipedia.org/wiki/Universal_Plug_and_Play, GENA: http://en.wikipedia.org/wiki/GENA)
- Presence notification (CPP, XMPP, SIMPLE)
- Ubiquitous web applications (UWA - http://www.w3.org/2007/uwa/)
- Network configuration (NETCONF - http://www.ops.ietf.org/netconf/)
- Financial information delivery (AMQP)
- Advanced web services
- Real-time device monitoring and control
Related specifications
- http://www.xmpp.org/extensions/xep-0060.html - XMPP publish/subscribe
- http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html - Bayuex event delivery framework
- http://www.cometd.com/ - server implementation of Bayeux using HTTP responses for event delivery
- http://brbx.com/orbited/index.html - orbited is a (comet-like?) event daemon based on LibEvent and PyEvent
- http://monkey.org/~provos/libevent/ - LibEvent
- http://code.google.com/p/pyevent/ - PyEvent
- http://tools.ietf.org/html/rfc3261 - Session Initiation Protocol (SIP)
- http://tools.ietf.org/html/draft-ietf-sieve-notify-07 - Sieve notifications
- http://tools.ietf.org/html/draft-dusseault-email-notif-model-00 - Email System Event Notification Model
- http://tools.ietf.org/html/draft-ietf-netconf-notification-08 - Notification framework for NETCONF
- http://www.amqp.org/ - Advanced Message Queuing Protocol (AMQP) - described in ACM Queue magazine, Vol 5, No 4, May/Jun 2007.
- GENA - Generic Event Notification Architecture
- http://www.ietf.org/internet-drafts/draft-engelsma-dmsp-04.txt - DMSP: Distributed Multimodal Synchronization Protocol
Other links
- https://www1.ietf.org/mailman/listinfo/notifications - notifications@ietf.org mailing list information
- http://www.w3.org/2007/uwa/ - W3C Ubiquitous Web Applications activity (UWA),
- http://www.w3.org/2007/02/dmdwa-ws/ - Workshop on Declarative Models of Distributed Web Applications: Describing user interaction in multi-device applications from an end-to-end perspective, 5 - 6 June 2007, Dublin, Ireland.
- Meetings/20060612-DaveRaggett-UWA-Bristol - Talk about UWA by Dave Raggett at HP Labs, Bristol.
- http://groups.inf.ed.ac.uk/links/ - Links: Web Programming Without Tiers
- DMSP-related pages (Distributed Multimodal Synchronization Protocol):
Personal notes elsewhere:
- http://wiki.oss-watch.ac.uk/InterPortletCommunicationConsideredHarmful
- http://wiki.oss-watch.ac.uk/ProblemsWithPortals (very incomplete)
Recurring technical themes
These are some technical themes that seem to be recurring in technical designs for event distribution.
- Publish/subscribe framework
- Hierarchical endpoint identification schemes
Technical questions
Can there be a universally applicable model for events? What is the minimum that can work for all applications?
My view of an minimal event model has:
- an event type (which may be an arbitrary URI)
- an event source (which may be an arbitary URI)
- an arbitrary event payload whose structure is determined by the event type - i.e. an application that knows about a given event type knows how to validate and decode the event payload. Some event types may have no payload.
- the model should be one that allows lightweight direct implementation, and that can also be conveyed using existing event delivery protocols such as XMPP or SIP or SMTP.
For event propagation, I see the following requirements:
- event notifications can be propagated between nodes (routers), which may be in different administrative domains
- event subscriptions can be propagated to the appropriate source(s)
- propagation mechanisms have loop-prevention mechanisms: cross subscription to a given event type may be a common requirement.
Commentary
In 2004, there was a profile specification submitted to the IETF for using this to distribute WebDAV notifications, but the proposal seems to have sunk for lack of interest. It was raised for discussion as late as 2006. An old copy is here: http://www.xmpp.org/internet-drafts/attic/draft-hildebrand-webdav-notify-00.html.
The uPnP eventing specification is GENA:
The base specification for GENA was submitted as an IETF Internet Draft in 1999, but was not taken up in the IETF:
Microsoft continued with it as part of their uPnP effort:
Currently, the specification link on the Microsoft site is dead - I don't know if this is because Microsoft's effort in the area has fizzled out. GENA is still mentioned all over Microsoft's uPnP documents, so it's difficult to tell.
GENA uses new HTTP commands to implement a publish/subscribe framework for event distribution over HTTP. Because these are new commands, and there does not appear to be a current open specification, the fact that it involves HTTP enhancements means that deployment may be very limited, compared with, say, a proposal that works over currently deployed protocols - e.g. see cometd, which implements the Bayeux framework over standard HTTP.

