Windows Azure-Insider

Windows 8 und Windows Azure: Konvergenz in der Cloud

Bruno Terkaly
Ricardo Villalobos

Bruno Terkaly, Ricardo VillalobosEs steht wohl außer Frage, dass Softwareentwickler heutzutage Cloud-Technologien nutzen müssen, um fesselnde Windows Store-Anwendungen zu erstellen – angesichts der unglaublichen Anzahl an Benutzern und Geräten ist das nur logisch. Über ein Drittel der Weltbevölkerung ist mit dem Internet verbunden. Mittlerweile greifen schon mehr Geräte als Menschen auf Onlineressourcen zu. Darüber hinaus hat der mobile Datenverkehr 2011 um das 2,3-Fache zugenommen und sich somit das vierte Jahr in Folge mehr als verdoppelt. Wie Sie es auch immer betrachten mögen, letztendlich ergibt sich immer ein ganz einfacher Schluss: Moderne Anwendungen erfordern Konnektivität zur Cloud.

Der Wertvorschlag des Cloud-Computings ist überzeugend. Die meisten Beobachter führen als treibende Kraft für die Einführung von Clouds die Skalierbarkeit nach Bedarf und die Tatsache an, dass Sie nur für das zahlen, was Sie in Anspruch nehmen. Die Cloud ist jedoch tatsächlich eine ganz wesentliche Technologie, wenn mehrere Geräte angeschlossen sind. Benutzer der Anwendung Windows Store, die oftmals viele Anwendungen und mehrere Geräte einsetzen, erwarten, dass ihre Daten zentral gespeichert sind. Wenn sie Daten auf einem Windows Phone-Gerät speichern, sollten diese sofort auf ihren Tablets oder einem der anderen Geräte zur Verfügung stehen, darunter iOS- und Android-Geräte.

Windows Azure ist die öffentliche Cloudplattform von Microsoft, die die größte globale Suche ermöglicht und das umfassendste Dienst-Back-End bietet. Sie unterstützt die Verwendung mehrerer Betriebssysteme, Sprachen, Datenbank- und Tooloptionen und ermöglicht ein automatisches Betriebssystem- und Dienstpatching. Die zugrunde liegende Netzwerkinfrastruktur bietet einen automatischen Lastenausgleich sowie Stabilität bei Hardwarefehlern. Und schließlich unterstützt Windows Azure ein Bereitstellungsmodell, das es Entwicklern ermöglicht, Anwendungen ohne Ausfallzeit zu aktualisieren.

Die in diesem Artikel vorgestellte Webdienstanwendung kann in Minutenschnelle in mindestens einem der globalen Cloudrechenzentren von Microsoft gehostet werden. Egal, ob Sie eine Aufgabenlistenanwendung, ein Spiel oder sogar eine Branchenkontoführungsanwendung erstellen, Sie können stets die Techniken in diesem Artikel nutzen, um Szenarios zu unterstützen, die dauerhaft oder gelegentlich verbundene Clients erfordern.

Sie erfahren hier Folgendes:

Zunächst beschreiben wir, wie unter Windows Azure ein einfacher Cloud-gehosteter Dienst zur Unterstützung asynchroner Clients erstellt wird, und zwar unabhängig von der Geräteart, auf der er ausgeführt wird – ob Telefon, Slate-PC, Tablet, Laptop oder Desktop. Dann zeigen wir, wie einfach ein Webdienst über eine Windows Store-Anwendung zum Abrufen von Daten aufgerufen werden kann.

Im Allgemeinen gibt es zwei Möglichkeiten der Datenübertragung zu einer Windows Store-Anwendung. In diesem Artikel konzentrieren wir uns auf den „Pull-Ansatz“ für den Datenabruf. Dazu muss die Anwendung ausgeführt werden, und Datenanforderungen werden über HTTP-Webaufrufe ausgegeben. Bei dem „Pull-Ansatz“ werden typischerweise offene Standards (HTTP, JSON, Representational State Transfer [REST]) genutzt, und die meisten – wenn nicht sogar alle – Gerätetypen verschiedener Hersteller können davon profitieren.

