Windows Azure Mobile Services adressieren einen häufigen Bedarf im Zusammenhang mit „Connected Mobile Apps“, d.h. leichtgewichtigen Anwendungen, die auf mobilen Endgeräten ausgeführt und häufig über Backend-Services vernetzt sind. Über diese Dienste tauschen die einzelnen Clients Daten aus, speichern Daten, führen Authentifizierung durch etc. Mobile Services bieten eine Sammlung genau solcher, häufig benötigter Dienste auf Windows Azure an. Zu diesen Diensten gehören unter anderem folgende Funktionen:

· Integrierte Benutzerauthentifizierung

· Speicherung von Daten im Table Service oder SQL Database

· Nachrichtenversand (SMS und E-Mail)

· Push Notifications

· Zugriffskontrolle

· Eingabevalidierung

Die vorkonfigurierten Windows Azure Mobile Services können sehr einfach als Backend-Dienste für Windows 8, Windows Phone 8 und iOS Anwendungen (in Zukunft auch Android) ohne größeren Programmieraufwand eingesetzt werden. Die Entwicklung einfacher mobiler Anwendungen, die Cloud Dienste nutzen sollen, vereinfacht sich dadurch deutlich.

In diesem Artikel beschreibe ich, wie mit wenigen Schritten eine kleine Windows 8 Anwendung erstellt werden kann, die Daten in einem Mobile Services ablegt. Zugriffe auf den Datenspeicher des Mobile Service sollen nur authentifiziert erfolgen können. Dabei sollen authentifizierte Anwender nur ihre eigenen Daten sehen können.

Die Erstellung einer mobilen Windows 8 Anwendung, die über Mobile Services Benachrichtigungen erhält, erfolgt in drei Schritten.

1. Anlegen eines Windows Azure Mobile Service

2. Download einer Windows 8 App zum Mobile Service

3. Konfiguration der Authentifizierungsanforderungen

4. Personalisierung der zu speichernden Daten

Folgende Voraussetzungen müssen gegeben sein, wenn Sie die Anleitungen durchgehen wollen:

· Windows Azure Account
Sofern Sie noch keinen Windows Azure Account haben, legen Sie sich am besten einen kostenlosen 90-Tage-Testaccount an. Mit diesem stehen Ihnen alle Möglichkeiten von Windows Azure für Ihre erste Cloud-basierte Connected Mobile App offen.

· Visual Studio 2012
Wenn Sie keine kommerzielle Version von Visual Studio besitzen, können Sie die Übungen auch mit dem kostenlosen Visual Studio Express 2012 for Windows 8 machen.

· Entwicklerressourcen:
SDK für Mobile Services
Windows 8 Entwickleraccount

Schritt 1: Anlegen eines Windows Azure Mobile Service

