Passer la navigation

Création d’une application mobile à l’échelle de la planète en quelques minutes avec Xamarin et DocumentDB

Publié le 24 janvier, 2017

Principal Group Engineering Manager, Azure Cosmos DB

Depuis le 10 mai 2017,

Azure Cosmos DB est un service de base de données multimodèle mondialement distribué de Microsoft. Le service Azure Cosmos DB repose sur une distribution mondiale et sur une scalabilité horizontale. Il offre une distribution mondiale clé en main sur un nombre illimité de régions Azure grâce à une scalabilité et à une réplication transparentes de vos données, quel que soit l’emplacement de vos utilisateurs. Bénéficiez d’une scalabilité élastique du débit et du stockage dans le monde entier et payez uniquement le débit et le stockage dont vous avez besoin. Azure Cosmos DB garantit des latences en millisecondes à un chiffre au 99e centile partout dans le monde, offre de multiples modèles de cohérence bien définis afin d’affiner les performances, et garantit une disponibilité optimale grâce à des fonctionnalités d’hébergement multiple, le tout régi par les meilleurs contrats SLA du secteur.

Le service Azure Cosmos DB est une véritable base de données sans schéma qui indexe automatiquement toutes les données sans aucune intervention de votre part en matière de gestion des schémas et des index. Il est également multimodèle ; les modèles de données de types documents, valeurs clés, graphiques et colonnes sont pris en charge de manière native. Azure Cosmos DB vous permet d’accéder à vos données à l’aide des API de votre choix, sachant que les API SQL DocumentDB (document), MongoDB (document), Stockage Table Azure (valeur clé) et Gremlin (graphe) sont toutes prises en charge de manière native.


La plupart des applications mobiles doivent stocker des données dans le cloud et Azure DocumentDB est une formidable base de données cloud pour les applications mobiles. Ce service dispose de tout ce dont un développeur mobile a besoin : une base de données NoSQL en tant que service entièrement managée qui s’adapte à la demande et qui peut apporter vos données là où vos utilisateurs vont dans le monde entier, de manière complètement transparente à votre application. Aujourd’hui, nous sommes ravis d’annoncer la plateforme mobile Azure DocumentDB SDK pour Xamarin, qui permet aux applications mobiles d’interagir directement avec DocumentDB, sans niveau intermédiaire.

Voici ce que les développeurs mobiles obtiennent avec DocumentDB :

DocDB Xamrin_300

  • Requêtes riches sur des données sans schéma. DocumentDB stocke les données en tant que documents JSON sans schéma dans des collections hétérogènes et offre des requêtes riches et rapides sans avoir à s’occuper des schémas ou des index.
  • Rapidité. Conformité. Seules quelques millisecondes sont nécessaires pour lire et écrire des documents avec DocumentDB. Les développeurs peuvent spécifier le débit dont ils ont besoin et DocumentDB le respecte avec des contrats SLA de 99,99 %.
  • Mise à l’échelle illimitée. Vos collections DocumentDB augmentent à mesure que votre application grandit. Vous pouvez démarrer avec un volume de données minime et des centaines de demandes par seconde et atteindre arbitrairement un débit de dizaines et centaines de millions de demandes par seconde et des pétaoctets de données.
  • Distribution à l’échelle mondiale. Les utilisateurs votre application mobile sont en déplacement, souvent aux quatre coins du monde. DocumentDB est une base de données distribuée mondialement, et avec un simple clic sur une carte, elle apporte les données là où se trouvent vos utilisateurs.
  • Autorisation riche intégrée. Avec DocumentDB, vous pouvez facilement implémenter des modèles populaires comme les données par utilisateur ou les données partagées entre plusieurs utilisateurs sans un code d’autorisation complexe personnalisé.
  • Requêtes géospatiales. Beaucoup d’applications mobiles proposent aujourd’hui des expériences géocontextuelles. Avec la prise en charge de première classe des types géospatiaux, DocumentDB rend ces expériences très faciles à accomplir.
  • Pièces jointes binaires. Vos données d’application incluent souvent des blobs binaires. La prise en charge native des pièces jointes simplifie l’utilisation de DocumentDB comme guichet unique pour les données de votre application.

Créons une application ensemble.

Étape 1. Démarrer

Pour commencer à utiliser DocumentDB, il vous suffit d’accéder au portail Azure, de créer un compte DocumentDB, puis de cliquer sur l’onglet Démarrage rapide et de télécharger un exemple de « liste des tâches » Xamarin Forms, déjà connecté à votre compte DocumentDB. 

image

Ou si vous disposez déjà d’une application Xamarin, vous pouvez ajouter ce package NuGet DocumentDB. Aujourd’hui, nous prenons en charge les bibliothèques partagées Xamarin.IOS, Xamarin.Android et Xamarin Forms.

Étape 2. Utiliser les données