Der „Push-Ansatz“ wird in diesem Artikel nicht behandelt. Dieser Ansatz basiert auf Windows-Pushbenachrichtigungsdiensten (Windows Push Notification Services, WNS). Damit können Cloud-gehostete Dienste nicht angeforderte Daten an eine Windows Store-Anwendung senden. Derartige Anwendungen brauchen nicht im Vordergrund ausgeführt zu werden, und eine Meldungszustellung wird nicht garantiert. Informationen zur Verwendung von WNS finden Sie unter bit.ly/RSXomc.

Zwei Projekte

Die vollständige Lösung erfordert zwei Hauptkomponenten: ein serverseitiges oder Webdienstprojekt (das lokal oder in Windows Azure bereitgestellt werden kann) und ein clientseitiges Projekt, das aus einer auf der neuen Windows-Benutzeroberfläche basierenden Windows Store-Anwendung besteht. Beide Projekte können mit Visual Studio 2012 erstellt werden.

Grundsätzlich stehen für die Erstellung des Webdienstprojekts zwei Optionen zur Verfügung: Windows Communication Foundation (WCF) oder die ASP.NET Web API, die in ASP.NET MVC 4 enthalten ist. Da die Verfügbarmachung von Diensten über WCF umfangreich dokumentiert ist, verwenden wir für unser Szenario den moderneren Ansatz, den die ASP.NET Web API liefert und der von den HTTP-Konzepten eingesetzt wird (URIs und Verben). Mit diesem Framework können Sie auch Dienste erstellen, die erweiterte HTTP-Funktionen verwenden, beispielsweise Anforderungs-/Antwortheader und Hypermediakonstrukte.

Beide Projekte können während der Entwicklung auf einem einzigen Computer getestet werden. Sie können die gesamte Lösung unter archive.msdn.microsoft.com/mag201210AzureInsider herunterladen.

Sie benötigen Folgendes:

Zunächst einmal benötigen Sie natürlich Windows 8. Dabei dürfte es auch nicht überraschen, dass die Projekte mit der neuesten Version von Visual Studio erstellt werden sollten, die unter bit.ly/win8devtools heruntergeladen werden kann.

Für das serverseitige Projekt benötigen Sie das neueste Windows Azure SDK, das die notwendigen Assemblys und Tools für die Erstellung von Cloudprojekten in Visual Studio beinhaltet. Sie können dieses SDK und die zugehörigen Tools unter bit.ly/NlB5OB herunterladen. Darüber hinaus benötigen Sie ein Windows Azure-Konto. Eine kostenlose Testversion kann unter bit.ly/azuretestdrive heruntergeladen werden.

Früher wurde SOAP für die Entwicklung von Webdiensten verwendet. Dieser Artikel konzentriert sich jedoch auf Architekturen des REST-Typs. Kurz gesagt ist REST einfacher zu verwenden, weist eine geringere Nutzlast auf und erfordert keine speziellen Tools.

Entwickler müssen beim Erstellen von Webdiensten außerdem ein Datenaustauschformat wählen. Dabei steht in der Regel JSON und XML zur Auswahl. JSON verwendet ein kompaktes Datenformat, das auf der Sprache JavaScript basiert. Häufig wird es als „fettfreie Alternative“ zu XML bezeichnet, da es eine wesentlich geringere Grammatik aufweist und den in Clientanwendungen verwendeten Datenstrukturen direkt zugeordnet ist. In unseren Beispielen verwenden wir JSON-Daten.

Nachdem wir diese Entscheidungen getroffen haben, sind wir bereit, unseren Webdienst zu erstellen. Unser Ziel ist es dabei, einen HTTP-basierten Dienst zu erstellen, der eine möglichst große Bandbreite an Clients anspricht, darunter Browser und Mobilgeräte.

Erstellen des Webdiensts

