Navigation überspringen

Erstellen einer weltweit verfügbaren mobilen App in Minuten mit Xamarin und DocumentDB

Veröffentlicht am 24 Januar, 2017

Principal Group Engineering Manager, Azure Cosmos DB

Stand: 10. Mai 2017

Azure Cosmos DB ist die global verteilte Datenbank von Microsoft mit Unterstützung mehrerer Modelle. Azure Cosmos DB wurde von Grund auf für globale Verteilung und horizontale Skalierbarkeit konzipiert. Der Dienst bietet eine schlüsselfertige globale Verteilung über beliebig viele Azure-Regionen hinweg, indem er Ihre Daten transparent skaliert und dort repliziert, wo Ihre Benutzer sie benötigen. Skalieren Sie Durchsatz und Speicherplatz elastisch auf der ganzen Welt, und bezahlen Sie nur für den Durchsatz und Speicherplatz, den Sie benötigen. Azure Cosmos DB garantiert Latenzen im einstelligen Millisekundenbereich im 99. Perzentil an jedem Ort der Welt, bietet mehrere gut definierte Konsistenzmodelle zur Optimierung der Leistung und garantiert Hochverfügbarkeit mit Multihostingfunktionen – all das unterstützt durch branchenführende Vereinbarungen zum Servicelevel (Service Level Agreements, SLAs).

Azure Cosmos DB ist wirklich schemaagnostisch und indiziert alle Daten automatisch, ohne dass Sie sich mit der Schema- oder Indexverwaltung beschäftigen müssen. Der Dienst unterstützt mehrere Datenmodelle wie Dokumente, Schlüssel-Wert-Paare, Diagramme und spaltenbasierte Modelle. Bei Azure Cosmos DB können Sie über die API Ihrer Wahl auf Ihre Daten zugreifen – DocumentDB SQL (Dokument), MongoDB (Dokument), Azure Table Storage (Schlüssel-Wert-Paar) und Gremlin (Diagramm) werden nativ unterstützt.


Für die meisten mobilen Apps ist es erforderlich, Daten in der Cloud zu speichern, und Azure DocumentDB ist eine fantastische Clouddatenbank für mobile Apps. Sie weist alle Funkionen auf, die ein Mobilentwickler benötigt: Es handelt sich um eine vollständig verwaltete NoSQL-Datenbank als Dienst (Database as a Service), die bedarfsabhängig skaliert werden und Ihre Daten an allen Orten, an denen sich Benutzer weltweit aufhalten, vollständig transparent für Ihre Anwendung bereitstellen kann. Wir freuen uns heute, das Azure DocumentDB SDK für die Mobilplattform Xamarin bekannt zu geben, mit dem mobile Apps ohne Zwischenebene direkt mit DocumentDB interagieren können.

Dies erhalten Mobilentwickler vorkonfiguriert mit DocumentDB:

DocDB Xamrin_300

  • Umfassende Abfragen für schemalose Daten. In DocumentDB werden Daten als schemalose JSON-Dokumente in heterogenen Sammlungen gespeichert, und Sie können umfassende und schnelle Abfragen verwenden, ohne sich um Schemas oder Indizes kümmern zu müssen.
  • Schnell. Garantiert: Mit DocumentDB dauert das Lesen und Schreiben von Dokumenten nur wenige Millisekunden. Entwickler können den benötigten Durchsatz angeben, der in DocumentDB mit SLAs von 99,99 % sichergestellt wird.
  • Unbegrenzte Skalierung: Ihre DocumentDB-Sammlungen wachsen mit Ihrer App. Sie können mit geringen Datengrößen und Hunderten von Anforderungen pro Sekunde beginnen und den Durchsatz dann beliebig auf Hunderte Millionen Anforderungen pro Sekunde und Daten im Petabytebereich erhöhen.
  • Globale Verteilung: Die Benutzer Ihrer mobilen App sind häufig auf der ganzen Welt unterwegs. DocumentDB ist eine global verteilte Datenbank, und mit nur einem Klick auf einer Karte werden die Daten an den Orten bereitgestellt, an denen sich die Benutzer befinden.
  • Integrierte Autorisierung: Mit DocumentDB können Sie gängige Muster wie benutzerspezifische Daten oder von mehreren Benutzern gemeinsam genutzte Daten ohne benutzerdefinierten komplexen Autorisierungscode ganz einfach implementieren.
  • Geoabfragen: Viele mobile Apps verfügen heute über Geokontextfunktionen. Dank der erstklassigen Unterstützung von Geotypen ist dies mit DocumentDB einfach umzusetzen.
  • Binäre Anlagen: Ihre App-Daten enthalten häufig binäre Blobs. Die native Unterstützung von Anlagen vereinfacht die Nutzung von DocumentDB als zentrale Anwendung für Ihre App-Daten.