1. Öffnen Sie das Windows Azure Management Portal (http://manage.windowsazure.com/).

2. Legen Sie einen neuen Windows Azure Mobile Service an. Wählen Sie hierzu im Menü links den Punkt Mobile Services. Klicken Sie im Menü unten auf den Punkt New und wählen Sie im erweiterten Menü den Punkt Server / Mobile Service / Create.
clip_image002
Geben Sie in den folgenden Eingabemasken die erforderlichen Daten (URL des mobilen Service, Datenbank, Azure Subscription, Rechenzentrum etc.) ein und bestätigen Sie Ihre Eingabe mit Complete.
clip_image004
clip_image006

3. Legen Sie nun eine Tabelle zur Speicherung von Aufgaben an. Öffnen Sie hierzu die Quick Start Seite für die Code Snippets für die Windows 8 Anwendung. Klicken Sie hierzu auf das kleine Quick Start Icon (die kleine Wolke mit dem Blitz). Wählen Sie den Link Create a new Windows Store App. Klicken Sie auf die Schaltfläche Create TodoItem Table.

Der mobile Service ist nun angelegt und kann von einer Windows 8 App verwendet werden, um Aufgaben zu speichern.

Schritt 2: Download einer Windows 8 App zum Mobile Service

Für dieses Beispiel soll keine neue Windows 8 App angelegt sondern eine vorgefertigte App zum Zugriff und Anzeigen von Aufgaben verwendet werden.

1. Laden Sie die Visual Studio Vorlage für die Windows 8 App herunter. Hierfür finden Sie in der Quick Start Seite des Mobile Service unter Punkt 3 die Möglichkeit, eine Projektvorlage für eine C# und für JavaScript. Klicken Sie auf die Schaltfläche Download. Damit wird Ihnen eine als ZIP-Datei paketierte Visual Studio Solution zum Download angeboten.

2. Entpacken Sie die ZIP-Datei.

3. Öffnen Sie die Solution in Visual Studio.

4. Führen Sie die Solution aus. Wählen Sie hierzu die Funktionstaste F5. Dies führt die Anwendung aus.
clip_image008
Geben Sie ein paar Aufgaben ein.

5. Verifizieren Sie die erfolgreiche Speicherung der Daten im Portal. Wechseln Sie hierzu ins Azure Management-Portal in den Mobile Service. Wählen Sie dort den Menüpunkt Data. Es werden alle Tabellen dieses Service aufgelistet (im Beispiel nur eine Tabelle, die TodoItem-Tabelle).

6. Lassen Sie sich die Inhalte der Aufgabentabelle anzeigen. Klicken Sie auf den Tabellennamen TodoItem. Es erscheinen alle Inhalte der Tabelle.
clip_image010

Damit haben Sie eine Windows 8 Anwendung, die mit dem Mobile Service kommunizieren kann, um Inhalte für die Aufgabenliste zu speichern und anzuzeigen.

Über die bisher erstellte Anwendung können beliebige Anwender, die über diese Anwendung verfügen, Daten in die Aufgabenliste einstellen und sich alle Daten anzeigen lassen. In den beiden folgenden Schritten soll die Gesamtlösung so abgeändert werden, dass sich Anwender zum einen Authentifizieren müssen und zum anderen nur ihre eigenen Aufgaben lesen und schreiben können.

Schritt 3: Konfiguration der Authentifizierungsanforderungen

In diesem Schritt soll die Authentifizierung von Anwendern konfiguriert und der Zugriff auf die Aufgabenliste auf Anwender beschränkt werden, die sich über einen Microsoft Account (ehemals Windows Live ID) authentifiziert haben.

1. Ermitteln Sie die Service-URL Ihres Mobile Service. Öffnen Sie den Mobile Service und wechseln Sie auf die Dashboard-Seite des Dienstes. Dort finden Sie rechts unten die Service-URL. Kopieren Sie diese URL in die Zwischenablage.
clip_image012

2. Registrieren Sie Ihren Mobile Service beim Microsoft Account (ehemals Windows Live ID). Wechseln Sie hierzu auf das Live Connect Developer Center (http://go.microsoft.com/fwlink/p/?LinkId=262039&clcid=0x409). Ggf. müssen Sie sich mit Ihrem Microsoft Account authentifizieren. Wählen Sie dort den Menüpunkt Anwendung erstellen. Geben Sie einen gültigen Anwendungsnamen ein und bestätigen Sie die Nutzungsbedingungen.
clip_image014
Fügen Sie in der folgenden Seite dann die URL Ihres Service als Umleitungsdomäne ein und speichern Sie Ihre Eingabe. Kopieren Sie sich außerdem die Werte für die Client-ID und den geheimen Clientschlüssel. Das sind die Authentifizierungsdaten, mit denen sich der Mobile Service am Live Connect Center anmeldet, um Benutzer zu authentifizieren.

3. Konfigurieren Sie den Mobile Service mit den Einstellungen des Microsoft Accounts. Wechseln Sie zurück zum Mobile Service. Wählen Sie den Menüpunkt Identity. Fügen Sie unter Microsoft Account Settings nun die Werte der Client-ID und den geheimen Clientschlüssel ein und Bestätigen Sie Ihre Eingaben mit Save.
clip_image016

4. Beschränken Sie den Zugriff auf die Aufgabenliste auf authentifizierte Anwender. Wechseln Sie im Mobile Service dann auf den Abschnitt Data. Wählen Sie die TodoItem-Tabelle aus und wählen Sie den Menüpunkt Permissions. Ändern Sie dort die Berechtigungsanforderungen aller Zugriffsmethoden auf den Wert Only Authenticated Users. Bestätigen Sie Ihre Eingabe mit Save.
clip_image018

5. Erweitern Sie die Windows 8 Anwendung um Authentifizierungslogik. Öffnen Sie die Windows 8 Anwendung in Visual Studio und öffnen Sie dort die Datei mainpage.xaml.cs. Fügen Sie dort folgendes using-Statement ein:

using Windows.UI.Popups;

Erweitern Sie die MainPage-Klasse um folgende Methode:

private MobileServiceUser user;
private async System.Threading.Tasks.Task Authenticate()
{
while (user == null)
{
string message;
try
{
user = await App.MobileService
.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
message =
string.Format("Sie sind jetzt angemeldet als {0}", user.UserId);
}
catch (InvalidOperationException)
{
message = "Sie müssen sich zuerst anmelden.";
}
var dialog = new MessageDialog(message);
dialog.Commands.Add(new UICommand("OK"));
await dialog.ShowAsync();
}
Erweitern Sie die Methode OnNavigatedTo() wie folgt:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
await Authenticate();
RefreshTodoItems();
}

Damit ist die Anwendung so umgestaltet, dass sie eine Benutzeranmeldung beim Microsoft Account fordert. Testen Sie die Anwendung mit F5.

Einziges Manko ist nun noch, dass auch angemeldete Benutzer alle Aufgaben aller Anwender sehen können. Im Folgenden sollen die Zugriffe auf eigene Aufgaben beschränkt werden.

Schritt 4: Personalisierung der zu speichernden Daten

Der Mobile Service soll nun so umgestellt werden, dass er zum einen mitführt, welche Einträge von welchem User eingestellt wurden und an Anwender nur die diesem Anwender zugehörigen Einträge ausliefert.

1. Erweitern Sie das Skript zur Speicherung von Einträgen. Wählen Sie die TodoItem-Tabelle und wählen Sie dort den Menüpunkt Script. Ändern Sie das Insert-Skript wie folgt und speichern Sie Ihre Eingabe.

function insert(item, user, request) {
item.userId = user.userId;
request.execute();
}
Dies schreibt die User-ID in jeden einzufügenden Eintrag.

2. Erweitern Sie das Skript zum Auslesen von Einträgen.

function read(query, user, request) {
query.where({ userid: user.userId});
request.execute();
}
Damit ist die Gesamtanwendung fertig. Testen Sie sie mit F5 und prüfen Sie Ihre Eingaben. Sie sollten nur solche Einträge angezeigt bekommen, die mit Ihrer User-ID versehen sind.

Über den Autor

hsirtl

Holger Sirtl ist seit 2006 als Architekturberater bei Microsoft in München tätig und berät in dieser Rolle Unternehmen im Aufbau .NET-basierter Anwendungsarchitekturen. Schwerpunktthemen seiner Arbeit sind Cloud Computing mit der Windows Azure Platform, Office-Business-Applikationen (OBA) sowie Microsofts "Software plus Services"-Strategie. Holger betreibt auch einen ausführlichen Windows Azure Blog