Before trying to expand on theoretical specifics, I would like to introduce an example for illustration purposes. Whether or not you are a fan of any sport, you cannot help but notice the influence of sports on all aspects of life and society. Although participation is my personal preference, I often find myself hunting for the latest scores from a variety of sports that I will never play professionally.
In a previous article, titled "Real-Time Sports Scores as a Service," I outlined the general characteristics of a system to provide aggregated sporting news. In this article, I spell out the actual steps and rudimentary components that could be used for this purpose. Essentially, we will go through a few iterations in an attempt to construct a functional service that accepts sports data of a specific format and rebroadcasts that data to users who "subscribe" to specific updates.
At the heart of the first attempt will be an ASP capable of accepting four specific transactions: adding a game, updating game information, retrieving a list of games available for subscription, and retrieving updates of subscribed to games. To maintain the simplicity of the example, the ASP will communicate with a standard Jet database containing a games table and a teams table.
To add a game, our data provider[md]whether a fan in the stands with a cell phone, or a member of the press making an official record of the game[md]must submit an initial get with the following query string.
[url]?mode=add&location=[city]&team=[mascot]&location=[city two]&team=[mascot two]&sport=[sport]
If a team does not exist in the database, it is added. If the game has not been added, it is created. Either way, the game_id is returned to the data provider for future updates. This is also necessary if the provider experiences technical difficulties; getting the game_id on restart is simply a matter of submitting that same query string.
To provide scoring updates, a similar query string is submitted:
[url]?mode=update&gameid=[game id]&score1=[new score of team 1]&description=[description]
A score is not necessary to provide a descriptive update of the state of the game. For instance, the end of the game only sets the active bit to false. As you can see, if we hope to maintain any semblance of accurate transactions, we will need to distribute a tool for performing updates.