Zunächst starten wir Visual Studio 2012 als Administrator. Führen Sie folgende Schritte aus, um den serverseitigen Webdienst mithilfe der ASP.NET MVC 4 Web API zu erstellen:

  1. Klicken Sie auf das Menü „Datei“, und wählen Sie „Neu | Projekt“ (siehe Abbildung 1).
  2. Wählen Sie „Visual C# | Web“ als Vorlagentyp.
  3. Wählen Sie oben in der Dropdownliste „.NET Framework 4“.
  4. Wählen Sie die Webanwendung ASP.NET MVC 4.
  5. Geben Sie den Namen des Webdienstes und einen Speicherplatz Ihrer Wahl ein.
  6. Klicken Sie auf „OK“.
  7. Der Assistent fordert Sie dann auf, die Projektvorlage auszuwählen. Wählen Sie „Web API“, und achten Sie darauf, dass als Ansichtmodul Razor (Voreinstellung) verwendet wird, wie Abbildung 2 entnommen werden kann.
  8. Von Visual Studio werden zahlreiche Dateien generiert. Dabei kann es sich um eine beeindruckende Vielzahl handeln. Wir brauchen uns aber nur um ein paar Dateien zu kümmern, wie in Abbildung 3 zu sehen ist.

New Project Dialog Box
Abbildung 1 Dialogfeld „Neues Projekt“

Project Template Dialog Box
Abbildung 2 Dialogfeld „Projektvorlage“

Solution Explorer for WebService
Abbildung 3 Projektmappen-Explorer für WebService

ValuesController.cs ist wichtig, da es den Code enthält, der ausgeführt wird, wenn der Windows 8-Client eine HTTP-Anforderung für den Webdienst ausführt. An dieser Stelle fügen wir Code hinzu, der die Rückgabe der von der Windows Store-Anwendung benötigten JSON-Daten veranlasst. Die in Abbildung 4 gezeigte ValuesController-Klasse wird von Visual Studio generiert, und sie erbt von ApiController, das die serialisierten und an den Client gesendeten Daten automatisch im JSON-Format zurückgibt.

Abbildung 4 ValuesController-Klasse

public class ValuesController : ApiController
{
  // GET api/values
  public IEnumerable<string> Get()
  {
    return new string[] { "value1", "value2" };
  }
  // GET api/values/5
  public string Get(int id)
  {
    return "value";
  }
  // POST api/values
  public void Post([FromBody]string value)
  {
  }
  // PUT api/values/5
  public void Put(int id, [FromBody]string value)
  {
  }
  // DELETE api/values/5
  public void Delete(int id)
  {
  }
}

Beachten Sie, dass die Methoden in Abbildung 4 – GET, POST, PUT und DELETE – bestimmten CREATE-, READ-, UPDATE- und DELETE-Vorgängen (CRUD) sowie von der Windows Store-Anwendung ausgeführten HTTP-Verben zugeordnet werden. Das ist das Schöne am ASP.NET Web API-Framework: Es leitet die vom Client verwendeten HTTP-Verben direkt zu den in der ValuesController-Klasse festgelegten Methoden weiter, sodass mögliche Programmierfehler weitestgehend vermieden werden.

Standardmäßig ist das WebService-Projekt sofort ausführbar. Die Methoden in der ValuesController-Klasse sind selbstdokumentierend:

// GET api/values
public IEnumerable<string> Get()
{
  return new string[] { "value1", "value2" };
}

Beachten Sie, dass die GET-Methode aufgerufen wird, wenn der Client das HTTP-Verb GET über die URL http://localhost:[port]/api/values aufruft. Zu Vorführzwecken zieht der Code auf der Grundlage der vom Webdienst zurückgegebenen Farben konzentrische Kreise. Ändern Sie den voranstehenden Code wie folgt:

// GET api/values
public IEnumerable<string> Get()
{
  return new string[] { "#0000FF", "#000000", "#FF0000",
    "#FFFF00", "#00FF00" };
}

