The goal of this project is to build an application that will take data from a data source and upload to a central web server via a set of web services. Users would be able to access and view the raw data using a standard web browser and sort the data by the different columns. In addition to looking at the raw data, simple graphing of some data types way be possible using the Google graphing web services.
For an example, I plan to implement one of the following data gatherers:
- Computer system performance data
- World of Warcraft in game auction data
- Commodity prices from different exchanges
I am currently considering three designs for the gatherer component that would allow easy support for different data sources and one that would not:
- A core application that would take data and upload to a web server. This core would only be responsible for communicating with the web service and uploading the data. It would use a “plug-in” system that provides the means to gather and format the data in a form understood by the core. This allows the application to support many different data types without re-compiling and distributing the application. Only the plug-in would need to be distributed to the users of the core to support new data types.
- A standard library to communicate with the web service that can be used by any data gathering application to upload data to the central server. In this scenario, the communicating piece is included as a reference in any gather application. This is very similar to approach the first, but would be easier to implement.
- An application that that gathers the data and uploads to the central server. The pro to this approach is it is much simpler to implement. He Con is it would require more re-work to support additional data sources. It is also a more painful to upgrade.
The gather component will be written as a C# application that runs on Windows.
The web service will be the tier by which all data access is accomplished. This will include add and retrieve data with future additions for updating and deleting possible.
All gathered data will be in a standard format, probably XML.
For the web components, I plan to use PHP and MySQL.