Windows Azure-Insider

Windows Azure Web Sites: Schnelles und einfaches Hosting as a Service

Bruno Terkaly
Ricardo Villalobos

Beispielcode herunterladen.

Bruno Terkaly and Ricardo VillalobosWindows Azure Web Sites (WAWS) ist ein leistungsstarkes Feature der Cloudplattform von Microsoft. Dieser Service baut auf dem Platform as a Service-(PaaS-)Framework von Windows Azure auf. Er vereinfacht Bereitstellungs-, Verwaltungs- und Skalierbarkeitsaufgaben in Verbindung mit dem Hosten von Cloudanwendungen. Auf den ersten Blick mag WAWS lediglich eine weitere glorifizierte Hostinglösung sein. Erst auf den zweiten Blick offenbaren sich die entscheidenden Vorteile der Lösung. Der Unterschied liegt in dem bereitgestellten Maß an Skalierbarkeit und Hochverfügbarkeit, gestützt durch mehrere Datencenter in der ganzen Welt sowie Failovermechanismen, die aus den PaaS-Komponenten vererbt wurden. Darüber hinaus bietet die Windows Azure-Plattform viele zusätzliche Features, wie die Unterstützung für sehr große Datenmengen, Identität, mobile Dienste und mehr, mit denen Entwickler ihre Anwendungen mit steigenden Anforderungen anpassen können.

Bereitstellungsmodelle für Datencenter

In der in Abbildung 1 gezeigten Taxonomie werden die verschiedenen Modelle im Zusammenhang mit der Bereitstellung einer Webanwendung in einem öffentlichen Datencenter dargestellt. Die Konzepte „Infrastructure as a Service (IaaS)“, „Platform as a Service (PaaS)“ und „Software as a Service (SaaS)“ unterscheiden sich durch die Anzahl der an die Plattform oder den Anbieter delegierten Schichten voneinander.

Taxonomy for Cloud Deployment Models
Abbildung 1: Taxonomie für Cloudbereitstellungsmodelle

Je mehr Schichten Sie an den Anbieter delegieren, desto leichter wird die Bereitstellung einer Onlinelösung. Im Allgemeinen reduziert sich jedoch das Ausmaß der Anpassung für die delegierten Schichten. Windows Azure bietet sowohl das IaaS- als auch das PaaS-Bereitstellungsmodell. Durch die Kombination mit anderen Diensten ermöglichen sie Unternehmen, komplexe und hoch skalierbare Cloudarchitekturen zu erstellen. Wie ist auf dieser Grundlage WAWS einzuordnen?

Vorteile von Windows Azure Web Sites

Wie oben erwähnt, baut WAWS auf dem PaaS-Framework von Windows Azure auf. Aus diesem Grund sind Sie nur für die Verwaltung der Anwendung und der Datenschichten des Bereitstellungsstapels zuständig. Der große Unterschied zu dem traditionellen PaaS-Model von Windows Azure besteht darin, dass einige der Bereitstellungs- und Konfigurationsaufgaben erheblich vereinfacht werden. Dies ist auf den WAWS zugrundeliegenden Bereitstellungsprozess zurückzuführen. Er basiert auf einer Kombination aus statusfreien Worker-Rollen, Speicher-BLOBs (Binary Large Objects) und relationalen Datenbanken.

Abbildung 2 zeigt die Architektur, auf der WAWS beruht. Es handelt sich um einen eleganten und robusten Ansatz für die Bereitstellung einer mehrinstanzenfähigen Umgebung zum Hosten von Webanwendungen. Die Funktionsweise ist ganz einfach:

  1. Ein Client sendet eine Anforderung zum Hosten von „host http://foo.azurewebsites.net“.
  2. Die Anforderung durchläuft den Windows Azure-Netzwerklastenausgleich und erreicht die entsprechende Bereitstellung.
  3. Das ARR-Modul (Application Request Routing, Routing von Anwendungsanforderungen) ruft über „foo.com“ Informationen aus der Laufzeitdatenbank ab. Dann bestimmt es, welche Webserver die Website hosten sollen oder sie derzeit hosten, und leitet die Anforderung an die entsprechende Website weiter.
  4. Die Anforderung wird vom Webserver verarbeitet und vom Speichercontroller unterstützt, um die bestimmte SQL Server-Instanz zu erreichen, wenn Daten gelesen oder geschrieben werden.
  5. Nach der Verarbeitung der Anforderung wird eine Antwort zurück an den Client gesendet.