Wie Sie sehen, geben wir jetzt ein Zeichenfolgenarray unterschiedlicher Farben zurück. Die von uns erstellte Windows Store-Anwendung rendert diese Zeichenfolge als tatsächliche Farben, insbesondere als farbige konzentrische Kreise.

Tests mit einem Browser

Es empfiehlt sich immer, den Webdienst vor dem Erstellen der Windows Store-Anwendung zu testen. Sie können dazu einen beliebigen Browser verwenden.

Zum Testen des Webdienstes über einen Browser führen Sie die folgenden Schritte durch:

  1. Klicken Sie in Visual Studio auf das Menü „Debug“, und wählen Sie „Debuggen starten“.
  2. Die Standardstartseite wird angezeigt, wie in Abbildung 5 dargestellt.
  3. Beachten Sie, dass Visual Studio einen willkürlichen Port wählt, in diesem Fall 58428. Der von Ihrer Instanz von Visual Studio verwendete Port ist wahrscheinlich ein anderer.
  4. Sie werden sich sicher daran erinnern, dass die URL „api/values“ hinzugefügt werden muss, damit die GET-Methode aufgerufen wird. Somit sollte die endgültige URL (in unserem Fall) http://localhost:58428/api/values lauten. Dies ist ein integriertes Feature, wenn Visual Studio Ihr Projekt erstellt. Sie können diese Zuordnung Ihren Bedürfnissen entsprechend ändern.
  5. Gehen Sie zur Adressleiste von Visual Studio, und geben Sie http://localhost:58428/api/values ein. Vergessen Sie nicht, die Portnummer durch einen eigenen Wert zu ersetzen.
  6. Es wird ein Dialogfeld wie in Abbildung 6 angezeigt.
  7. Klicken Sie auf die Schaltfläche „Speichern“, und öffnen Sie values.json im Editor.
  8. Im Editor werden die zurückgegebenen Werte angezeigt. Beachten Sie in Abbildung 7, dass die Daten dank des ASP.NET Web API-Frameworks automatisch im JSON-Format zurückgegeben werden.

Using Internet Explorer to Test the Web Service
Abbildung 5 Mit dem Internet Explorer den Webdienst testen

Internet Explorer Dialog Box
Abbildung 6 Dialogfeld „Internet Explorer“

The JSON Data Returned by the Web Service
Abbildung 7 Die vom Webdienst zurückgegebenen JSON-Daten

Windows 8 aufrufen

Nachdem wir JSON-Daten von unserem Webdienst zurückgeben konnten, wollen wir uns ansehen, wie diese Daten von einer Windows Store-Anwendung genutzt werden. Ziel ist es, die Farben aus dem Webdienst auszulesen und auf der Grundlage der vom Webdienst zurückgegebenen Werte die konzentrischen Kreise zu ziehen. Von der endgültigen Windows Store-Anwendung sollte ein Bild ähnlich dem in Abbildung 8 erzeugt werden. Die abgebildeten Farben wurden vom Webdienst festgelegt. Wenn die zurückgegebenen Farben vom Webdienst geändert werden, stellt die Windows Store-Anwendung diese Farben in Form der in Abbildung 8 dargestellten konzentrischen Kreise dar.

The Running Windows Store Application
Abbildung 8 Die ausgeführte Windows Store-Anwendung

Sie können die Windows Store-Anwendung entweder in der gleichen Lösung wie das Webdienstprojekt erstellen, oder Sie können eine neue Instanz von Visual Studio speziell für den Windows 8-Client starten. Wir starten eine neue Instanz von Visual Studio als Administrator für die Windows Store-App. Führen Sie dazu die folgenden Schritte aus (siehe Abbildung 9):