Wie erstellen nun gemeinsam eine App.

Schritt 1. Erste Schritte

Die ersten Schritte mit DocumentDB sind sehr einfach: Navigieren Sie einfach zum Azure-Portal, und erstellen Sie ein neues DocumentDB-Konto. Wechseln Sie anschließend zur Registerkarte „Schnellstart“, und laden Sie ein Xamarin Forms-Beispiel für eine Aufgabenliste herunter, das bereits mit Ihrem DocumentDB-Konto verbunden ist. 

Abbildung

Falls Sie bereits über eine Xamarin-App verfügen, können Sie einfach dieses DocumentDB-NuGet-Paket hinzufügen. Derzeit werden Xamarin.iOS-, Xamarin.Android- und freigegebene Xamarin Forms-Bibliotheken unterstützt.

Schritt 2. Arbeiten mit Daten

Ihre Datensätze werden in DocumentDB als schemalose JSON-Dokumente in heterogenen Sammlungen gespeichert. Sie können Dokumente mit verschiedenen Strukturen in derselben Sammlung speichern.

Screenshot 2017-01-23 14.44.12

In Ihren Xamarin-Projekten können Sie in die Sprache integrierte Abfragen für schemalose Daten verwenden:

Screenshot 2017-01-23 14.47.29

Schritt 3. Hinzufügen von Benutzern

Wie bei vielen anderen Beispielen für die ersten Schritte, wird auch für das DocumentDB-Beispiel, das Sie zuvor heruntergeladen haben, eine Authentifizierung beim Dienst mit dem Masterschlüssel durchgeführt, der im Code der App hartcodiert ist. Dies ist für eine App, die Sie nicht nur in Ihrem lokalen Emulator ausführen möchten, selbstverständlich nicht zu empfehlen. Wenn ein Angreifer in den Besitz des Masterschlüssels gelangt, sind alle Daten Ihres DocumentDB-Kontos kompromittiert.

Stattdessen soll für die App nur Zugriff auf die Datensätze für den angemeldeten Benutzer bestehen. Mit DocumentDB können Entwickler für Anwendungen je nach Anforderungen Lese- oder Lese-/Schreibzugriff auf alle Dokumente in einer Sammlung, einen Dokumentsatz oder ein bestimmtes Dokument gewähren.

Hier erfahren Sie beispielsweise, wie Sie die Aufgabenlisten-App in eine App für mehrere Benutzer ändern. Eine vollständige Version des Beispiels ist hier verfügbar

  • Fügen Sie Ihrer App eine Anmeldung über Facebook, Active Directory oder einen anderen Anbieter hinzu.
  • Erstellen Sie eine DocumentDB-UserItems-Sammlung mit „/userId“ als Partitionsschlüssel. Indem Sie den Partitionsschlüssel für Ihre Sammlung angeben, kann DocumentDB beliebig skaliert werden, wenn die Zahl der App-Benutzer zunimmt, während weiterhin schnelle Abfragen möglich sind.
  • Fügen Sie den DocumentDB Resource Token Broker hinzu. Dies ist eine einfache Web-API, mit der die Benutzer authentifiziert und Token mit kurzer Gültigkeitsdauer für die angemeldeten Benutzer ausgestellt werden, die ausschließlich den Zugriff auf die Dokumente in der Partition des Benutzers erlauben. In diesem Beispiel hosten wir den Resource Token Broker in App Service.
  • Ändern Sie die App so, dass die Resource Token Broker-Authentifizierung mit Facebook durchgeführt wird, und fordern Sie die Ressourcentoken für den angemeldeten Facebook-Benutzer an. Greifen Sie anschließend auf die Benutzerdaten in der UserItems-Sammlung zu.  

