Cloud Computing Anbietervergleich
einfacher bearbeitet werden. Abbildung 1.29 stellt ein Szenario dar, wie die MessageQueue sinnvoll eingesetzt werden kann.
Abbildung 1.29: Kommunikation in der Cloud
In Abbildung 1.28 wird eine Kommunikation in einer Cloud dargestellt. Hierbei lädt der Benutzer über eine WebRole Bilder hoch. Sie versendet eine Message, die die WorkerRole benachrichtigt, dass Daten zum Bearbeiten vorhanden sind. Die WorkerRole beginnt damit, das Bild zu verkleinern und legt es wieder im Blob Storage ab. Sie sendet ebenfalls eine Message, damit die WebRole über die erfolgreiche Bearbeitung informiert ist.
Beispiel
Dieses Beispiel fasst die Unterkapitel 1.2.2 Windows Azure und 1.2.3 Windows Azure Storage zusammen. Hierbei wird C# mit dem .NET Framework verwendet, um die Konzepte von Windows Azure und dem Windows Azure Storage zu demonstrieren. Neben dem .NET Framework gibt es außerdem die Möglichkeit, FastCGI-Anwendungen wie PHP in Windows Azure laufen zu lassen. Windows Azure Storage unterstützt noch weitere Sprachen wie etwa Java. In diesem Beispiel werden die wichtigsten Konstrukte des Windows Azure Storage durchgegangen.
Zu Beginn muss die Konfiguration für Windows Azure festgelegt werden. Verwendet man Visual Studio als Entwicklungsumgebung, so kann man sie einfach durch Klick auf die Eigenschaften der jeweiligen Rolle konfigurieren ( Abbildung 1.30 ). In der Konfiguration wählt man den Menüpunkt Settings aus. Hier muss eine neue Eigenschaft erstellt werden, die in diesem Fall mit „DevStore“ bezeichnet wird. Den Typ ändert man auf Connection String und klickt dann auf den Button im Feld Value . Im nun erscheinenden Dialog wählt man entweder Use development storage aus oder man gibt die Verbindungseigenschaften an. Hier werden der Accountname und der Schlüssel benötigt. Die letzten Punkte sind in Abbildung 1.31 ersichtlich.
Abbildung 1.30: Eigenschaften der WebRole konfigurieren
Abbildung 1.31: Storage Credentials setzen
Nun kann man sich bereits an die Entwicklung der Anwendung machen. Zu Beginn soll die Kommunikation zwischen Web- und WorkerRole geregelt werden. Damit die Kommunikation auf einem höheren Niveau stattfindet, sollen POCOs (Plain Old CLR Objects) anstelle von Textnachrichten versendet werden. Im Prinzip handelt es sich hier um XML-serialisierte Klassen, die zur Laufzeit von der Anwendung besser verstanden werden. Warum Klassen anstelle von Strings verwendet werden, hat lediglich architekturelle Gründe. Für die Kommunikation in der Cloud wird dafür eine Hilfsklasse geschrieben, die zu Beginn drei Felder benötigt: den Account, den Client für die MessageQueues und die MessageQueue. Der Account wird in der .NET Library durch die Klasse CloudStorageAccount repräsentiert, der MessageQueue Client durch CloudQueueClient . Für Operationen, die direkt auf der MessageQueue laufen, gibt es die Klasse CloudQueue . Der Account wird aus dem DevelopmentStorageAccount erstellt. Das muss, will man die Anwendung auf Windows Azure deployen, ersetzt werden. Mithilfe des CloudQueueClients, der aus dem Account erstellt wird, kann man die MessageQueue (Klasse CloudQueue ) erstellen. Diese Vorgänge sind in Listing 1.5 dargestellt.
private CloudQueueClient queueclient;
private CloudStorageAccount account;
private CloudQueue queue;
public CloudMessenger()
{
account = CloudStorageAccount.
DevelopmentStorageAccount;
queueclient = account.CreateCloudQueueClient();
queue = queueclient.GetQueueReference(
"cloudmessagingx");
queue.CreateIfNotExist();
}
Listing 1.5: Cloud Queue Service erstellen
Nun ist es bereits möglich, auf der MessageQueue zu arbeiten. Zu Beginn erstellen wir eine Klasse, die das Versenden der Nachricht erledigt. Hierfür verwenden wir einen String-Serializer, eine Hilfsklasse, die eine Klasse zu einem XML-String serialisiert, hier aber nicht näher erläutert werden soll. Für erfahrene .NET-Entwickler sollte es kein Problem sein, so eine Klasse zu schreiben. Diejenigen, die weniger Erfahrung in der Serialisierung unter .NET haben, können sich das komplette Projekt auch gerne auf meiner Website herunterladen.
Eine Nachricht wird in der Cloud über CloudQueueMessage versendet, die der Queue über AddMessage hinzugefügt wird ( Listing 1.6 ).
public void SendMessage(CloudMessage message)
{
string msg = CloudSerializer.
SerializeToString(message);
CloudQueueMessage queuemsg =
new CloudQueueMessage(msg);
queue.AddMessage(queuemsg);
}
Listing 1.6: CloudMessage versenden
Will man eine
Weitere Kostenlose Bücher