New Project Dialog Box
Abbildung 9. Dialogfeld „Neues Projekt“

  1. Starten Sie eine zweite Instanz von Visual Studio als Administrator.
  2. Klicken Sie auf das Menü „Datei“, und wählen Sie „Neu | Projekt“.
  3. Wählen Sie „Visual C# | Windows Store“ als Vorlagentyp.
  4. Wählen Sie oben in der Dropdownliste „.NET Framework 4.5“.
  5. Wählen Sie „Leere App (XAML)“.
  6. Geben Sie den Namen „Windows8Client“ und einen Speicherplatz Ihrer Wahl ein.
  7. Klicken Sie auf „OK“.

Wenn Sie diese Schritte ausgeführt haben, navigieren Sie zum Menü „Ansicht“, und wählen Sie „Projektmappen-Explorer“ (siehe Abbildung 10). Öffnen Sie dann die Datei MainPage.xaml.cs.

Solution Explorer for Windows8Client
Abbildung 10 Projektmappen-Explorer für Windows8Client

Aufrufen des Webdienstes

Wir sind nun bereit, den Code hinzuzufügen, der den Webdienst über die Windows Store-Anwendung aufruft. Die Windows Store-Anwendung gibt eine Webanfrage für den Webdienst aus.

Um eine Webanfrage zu unterstützen, wird MainPage.xaml.cs wie folgt geändert:

  • Für das integrierte Rastersteuerelement wird ein Loaded-Ereignis hinzugefügt.
  • Das Loaded-Ereignis sendet eine asynchrone Webanfrage für den Aufruf des Webdienstes. Die HttpClient-Klasse wird zu diesem Zweck verwendet.
  • Um die Farbzeichenfolge vom Webdienst in eine echte Farbe zu konvertieren, wird eine Methode namens CircleColorFromString hinzugefügt.
  • Zum Zeichnen der konzentrischen Kreise fügen wir eine Methode namens AddCircle hinzu.

Führen Sie die folgenden Schritte aus, um eine Webanfrage für den Webdienst auszugeben:

  1. Klicken Sie mit der rechten Maustaste auf „MainPage.xaml“, und wählen Sie „Ansicht-Designer“.
  2. Fügen Sie das GridLoadedEvent und das Canvas-Steuerelement wie folgt hinzu. (Auf der Leinwand „Canvas“ zeichnen wir die Kreise):
<Grid Name="maingrid"
      Background="{StaticResource
                   ApplicationPageBackgroundThemeBrush}"
      Loaded="GridLoadedEvent">
  <Canvas Name="myCanvas" Background="White"/>
</Grid>
  1.  3.   Doppelklicken Sie auf „MainPage.xaml.cs“. Der Codebehind für MainPage.xaml.cs wird angezeigt.
  2.  4.   Um die verschiedenen Namespaces zu unterstützen, die von dem hinzuzufügenden Code benötigt werden, nehmen Sie die folgenden Referenzen über MainPage.xaml.cs auf:
using System.Net.Http;          // for HttpClient()
using Windows.Data.Json;        // for parsing JSON Array data
using Windows.UI.Xaml.Shapes;   // for the Ellipse object
using Windows.UI                // for the Color class
  1.  5.   Fügen Sie die unterstützenden Routinen zum Zeichnen der Kreise hinzu, und analysieren Sie die vom Webdienst gesendeten JSON-Zeichenfolgendaten. Bearbeiten Sie den Code in MainPage.xaml.cs wie in Abbildung 11 dargestellt.

Abbildung 11 MainPage.xaml.cs