Windows Azure Web Sites Under the Hood
Abbildung 2: Architektur zur Unterstützung von Windows Azure Web Sites

In jedem Webserver werden mehrere W3WP.exe-Prozesse oder -Websites gehostet. Sie werden mithilfe eines spezifischen Prozesses überwacht, der den Ressourcenverbrauch, Fehler und Protokolle überprüft. Zusätzlich ist der Dynamic Web Activation Service für die Websiteaktivierung und -deaktivierung, die Quotenerzwingung und die Bereitstellung der Anwendungsdateien verantwortlich. Zwei zusätzliche Komponenten vervollständigen das Bild: Die Bereitstellungsserver hosten die FTP- und Web Deploy-Module, während das API-Front-End eine Schnittstelle für Automatisierungszwecke zur Verfügung stellt.

Dank dieser Architektur erfolgt die Bereitstellung fast umgehend. Zudem besteht die Option, bei Bedarf zu skalieren.

Sie sollten den Einsatz von WAWS aus mehreren Gründen in Erwägung ziehen. Zum einen bietet der Dienst eine zuverlässige Unterstützung für clientseitiges Markup und die entsprechende Skripterstellung, einschließlich integrierter Konnektivität zu SQL Server- und MySQL-Datenbanken. Sie brauchen sich also um die Implementierung von Back-End-Webdiensten und Serverlogik nicht zu kümmern. Zum anderen profitieren Sie von der Auf- und Abwärtsskalierung zur Unterstützung von Webbenutzern in ruhigen und stark ausgelasteten Zeiten.

Da Sie nur für Ihren Verbrauch zahlen, können Sie zu niedrigen Kosten eine reaktionsfähige Benutzererfahrung bieten. Der WAWS-Dienst unterstützt auch die kontinuierliche Entwicklung von Methoden. Daher kann die Bereitstellung direkt aus Quellcoderepositorys unter Verwendung von Git auf einem Client, GitHub, CodePlex, Bitbucket oder Team Foundation Server (TFS) erfolgen. Neuer Code kann umgehend hochgeladen oder kontinuierlich in ein Onlinerepository integriert werden. Der WAWS-Dienst bietet dank des Bereitstellungsmodells integrierte Unterstützung für WordPress, Joomla!, Drupal, DotNetNuke, Umbraco und mehr. Die Vorlagen werden in der WAWS-Galerie kategorisiert und enthalten Blogs, Content Management, eCommerce, Foren und Wikis.

Kompromisse

Wie bei jeder Technologie, die ein Problem vereinfacht, müssen Kompromisse eingegangen werden. Beispielsweise unterstützt WAWS keine Stagingumgebung zum Testen und keine Netzwerkisolation zum Überbrücken von Cloudanwendungen bei lokalen Netzwerken vor Ort (einschließlich Windows Azure Connect oder Windows Azure Virtual Networks). Die Benutzer können jedoch die Kluft zu Unternehmensressourcen mit dem Service Bus Relay-Dienst überbrücken. Des Weiteren können Sie für die Computinginstanzen keinen Remotedesktop ausführen und keine Startaufgabe während der Bereitstellung starten. Dennoch ist WAWS eine perfekte Lösung zum Entwickeln und Bereitstellen von Webanwendungen, für die keine hohen Anpassungsanforderungen bestehen.

Praktisches

Im Folgenden möchte ich Ihnen ein einfaches Lernprogramm erläutern. Dabei werden Sie feststellen, dass Sie nichts Neues über die Cloud lernen müssen. Sie können sich darauf konzentrieren, Ihre Webanwendung und die zugehörigen Daten wie immer zu erstellen. Die Details der Verlagerung in die Cloud werden vom Dienst abstrahiert. Hierdurch entsteht eine reibungslose Bereitstellungserfahrung. Sie können sogar den gleichen klassischen ASP-Code schreiben, den Sie 1996 erstellt haben, und ihn in WAWS ausführen.