Vos enregistrements de données sont stockés dans DocumentDB en tant que documents JSON sans schéma dans des collections hétérogènes. Vous pouvez stocker des documents avec des structures différentes dans la même collection.

Capture d’écran 2017-01-23 14.44.12

Dans vos projets Xamarin, vous pouvez utiliser des requêtes intégrées au langage sur des données sans schéma :

Capture d’écran 2017-01-23 14.47.29

Étape 3. Ajouter des utilisateurs

À l’instar de nombreux exemples de prise en main, l’exemple DocumentDB que vous avez téléchargé ci-dessus s’authentifie auprès du service à l’aide de la clé principale codée en dur dans le code de l’application. Cette pratique n’est bien évidemment pas judicieuse si vous essayez d’exécuter une application n’importe où sauf sur votre émulateur local. Si un pirate obtient la clé principale, toutes les données de votre compte DocumentDB sont compromises.

Au lieu de cela, nous voulons que notre application n’ait accès qu’aux enregistrements pour l’utilisateur connecté. DocumentDB permet aux développeurs d’accorder un accès en lecture ou en lecture/écriture à l’application pour tous les documents d’une collection, un ensemble de documents ou un document spécifique, en fonction des besoins.

Voici, par exemple, comment modifier notre application de liste de tâches en application de « liste de tâches » multi-utilisateur, dont une version complète de l’exemple est disponible ici : 

  • Ajoutez une connexion à votre application, à l’aide de Facebook, d’Active Directory ou d’un autre fournisseur.
  • Créez une collection DocumentDB UserItems collection avec /userId comme clé de partition. Le fait de spécifier une clé de partition pour votre collection permet à DocumentDB d’effectuer une mise à l’échelle infinie à mesure que le nombre d’utilisateurs de notre application augmente, tout en offrant des requêtes rapides.
  • Ajoutez DocumentDB Resource Token Broker, une API web simple qui authentifie les utilisateurs et émet des jetons de courte durée pour les utilisateurs connectés avec un accès limité aux documents se trouvant au sein de la partition de l’utilisateur. Dans cet exemple, nous hébergeons Resource Token Broker dans App Service.
  • Modifiez l’application pour qu’elle propose une authentification auprès de Resource Token Broker avec Facebook et demande les jetons de ressource pour l’utilisateur Facebook connecté, puis accède aux données utilisateur dans la collection UserItems.  

Ce schéma illustre la solution : Nous cherchons à éliminer le besoin d’utiliser Resource Token Broker en prenant en charge OAuth dans DocumentDB. Veuillez voter pour cet élément uservoice si vous pensez que c’est une bonne idée !

tokenbroker

Si nous voulons maintenant que deux utilisateurs puissent accéder à la même « liste des tâches », nous devons ajouter des autorisations supplémentaires au jeton d’accès dans Resource Token Broker. L’exemple complet est disponible ici.

Étape 4. Mettre à l’échelle à la demande

DocumentDB est une base de données managée en tant que service. À mesure que votre base d’utilisateurs augmente, vous n’avez pas à vous soucier de la configuration des machines virtuelles ou de l’augmentation du nombre de cœurs. Il vous suffit d’indiquer à DocumentDB quel est le nombre d’opérations par seconde (débit) dont votre application a besoin. Vous pouvez spécifier le débit via l’onglet Mise à l’échelle du portail à l’aide d’une mesure de débit appelée Unités de requête par seconde. Par exemple, l’opération de lecture d’un document de 1 Ko nécessite 1 unité de demande. Vous pouvez également ajouter des alertes pour la mesure « Débit », afin de surveiller la croissance du trafic et de modifier le débit par programme quand des alertes se déclenchent.

image  

Étape 5. Développer à l’échelle de la planète

À mesure que votre application gagne en popularité, vous pouvez acquérir des utilisateurs des quatre coins du monde. Ou, vous ne souhaitez simplement pas être pris au dépourvu si une météorite tombe sur les centres de données Azure dans lesquels vous avez créé votre collection DocumentDB. Accédez au portail Azure, à votre compte DocumentDB et en un clic sur une carte, rendez la réplication de vos données possible en continu dans le nombre de régions du monde que vous voulez. Cela garantit la disponibilité de vos données dans tous les endroits où vos utilisateurs se trouvent, et vous pouvez ajouter des stratégies de basculement pour être prêt en cas de problèmes.

image

Nous espérons que vous trouverez ce blog et ces exemples utiles pour tirer parti de DocumentDB dans votre application Xamarin. Un modèle similaire peut être utilisé dans les applications Cordova à l’aide du SDK JavaScript DocumentDB, ainsi que dans les applications iOS/Android natives à l’aide des API REST DocumentDB.

Comme toujours, envoyez-nous vos commentaires et indiquez-nous les améliorations que vous souhaiteriez voir apportées à DocumentDB via UserVoice, StackOverflow #azure-documentdb ou Twitter @DocumentDB.