public sealed partial class MainPage : Page
  {
    // [ Generated code omitted for brevity ]
    private void AddCircle(Color color, int diameter, int t, int l)
    {
      //
      // Build a circle using the attributes provided as parameters.
      //
      Ellipse newColoredCircle = new Ellipse();
      newColoredCircle.Fill = new SolidColorBrush(color);
      newColoredCircle.StrokeThickness = 1;
      newColoredCircle.Stroke = new SolidColorBrush(color);
      newColoredCircle.Width = diameter;
      newColoredCircle.Height = diameter;
      //
      // Add the circle to the Canvas control.
      //
      myCanvas.Children.Add(newColoredCircle);
      Canvas.SetTop(newColoredCircle, t);
      Canvas.SetLeft(newColoredCircle, l);
    }
    Color CircleColorFromString(string rgb)
    {
      //
      // Convert the string-based hex values
      // into a Color object and return to caller.
      //
      Color ringColor = new Color();
      byte a = 255;
      byte r = (byte)(Convert.ToUInt32(rgb.Substring(1, 2), 16));
      byte g = (byte)(Convert.ToUInt32(rgb.Substring(3, 2), 16));
      byte b = (byte)(Convert.ToUInt32(rgb.Substring(5, 2), 16));
      ringColor = Color.FromArgb(a, r, g, b);
      return ringColor;
    }
    private async void GridLoadedEvent(object sender, 
      RoutedEventArgs e)
    {
      //
      // Retrieve colors from Web service.
      //
      var client = new HttpClient();
      client.MaxResponseContentBufferSize = 1024 * 1024;
      //
      // Asynchronously call into the Web service.
      //
      var response = await client.GetAsync(
        new Uri("http://localhost:58428/api/values"));
      var result = await response.Content.ReadAsStringAsync();
      //
      // Parse the JSON data
      //
      var parsedResults = JsonArray.Parse(result);
      //
      // Build concentric circles, repeating colors as needed
      //
      const double startingPercentage = 1.0;
      const double desiredCircleCount = 50.0;
      for (int i = 0; i < desiredCircleCount; i++)
      {
        Color circleColor = CircleColorFromString(
          parsedResults[i % parsedResults.Count].GetString());
        int circleDiameter = Convert.ToInt32((startingPercentage –
          (i / desiredCircleCount)) * this.RenderSize.Width / 2.0);
        int top = Convert.ToInt32((this.RenderSize.Height -
          circleDiameter)/2.0);
        int left = Convert.ToInt32((this.RenderSize.Width -
          circleDiameter)/2.0);
        AddCircle(circleColor, circleDiameter, top, left);
      }
    }
}

Testen Sie jetzt die Anwendung, was recht einfach ist:

  1. Kehren Sie zum WebService-Projekt in Visual Studio zurück, und wählen Sie im Menü „Debuggen“ die Option „Debuggen starten“.
  2. Prüfen Sie, ob der Browser gestartet wird. Sie sind jetzt bereit, die Windows8Client-Anwendung zu starten.
  3. Kehren Sie zum Windows8Client-Projekt in Visual Studio zurück, und wählen Sie im Menü „Debuggen“ die Option „Debuggen starten“.
  4. Prüfen Sie, ob die Windows Store-Anwendung angezeigt wird, wie in Abbildung 8 dargestellt.

Bereitstellen des Webdienstes in Windows Azure