Wir untersuchen die grundlegenden Elemente des WAWS-Diensts, indem wir eine einfache, aber praktische ASP.NET MVC 4-Anwendung mit SQL Server als Back-End erstellen. Diese einfache Anwendung unterstützt Create-, Read-, Update- und Delete-(CRUD-)Vorgänge und benötigt kaum Code. Nach der Bereitstellung von WAWS und dem Erstellen der ASP.NET MVC 4-Anwendung nehmen wir die Bereitstellung mithilfe von Web Deploy aus Visual Studio 2012 vor. Einzig für die SQL-Datenbank entstehen Kosten, das Ausführen der ASP.NET MVC 4-Anwendung in WAWS ist kostenlos. Sie können bis zu 10 Websites ohne Ablaufdatum ausführen.

Starten von Visual Studio und Erstellen eines MVC-Projekts

Klicken Sie als Erstes auf „Datei“ | „Neu“ | „Projekt“, um Visual Studio 2012 als Administrator zu öffnen. Wählen Sie unter „Installierte Vorlagen“ „Web“ aus, und wählen Sie dann „ASP.NET MVC 4-Webanwendung“ aus. Nennen Sie das Projekt „MVCAzure.Website“, und klicken Sie auf OK (siehe Abbildung 3). Als Nächstes müssen Sie eine Projektvorlage auswählen. Wählen Sie hier „Internetanwendung“. Das Ansichtsmodul ist „Razor“.

Creating a New ASP.NET MVC 4 Web Application Project
Abbildung 3: Erstellen eines neuen ASP.NET MVC 4-Webanwendungsprojekts

Code First

Bei einem Code First-Ansatz werden die zugrundeliegenden Tabellen in SQL Server durch die von Ihnen in Visual Studio erstellten Klassen definiert. Das bedeutet in Bezug auf eine ASP.NET MVC 4-Anwendung, dass wir im Projektmappen-Explorer von Visual Studio dem Ordner „Modelle“ ein paar Klassenmodule hinzufügen, wie in Abbildung 4 gezeigt. Die in den Klassenmodulen definierten Eigenschaften werden in Tabellenstrukturen der SQL-Datenbank umgewandelt. Dieser Ansatz ist produktiv, da Sie sich nicht um das Zuordnen der C#-/Visual Basic-Objekte zu relationalen Datenstrukturen zu kümmern brauchen. Wir nutzen Entity Framework, um diese objektrelationale Zuordnung zu vereinfachen. Entity Framework ist eine objektrelationale Zuordnung, die die Interaktion mit einer relationalen Datenbank viel einfacher gestaltet. Es ermöglicht die Ausführung von CRUD-Operationen mit Objekten anstatt mit komplexen SQL-Anweisungen.

Adding a Class to the Models Folder
Abbildung 4: Hinzufügen einer Klasse zum Order „Modelle“

Wählen Sie als Erstes den Ordner „Modelle“ aus dem Projektmappen-Explorer aus. Wählen Sie im Menü „Projekt“ die Option „Klasse hinzufügen“ aus. Benennen Sie die Klasse „Person“. Fügen Sie die folgenden Eigenschaften in die Person-Klasse ein (diese Eigenschaften werden in einer Person-Tabelle in SQL Server in Spalten umgewandelt):

public class Person
{
  public int PersonID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

ASP.NET MVC 4-Anwendungen benötigen eine Controllerklasse, die als Brücke zwischen der Ansicht und dem Modell dient. Betrachten Sie die Ansicht als Benutzeroberfläche und das Modell als die Daten. In Visual Studio werden mit hinzugefügtem Controller automatisch die benötigten Ansichtsklassen generiert.

Sie müssen jedoch vor dem Hinzufügen der Controllerklasse die Lösung erstellen. Nur so werden die passenden Typinformationen, die für zukünftige Schritte gebraucht werden, hinzugefügt. Wählen Sie im Menü „Erstellen“ die Option „Projektmappe erstellen“. Sie können im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner „Controller“ klicken und „Hinzufügen“ | „Controller“ wählen. Das in Abbildung 5 hinzugefügte Dialogfeld „Controller hinzufügen“ wird angezeigt. Hier müssen Sie die „Gerüstoptionen“ mit den folgenden Werten festlegen:

