Erste Schritte mit Windows Azure (Teil 1) – Die Web Rolle

Azure LogoWie ich schon in meinem Blog Post "Die Windows Azure Plattform" festgestellt habe, wird diese in der deutschen Entwicklergemeinde noch recht stiefmütterlich behandelt.
Diese Blog Post Serie soll dabei helfen die Grundlagen von Windows Azure besser zu verstehen.
In diesem, sowie in den kommenden Blog Posts, stelle ich die Grundlagen der Softwareentwicklung mit der Windows Azure Plattform vor. Beginnen möchte ich mit dem Konstrukt "Web Roles". Außerdem werde ich die Beispielapplikation der Blog Serie Form kurz vorstellen.

 

Was sind Web Rollen?

Jede Windows Azure Rolle stellt eine Vorlage für Instanzen von virtuellen Servern dar, die in der Microsoft-Cloud gehosted werden können.
Bei den Web Rollen handelt es sich um einen Server, auf dem u.a. die Internet Information Services (IIS) und das .NET Framework bereits vorinstalliert sind.
Mit dem Windows Azure SDK werden verschiedene Projektvorlagen, wie z.B. ASP.NET Web Role, ASP.NET MVC 2 Web Role, WCF Service Web Role oder CGI Web Role, mitgeliefert.

 

Wie erstelle ich eine Web Rolle?

Wie bei jeder neuen Applikation unter Visual Studio, muss auch hier als Erstes ein neues Projekt angelegt werden. Unter den Installed Templates findet man die Kategorie Cloud sowie die Projektvorlage Windows Azure Project
Für die Beispielapplikation dieser Blog Post Serie, lege ich als erstes ein Windows Azure Projekt mit dem Namen "Adressverwaltung" an.

Die Windows Azure Projektvorlage

Als Nächstes fragt der Windows Azure Projekt Assistent nach den Rollen, die angelegt werden sollen. Hierbei können auch mehrere Rollen des gleichen Typs hinzugefügt werden.
In der rechten Listbox können, über die Icons der Listboxelemente, Rollen gelöscht oder umbenannt werden.
Im Fall der Beispielapplikation habe ich eine ASP.NET MVC 2 Web Role hinzugefügt und ihr den Namen "Adressverwaltung.Web" gegeben.
Nachdem das Projekt angelegt wurde, können natürlich auch weitere Rollen hinzugefügt werden.

Auswahl der Windows Azure Rollen

Da eine ASP.NET MVC 2 Projektvorlage ausgewählt wurde, wird als nächstes die Frage nach einem Unit Test Projekt gestellt.
Um es möglichst einfach zu halten, habe ich in diesem Fall auf ein solches verzichtet:

ASP.NET MVC 2 - Soll ein Test Projekt erstellt werden?

Nach dem Klick auf OK wird eine Solution mit mindestens 2 Projekten angelegt:

  • Ein Windows Azure Projekt
    Dieses Projekt dient zur Installation in der Windows Azure Plattform und enthält die Konfigurationsdaten für die einzelnen Rollen.
  • Projekte für die Rollen
    Je nach ausgewählten Rollen, werden ein oder mehrere Projekte für jede Rolle angelegt.

 

Worin unterscheiden sich Web Rollen von "normalen" Web Projekten?

Wenn man z.B. eine "ASP.NET MVC 2 Web Role" Projektvorlage mit einer "ASP.NET MVC 2 Web Application" Projektvorlage vergleicht, wird man schnell feststellen, das hier keine großen Unterschiede bestehen.

In den Web Rollen ist eine weitere Klasse mit den Namen WebRole hinzugefügt worden:

Solution Explorer - Projektdateien

Mit dieser Klasse kann auf Events der virtuellen Server Instanz reagiert werden, wie z.B. OnStart, OnStop oder Run. Hierzu müssen die Methoden der Basisklasse RoleEntryPoint überschrieben werden.

Außerdem wurden 3 Referenzen zu Windows Azure Assemblies, sowie ein Trace-Listener für den Windows Azure Diagnostics Monitor hinzugefügt:

Solution Explorer - Referenzen

Auszug aus der Web.Config:

web.config - trace listener

 

Die Rollen Konfiguration

