Wie 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.
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.
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:
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:
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:
Auszug aus der Web.Config:
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:
In dem geöffneten Konfigurationsdialog kann man u.a. die Anzahl und Größe der zu starteten Instanzen verändern:
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:
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:
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:
Dieser gestattet einen Blick in die Konsolenausgabe der VM Instanzen:
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
Die 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 der Beispielanwendung: ErsteSchritteMitWindowsAzure01.zip (275,88 kb) |