Dies ist das letzte Posting zur Windows Azure Serie und REST. Im ersten Posting wurde erklärt, was REST ist und wie es funktioniert. Im zweiten Posting wurde erklärt, wie man Anfragen verschlüsselt und signiert. Was jetzt noch fehlt ist, wie man auf der REST-API arbeitet. Hierfür wird ein einfaches Beispiel erstellt, wo eine neue MessageQueue in Windows Azure erstellt wird.
Um eine Webafrage zu erstellen, ist ein HttpWebRequest notwendig. Dieser startet die Abfrage und wird mit “WebRequest.Create” erstellt. Wichtig ist hierbei auch noch der Cast. Als Adresse wird http://MEIN_ACCOUNT.queue.core.windows.net/MEINE_NEUE_MQ verwendet. Hierbei muss MEIN_ACCOUNT mit dem tatsächlichen Accountnamen ersetzt werden und MEINE_NEUE_MQ mit dem Namen unter welche diese identifiziert wird. Da es sich hierbei um die Erstellung eines neuen Elementes handelt, ist dies ein PUT.
Die MessageQueue und die HTTP Verben wie PUT wurden bereits im ersten Posting erklärt. Die Webabfrage soll asynchron laufen, damit diese den Thread nicht blockiert. Dies merkt man an der “BeginGetResponse” Methode. Dabei wird das Callback und der Request übergeben.
public static void CreateQueue(string secret, string accountName, string Queue)
{
try
{
var request = WebRequest.Create(string.Format("http://{0}.queue.core.windows.net/{1}", accountName, Queue)) as HttpWebRequest;
request.Method = "PUT";
request.ContentLength = 0;
SignRequest(ref request, secret, accountName, "PUT");
request.BeginGetResponse(CreateQueueCallBack, request);
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Error occured: {0}", ex.Message));
}
}
Das Ergebnis der Anfrage wird nun in den Callback ausgegeben. Dieser heißt “CreateQueueCallBack” in unserem Fall. Als erstes wird die HttpWebResponse aus dem WebRequest des Callback-Results (IAsyncResult) erstellt. Da jedoch nichts zurück geliefert wird außer der Status Code, soll dieser auf der Konsole ausgegeben werden. Jede HttpWebResponse hat ein Property “StatusCode”, auf welchen gearbeitet werden kann.
private static void CreateQueueCallBack(IAsyncResult result)
{
HttpWebResponse res = null;
try
{
WebRequest req = result.AsyncState as WebRequest;
res = req.EndGetResponse(result) as HttpWebResponse;
Console.WriteLine(res.StatusCode);
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Error occured: {0}", ex.Message));
}
}
Schlussendlich muss auch noch die Funktion “CreateQueue” aufgerufen werden. Hierfür müssen wir den SharedKey, den Account und die Queue angeben.
static void Main(string[] args)
{
CreateQueue("DEIN_SHARED_KEY",
"DEIN_ACCOUNT", "Asf");
Console.ReadLine();
}
Bild 1: Queue wurde erfolgreich erstellt.
Bild 2: Fehler beim Erstellen; die Queue ist bereits vorhanden, man kann diese nur 1x erstellen. Um den Fehler zu entfernen muss man sich einen anderen Namen auswählen.
So, dies war es vorerst mal mit der Windows Azure Serie. Die nächsten Serien sind schon in Vorbereitung, wobei eines kann ich schon verraten: es wird sehr dynamisch mit vielen Musterbeispielen ;)