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)); Listresults = 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();
Keine Kommentare:
Kommentar veröffentlichen