In der jetzigen CTP-Phase kann man über Microsoft Connect einen Invitation Code beantragen, womit man dann über seinen Live-Zugang diesen Dienst registrieren kann. Registrierung erfolgt über https://www.sqlazureservices.com/
Zur Zeit werden u.a. die Datendienste von
- Data.Gov (Kriminalstatistik von den USA)
- InfoUSA Business Analytics U.S., U.K. and Canada (Geschäftsdaten aus den USA und Kanada)
- NASA Mars Exploration Rover Mission Images (Bilder von der Mars Expedition – ziemlich cool)
- UNESCO UIS Data (Statistische Daten zu Ausbildung, Wirtschaft, Technik)
Ein beispielhafter Zugriff auf diese Daten ist dann recht einfach und sieht so aus:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Dallas.Services;
namespace ConsumingDallasData
{
class Program
{
static void Main(string[] args)
{
// Specify the account key and unique user ID to use for the query
string accountKey = "";
string uniqueUserId = "";
// Create a service proxy with which to execute the query. Note that the
// service proxy requires the
// account key and unique user ID
FAO3510Service service = new FAO3510Service(accountKey, new Guid(uniqueUserId));
List results = service.Invoke(null, null);
// Set up a header row for the results
Console.WriteLine("{0,13}{1,24}{2,18}{3,7}{4,10}", "Series Code", "Country or Area Code", "Country or Area", "Year", "Value");
// Iterate through the result set
foreach (FAO3510Item item in results)
{
Console.WriteLine("{0,13}{1,24}{2,18}{3,7}{4,10}", item.SeriesCode, item.CountryOrAreaCode, item.CountryOrArea, item.Year, item.Value);
}
Console.ReadLine();
}
}
}
Die Service-Proxy-Klasse bekommt man über https://www.sqlazureservices.com/Subscriptions.aspx generiert. Die Abfrage der Daten kann auch über eine REST-konforme Query (z.B. Bild der Mars Mission) erfolgen:
// REST Call
// Establish a Web Request to the Dallas Dataset Url
string url = "https://api.sqlazureservices.com/NasaService.svc/MER/Images/1F128724129RSD0211P1003L0MZ?$format=raw";
WebRequest request = WebRequest.Create(url);
// Specify the request headers containing our account key and unique user ID
request.Headers.Add("$accountKey", accountKey);
request.Headers.Add("$uniqueUserID", uniqueUserId);
// Get the response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Write the status of the response to the Console
Console.WriteLine(response.StatusDescription);
// Wait for input from the user
Console.ReadLine();
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
// save as file
const int BUFFER_SIZE = 1024 * 1024;
using (FileStream f = new FileStream(@"C:\one.png", FileMode.OpenOrCreate))
{
var bytes = new byte[BUFFER_SIZE];
while (true)
{
var n = dataStream.Read(bytes, 0, BUFFER_SIZE);
if (n == 0)
{
break;
}
f.Write(bytes, 0, n);
}
f.Flush();
f.Close();
}
// Cleanup the streams and the response.
response.Close();