Sobald der Webdienst erstellt und lokal getestet wurde, besteht der nächste logische Schritt darin, ihn in der Cloud zum Zwecke der Skalierbarkeit bereitzustellen. So können Sie die dem Webdienst zugewiesene Computingkapazität – und die damit verbundenen Kosten – variieren, da sich die Anzahl der Anfragen von Windows 8-Geräten erhöht oder verringert. Visual Studio bietet verschiedene Möglichkeiten der Bereitstellung von ASP.NET Web API-Projekten in Windows Azure. Die einzige Voraussetzung besteht darin, dass der Webdienstlösung ein Clouddienstprojekt hinzugefügt werden muss. Führen Sie die folgenden Schritte aus:

  1. Klicken Sie mit der rechten Maustaste auf den Namen der Lösung, und wählen Sie „Hinzufügen | Neues Projekt“ aus.
  2. Wählen Sie „Visual C# | Cloud“ als Projektvorlage aus (Abbildung 12).
  3. Wählen Sie oben in der Dropdownliste „.NET Framework 4“.
  4. Wählen Sie „Windows Azure-Clouddienst Visual C#“ aus.
  5. Geben Sie den Namen „WindowsAzureCloudService“ und einen Speicherplatz Ihrer Wahl ein.
  6. Klicken Sie auf „OK“.
  7. Kehren Sie nun zum Projektmappen-Explorer zurück. Suchen Sie das neue Projekt in der Lösung, und klicken Sie mit der rechten Maustaste auf den Knoten „Rollen“. Wählen Sie „| Hinzufügen | Neues Webrollenprojekt“.
  8. Suchen Sie das zuvor erstellte WebService-Projekt. Wählen Sie es aus, und klicken Sie auf „OK“.
  9. Sie sollten jetzt das WebService-Projekt unter dem Knoten „Rollen“ wie in Abbildung 13 aufgeführt sehen.
  10. Sie können verschiedene Bereitstellungsparameter für die WebService-Rolle ändern, bevor Sie sie in Windows Azure bereitstellen, beispielsweise die Größe des virtuellen Computers (Virtual Machine; VM), auf dem sie gehostet werden soll, und die Anzahl der Instanzen, von denen sie unterstützt wird. Zum Prüfen dieser Parameter klicken Sie mit der rechten Maustaste auf den Knoten „WebService-Rolle “, und wählen Sie „Eigenschaften“ aus. Es wird ein Dialogfeld wie das in Abbildung 14 dargestellte Dialogfeld angezeigt. Achten Sie besonders auf die Anzahl der Instanzen und auf die Größenparameter für VM, die die Nutzungsrate nach der Bereitstellung der Rolle bestimmen. Weitere Informationen zum Preis von Windows Azure für Computinginstanzen finden Sie unter bit.ly/SnLj68.
  11. Klicken Sie mit der rechten Maustaste auf das WindowsAzureCloudService-Projekt, und wählen Sie „Paket“ aus. Behalten Sie jeweils die Standardauswahl für die Dienst- und Build-Konfigurationsparameter bei, und klicken Sie auf die Schaltfläche „Paket“. Durch diesen Vorgang werden zwei Dateien generiert: Windows­AzureCloudService.cspkg und ServiceConfiguration.Cloud.cscfg. Diese sind notwendig, um einen Clouddienst in Windows Azure über das Portal zu erstellen. Beachten Sie, dass Projekte direkt von Visual Studio aus bereitgestellt werden können. Dieser Ansatz wird hier von uns jedoch nicht behandelt.
  12. Melden Sie sich bei Ihrem Windows Azure-Konto an, indem Sie die URL manage.windowsazure.com öffnen. Folgen Sie dann den Instruktionen unter bit.ly/R15VNj zum Erstellen eines neuen Clouddienstes und zum Hochladen der beiden generierten Dateien.
  13. Je nachdem, welchen Namen Sie für den Clouddienst verwenden, steht die neue ASP.NET Web API unter http://{Name des Clouddienstes}.cloudapp.net/api/values zur Verfügung.
  14. Verweisen Sie die Windows Store-Anwendung auf diese URL – das war es schon.

Adding a Cloud Service Project to the Web Service Solution
Abbildung 12 Hinzufügen eines Clouddienstprojekts zur Webdienstlösung

Adding the WebService Project to a Cloud Service Role
Abbildung 13 Hinzufügen des Webdienstprojekts zu einer Clouddienstrolle

Windows Azure Deployment Properties for the WebService Role
Abbildung 14 Eigenschaften der Windows Azure-Bereitstellung für die WebService-Rolle

In der Cloud

Mithilfe der ASP.NET Web API lassen sich Anwendungen, die REST-Befehle für die Nutzung und Aufnahme von Daten über Webdienste asynchron verwenden, äußerst einfach unterstützen. Visual Studio 2012 und die in .NET Framework 4.5 enthaltenen Bibliotheken erleichtern die Ausgabe asynchroner Webanforderungen für einen Webdienst ganz erheblich. Und schließlich können Entwickler dank der Integration der Entwicklungsumgebung in Windows Azure den Dienstanteil schnell in der Cloud bereitstellen, indem sie die Skalierbarkeit und weltweiten Infrastrukturfunktionen nutzen, die die Cloud bietet.

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: Robert Green