In diesem Diagramm ist die Lösung dargestellt. Wir überlegen derzeit, Resource Token Broker durch die erstklassige Unterstützung von OAuth in DocumentDB zu beseitigen. Geben Sie diesem UserVoice-Beitrag eine positive Bewertung, wenn Sie das für eine gute Idee halten.

Token Broker

Wenn zwei Benutzer Zugriff auf dieselbe Aufgabenliste haben sollen, fügen wir dem Zugriffstoken im Resource Token Broker einfach weitere Berechtigungen hinzu. Das vollständige Beispiel finden Sie hier.

Schritt 4. Die Skalierung erfolgt bedarfsabhängig.

DocumentDB ist eine verwaltete Datenbank in Form eines Diensts (Database as a Service). Wenn die Zahl Ihrer Benutzer zunimmt, fällt für Sie kein Aufwand in Bezug auf die Bereitstellung von VMs oder die Erhöhung der Anzahl von Kernen an. Sie müssen DocumentDB lediglich mitteilen, wie viele Vorgänge pro Sekunde (Durchsatz) Ihre App benötigt. Sie können den Durchsatz über die Registerkarte „Skalieren“ im Portal angeben. Verwenden Sie dabei für den Durchsatz die Kennzahl Anforderungseinheiten pro Sekunde (Request Units per Second, RUs). Für einen Lesevorgang bei einem Dokument mit 1 KB wird z. B. 1 RU benötigt. Sie können auch Warnungen für die Metrik zum „Durchsatz“ hinzufügen, um die Zunahme des Datenverkehrs zu überwachen und den Durchsatz bei der Auslösung von Warnungen programmgesteuert zu ändern.

Abbildung  

Schritt 5. Weltweite Verfügbarkeit.

Wenn die Beliebtheit Ihrer App zunimmt, erreichen Sie möglicherweise Benutzer auf der ganzen Welt. Vielleicht möchten Sie aber auch nur auf der sicheren Seite sein, falls ein Meteorit die Azure-Rechenzentren trifft, in denen Sie Ihre DocumentDB-Sammlung erstellt haben. Navigieren Sie im Azure-Portal zu Ihrem DocumentDB-Konto, und legen Sie durch einen Klick auf eine Karte fest, dass Ihre Daten fortlaufend in einer beliebigen Anzahl von Regionen weltweit repliziert werden sollen. So wird sichergestellt, dass Ihre Daten überall dort verfügbar sind, wo sich Ihre Benutzer befinden. Außerdem können Sie Failoverrichtlinien hinzufügen, um auf Notfälle vorbereitet zu sein.

Abbildung

Wir hoffen, Sie finden diesen Blogbeitrag und die Beispiele nützlich, um DocumentDB in Ihrer Xamarin-Anwendung einzusetzen. Ein ähnliches Muster kann in Cordova-Apps genutzt werden, indem Sie das DocumentDB-JavaScript SDK verwenden, sowie in nativen iOS-/Android-Apps, indem Sie DocumentDB-REST-APIs einsetzen.

Teilen Sie uns wie immer über UserVoice, Stack Overflow #azure-documentdb oder Twitter @DocumentDB mit, was Sie von unseren Beiträgen halten und welche Verbesserungen Sie sich zukünftig für DocumentDB wünschen.