  1. Wählen Sie in der Dropdownliste „Vorlage“ die Option „MVC-Controller mit Lese-/Schreibvorgängen und Ansichten mithilfe von Entity Framework“ aus.
  2. Wählen Sie in der Dropdownliste „Modellklasse“ die Person-Klasse aus.
  3. Wählen Sie in der Liste „Datenkontextklasse“ <Neuer Datenkontext...> aus. Setzen Sie im angezeigten Dialogfeld den Namen auf „Person­Context“, und klicken Sie auf „OK“.
  4. Stellen Sie sicher, dass in der Dropdownliste „Ansichten“ der Eintrag „Razor“ ausgewählt ist.
  5. Klicken Sie auf „Hinzufügen“, um den Prozess abzuschließen.

Adding an MVC Controller ClassAbbildung 5: Hinzufügen einer MVC-Controllerklasse

Durch das Hinzufügen des Controllers zum Projekt wurde der gesamte erforderliche Webgerüstbau erzeugt. CRUD-Operationen können daher anhand einer SQL Server-Datenbank ausgeführt werden, wodurch mehrere Dateien hinzugefügt werden (siehe Abbildung 6). Wenn Sie die PersonController-Klasse öffnen, werden alle Vorgangsmethoden angezeigt, die Create-, Edit-, Delete- und List-Operationen unterstützen.

Abbildung 6: Hinzugefügte Dateien

Ordner „Controller“ PersonController.cs
Ordner „Modelle“

Person.cs

PersonContext.cs

Ordner „Ansichten“/„Person“

Create.cshtml

Delete.cshtml

Details.cshtml

Edit.cshtml

Index.cshtml

Nächster Schritt: Bereitstellung

Wie oben erwähnt, können Sie Web Sites mithilfe kontinuierlicher Bereitstellungsframeworks, wie Git oder TFS, oder mit einfachen Tools, wie FTP oder Web Deploy, bereitstellen. In diesen Artikel verwenden wir Web Deploy aus Visual Studio. Informationen zu den anderen Bereitstellungsmethoden finden Sie im Schulungskit für Windows Azure (bit.ly/Wb0EKZ).

Als Erstes melden Sie sich beim Windows Azure-Verwaltungsportal an. Melden Sie sich hierfür für eine 90-Tage-Testversion unter bit.ly/azuretestdrive an. Nach dem Einrichten des Kontos melden Sie sich mit folgender URL an: manage.windowsazure.com. Klicken Sie anschließend links im Browserfenster auf den Link „Web Sites“. Klicken Sie als Nächstes auf NEW | COMPUTE | WEB SITE | QUICK CREATE, und geben Sie die gewünschte URL ein (siehe Abbildung 7). Wir haben „msdnmagazine“ verwendet. Das bedeutet, dass unsere Website unter http://msdnmagazine.azurewebsites.net live sein wird. Wählen Sie auch eine Region aus.

Quick Provisioning of a Windows Azure Web Site DeploymentAbbildung 7: Schnelle Bereitstellung einer Windows Azure-Web Site-Bereitstellung

Nun ist die Vorbereitung auf die Bereitstellung des Inhalts der Website fast abgeschlossen. Die Bereitstellung an sich verläuft äußerst schnell. Sobald der Status „running“ angezeigt wird, können Sie auf den Namen der Website klicken und die Verwaltung starten. Im Portal steht auch ein Dashboard zur Verfügung, das die CPU-Zeit, Anforderungen, ein- und ausgehende Daten sowie HTTP-Serverfehler anzeigt.

Ein Hauptschritt beim Bereitstellen der Anwendung besteht im Abrufen der Veröffentlichungsprofildatei. Sie enthält die Einstellungen, mit denen Visual Studio die Bereitstellung ausführt. In einigen Browsern können Sie die Veröffentlichungsprofildatei herunterladen. Sie sollten eine Kopie lokal speichern, damit Sie sie später in Visual Studio verwenden können.

Konfigurieren des Datenbankservers

Bevor Sie mit der ASP.NET MVC 4-Anwendung live gehen können, müssen Sie die Datenbank konfigurieren (siehe Abbildung 8). Da in diesem Projekt das Entity Framework-Code First-Paradigma angewendet wird, brauchen Sie sich nicht um Datenverwaltungsbefehle zu kümmern, mit denen normalerweise relationale Datenstrukturen erstellt und initialisiert werden. Entity Framework ist hierfür zuständig.

Adding a Server to Host SQL DatabaseAbbildung 8: Hinzufügen eines Servers zum Hosten der SQL-Datenbank

Wenn Sie auf „ADD“ klicken, werden Sie aufgefordert, folgende Informationen bereitzustellen: Anmeldename, Kennwort sowie die Region für die Bereitstellung der Windows Azure SQL-Datenbank. Es wird dringend empfohlen, dass Sie das gleiche Datencenter wählen, in dem auch WAWS ausgeführt wird. Dadurch wird Latenz minimisiert, und Bandbreitengebühren werden vermieden. In unserem Fall lautet der Anmeldename „DBAdministrator“. Dies kann später wichtig sein, wenn Sie sich remote anmelden oder eine Verbindungszeichenfolge erstellen möchten. Beachten Sie auch, dass ein Servername für Sie zur Verfügung gestellt wurde (in unserem Fall ist es „ccek4yihqf“). Sie können auf den Servernamen klicken, um mehr Details aus dem Portal zu erhalten (siehe Abbildung 9).

Abbildung 9: Serverdetails

Servername ccek4yihqf
Serverstatus Gestartet
Administratoranmeldung DBAdministrator
URL https://ccek4yihqf.database.windows.net

Ein wichtiges Ziel ist es hier, die Datenbankserverinformationen zu schützen, indem Sie nur bestimmte IP-Adressen für eingehende Verbindungen zulassen. Klicken Sie am oberen Bildschirmrand auf „Konfigurieren“. Ihre derzeitige IP-Adresse wird angezeigt. Mit ihr können Sie eine Regel erstellen und von der IP-Adresse direkt eine Verbindung mit dem Server herstellen.

Ausführen von Web Deploy in Visual Studio

Jetzt können wir dieses Projekt abschließen, indem wir es bereitstellen. Gleichzeitig können wir eine Datenbank auf dem soeben bereitgestellten Server erstellen. Wechseln Sie zurück zu Visual Studio, und wählen Sie „Ansicht“ | „Projektmappen-Explorer“ aus. Klicken Sie mit der rechten Maustaste auf „MVC­Azure.WebSite“, und wählen Sie „Veröffentlichen“. Das Dialogfeld „Web veröffentlichen“ wird angezeigt. In dem assistentenbasierten Prozess wird zuerst die Veröffentlichungsprofildatei in Visual Studio geladen. Dies vereinfacht den Bereitstellungsprozess erheblich. In mehreren Schritten geben Sie die Details der Veröffentlichungsdatei für die ASP.NET MVC 4-Anwendung an. Dabei stellen Sie Informationen zur gewünschten Bereitstellungsmethode in einem Microsoft-Datencenter bereit, einschließlich der Ziel-URL und des Standorts des Windows Azure SQL-Datenbankservers.

Sie können den Windows Azure SQL-Datenbankserver angeben, den die ASP.NET MVC 4-Anwendung zuerst verwendet, indem sie links im Dialogfeld auf „Einstellungen“ und dann auf die Schaltfläche mit den Punkten rechts von „PersonContext“ klicken (siehe Abbildung 10).

Configuring the Database ConnectionAbbildung 10: Konfigurieren der Datenbankverbindung

Jetzt benötigen Sie die Informationen, die Sie beim Erstellen des Datenbankservers aus dem Portal erhalten haben. In unserem Fall lautet der Servername „tcp:siqxqgihiy.database.windows.net“ (siehe Abbildung 11). Beachten Sie, dass wir dem Servernamen „tcp“ vorangestellt haben. Außerdem müssen Sie den Administratornamen (oben haben wir „DBAdministrator“ eingegeben) und das Kennwort eingeben.

Connecting to the Server and Creating the DatabaseAbbildung 11: Verbindung mit Server herstellen und Datenbank erstellen

Sie erstellen die SQL-Datenbank physisch auf dem eingegebenen Server, indem Sie auf „OK“ klicken. Sie werden aufgefordert, diesen Schritt zu bestätigen. Sobald die Datenbank erstellt ist, können Sie im Dialogfeld zum Veröffentlichen der Webanwendung die Option „Veröffentlichen“ wählen. Wählen Sie in Visual Studio „Ansicht“ | „Ausgabe“, um die Ereignisse während der Bereitstellung detailliert anzuzeigen.

Die gesamte Anwendung ist jetzt fertig gestellt. Sie finden unsere Version unter msdnmagazine.azurewebsites.net/Person. Denken Sie daran, dass wir nur wenig Code schreiben mussten. Es dauerte nur ein paar Minuten, um etwas Praktisches und Ausgefeiltes zu erstellen.

Was kommt nach der Bereitstellung?

Nachdem die Anwendung bereitgestellt wurde, können Aufgaben wie die Überwachung, Skalierung oder Aktualisierung der Website ganz einfach durchgeführt werden. Wechseln Sie als Erstes zum Windows Azure-Portal. Hier steht Ihnen ein einfach zu verwendendes Dashboard zur Verfügung, auf das Sie von verschiedenen Geräten aus zugreifen können. Ab Version 1.8 des Windows Azure SDK können einige dieser Aufgaben mithilfe von Windows PowerShell-Cmdlets oder direktem Aufrufen des REST-APIs (Representational State Transfer) automatisiert werden. Zu diesen Aufgaben gehören die Verwaltung von Verbindungszeichenfolgen und Anwendungseinstellungen, das Ändern der Anzahl von Instanzen oder der Download des neuesten Protokolls.

Zusammenfassung

Mit WAWS können Sie Webanwendungen fast umgehend bereitstellen. Hierfür benötigen Sie nur wenig oder überhaupt keine Clouderfahrung. Parallel zum Wachstum Ihrer Anforderungen können Sie weitere Aspekte der Windows Azure-Cloudtechnologien integrieren, wie die Zwischenspeicherung, den Servicebus, die Speicherung und andere wertschöpfende Dienstleistungen. Dank der Unterstützung durch die Windows Azure-PaaS-Komponenten gibt es keine einfachere Methode, um skalierbare Webanwendungen mit hoher Verfügbarkeit in der Cloud zu hosten. Diese Features in Verbindung mit den integrierten Frameworks wie WordPress, Drupal, DotNetNuke und Umbraco ermöglichen Entwicklern, sich auf das Erstellen umfassender Webanwendungen und Datenrepositorys zu konzentrieren. Infrastrukturaufgaben können an die Windows Azure-Plattform delegiert werden.

Bruno Terkaly arbeitet als Entwicklungsexperte für Microsoft. Seine fundierten Kenntnisse basieren auf mehreren Jahren Erfahrung in der Programmierung in unterschiedlichsten Plattformen, Sprachen, Frameworks, SDKs, Bibliotheken und APIs. Er schreibt Code, Blogs und referiert live über die Erstellung von cloudbasierten Anwendungen, insbesondere mit der Windows Azure-Plattform.

Der erfahrene Softwarearchitekt Ricardo Villalobos entwirft und erstellt seit über 15 Jahren Anwendungen für Unternehmen in der Supply-Chain-Management-Branche. Er besitzt verschiedene Microsoft-Zertifizierungen sowie einen Master-Abschluss in Businessadministration der University of Dallas. Er arbeitet als Cloudarchitekt in der Windows Azure CSV-Inkubationsgruppe für Microsoft.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Nir Mashkowski