Um in den Konfigurationsdialog einer Rollen zu gelangen, muss man einen Doppelklick auf die entsprechende Rolle im Verzeichnis Roles des Windows Azure Projekts machen:

Solution Explorer - Rollen Konfiguration

In dem geöffneten Konfigurationsdialog kann man u.a. die Anzahl und Größe der zu starteten Instanzen verändern:

Windows Azure Rollen Konfiguration

Die externen Endpunkte jeder VM Instanz – in unserem Fall der Port 80 des IIS – werden hinter einem Load-Balancer bereitgestellt. Dieser arbeitet im Round Robin Verfahren. Bei mind. 2 gestarteten VM Instanzen pro Rolle garantiert Microsoft eine Verfügbarkeit von 99,9%.

Was sich hinter den verschiedenen VM Größen versteckt, kann über das Informationssymbol im Dialog angezeigt werden.

Aktueller Stand der VM Größen:

VM Größe CPU Kerne Arbeitsspeicher Lokaler Speicherplatz
Extra Small Gemeinsame
Nutzung
768 MB 20 GB
Small 1 1,75 GB 225 GB
Medium 2 3,5 GB 490 GB
Large 4 7 GB 1.000 GB
Extra Large 8 14 GB 2.040 GB

Mehr zum Thema "Konfiguration der Windows Azure Rollen", werde ich in den kommenden Blog Posts zeigen.

 

Die Beispielapplikation "Adressverwaltung"

Bei der Beispielapplikation für diese Blog Post Serie handelt es sich um eine einfache Verwaltungsapplikation von Kontakten.
Diese werden in Adressbüchern, die jeder Benutzer für sich anlegen kann, verwaltet.

Das Datenmodel kommt somit mit 2 einfachen Klassen für die Adressbücher und Kontakte aus:

Adressverwaltung - Klassendiagramm

Um die Applikation möglichst flexibel für die kommenden Änderungen zu halten, habe ich ein Class Library Projekt hinzugefügt, dass die Model- sowie die Repository-Klassen enthalten soll:

Solution Explorer - Adressverwaltung

Das Fake Repository wird mittels MEF von den MVC Kontrollern eingebunden und stellt eine In-Memory Datenhaltung bereit.

 

Der Compute Emulator

Ein beherzter Druck auf die F5-Taste zeigt einen weiteren Unterschied zu herkömmlichen Web Projekten. 
Visual Studio startet neben dem Web Browser auch den Windows Azure Compute- und Storage-Emulator. Hierzu muss Visual Studio mit administrativen Rechten gestartet sein. Mit einem Rechtsklick auf das Azure-Icon in der Taskbar, kann im Kontextmenu die Compute Emulator UI angezeigt werden:

Windows Azure Emulator - Kontextmenü

Dieser gestattet einen Blick in die Konsolenausgabe der VM Instanzen:

Windows Azure Compute Emulator

 

Screenshots von der Beispielapplikation

Da sich diese Blog Post Serie hauptsächlich mit den Grundlagen der Windows Azure Plattform beschäftigt, werde ich nur am Rande auf den ASP.NET MVC 2 Teil eingehen können.
Deshalb – Zu Guter Letzt – noch ein paar Eindrücke von der Beispielapplikation:

 

Die Adressbuch-Übersicht

Adressverwaltung - Adressbuch-Übersicht

Die Kontakt-Übersicht

Adressverwaltung - Kontakt-Übersicht

 

Kommende Themen

In den kommenden Blog Posts wird die Beispielanwendung u.a. mit einem Repository für den Table Storage, sowie einer Worker Role für die Bildverarbeitung erweitert. Des weiteren wird es einen Blog Post zum Thema Installation geben.

 


Download Download der Beispielanwendung:
ErsteSchritteMitWindowsAzure01.zip (275,88 kb)

Check Also

Time Machine Backups nach Microsoft Azure

Seit einigen Jahren verwende ich eine Apple Time Capsule, um meine Time Machine Backups an einem zentralen Ort speichern zu können. Bislang hatte das für mich auch vollkommen ausgereicht. Seitdem ich jedoch immer mehr unterwegs bin, habe ich nach einer Lösung gesucht, die ich auch von unterwegs nutzen kann. In diesem Blog Post zeige ich deshalb, wie man Time Machine Backups nach Microsoft Azure machen kann.