As we evolve from a Web of documents (Web 1.0) to a Web of applications (Web 2.0) and eventually Toward 2^W --- Beyond Web 2.0, key underpinnings of Web Architecture such as resource identifiers require careful re-examination. As a member of the W3C's Technical Architecture Group, I have been trying to define Web Architecture in the context of Web applications; a necessary first step toward that goal is to analyze how complex Web applications are implemented on the Web of today.
This article will carefully avoid abstract issues such as Resource vs Representation, URIs vs URLs, etc. — and instead focus on more practical considerations such as:
The British Broadcasting Corporation (BBC) provides streaming access to a large amount of radio and television content via a Web application called BBC iPlayer. In addition, BBC Backstage provides a rich data-oriented API to the underlying dataset in the form of linked data. Additionally, program schedules can be downloaded in a number of presentation independent formats such as XML, JSON and YAML. The remaining sections in this article detail what can (and cannot be done) with the information that is readily available from BBCiPlayer and BBC Backstage. In the process, we observe some design patterns (and anti-patterns) found on today's Web, and their efect on building richer Web applications from Web parts.
Using the BBC iPlayer Web application requires:
The Web application as implemented provides a rich, interactive visual interface that is sub-optimal for use from other programs.
Given the triple (radio-station, outlet, date) e.g.:
(radio4, fm, 2010/04/14)one can retrieve an XML representation of the program schedule using the URL:
http://www.bbc.co.uk/radio4/programmes/schedules/fm/2010/04/14.xmlas documented on the BBC Backstage site. Alternative serializations such as JSON or YAML can be retrieved by appropriately replacing the .xml extension.
This retrieved schedule contains detailed metadata for each program that is broadcast, including a programme id pid that is used throughout the data store.
The BBCBackstage API assigns a persistent URI to each program of the form:
http://www.bbc.co.uk/iplayer/episode/<pid>When retrieved, this persistent URI redirects appropriately to the BBC iPlayer page for that program. Note that the media streams for most programs are only available for a week.
As an example of the above, you can retrieve Midnight News from BBC Radio4 for April 14, 2010 by doing:
On the surface, this URL appears to satisfy many of the expectations that users might have:
The final bullet above exposes some of the problems with the current implementation. Note the set of pre-requisites for the BBC iPlayer Web application enumerated earlier; all of these apply to the URI generated above.
It is instructive to turn on HTTP Request/Response tracking in the browser when opening URL http://www.bbc.co.uk/iplayer/episode/b00rw6hf. Here is a brief summary of some of the steps that the browser performs:
Thus, the recipiant of the Midnight News URL would need to implement all of the above transforms (or have access to software that does those computations) in order to effectively consume the media stream that was addressed by the URL.
http://www.iplayerconverter.co.uk/pid/%s/r/stream.aspxin the above with a pid yeilds a persistent URL that can be handed off directly to a media player, where:
So to conclude, let's ask the original question:
Date: 2010-04-14 Wed
HTML generated by org-mode 6.08c in emacs 23