Omitir navegación

Cómo compilar una aplicación móvil a escala mundial en minutos con Xamarin y DocumentDB

Publicado el 24 enero, 2017

Principal Group Engineering Manager, Azure Cosmos DB

Desde el 10 de mayo de 2017,

Azure Cosmos DB es una base de datos multimodelo de Microsoft distribuida globalmente. Azure Cosmos DB se creó desde el principio con la distribución global y el escalado horizontal como características fundamentales. Ofrece distribución global llave en mano en cualquier número de regiones de Azure, con un proceso transparente de escalado y replicación de los datos dondequiera que estén los usuarios. Escale el rendimiento y el almacenamiento de forma elástica en todo el mundo y pague solo por la cantidad que necesite. Azure Cosmos DB garantiza una latencia inferior a 10 milisegundos el 99 % del tiempo en cualquier parte del mundo, ofrece varios modelos de coherencia bien definidos para ajustar el rendimiento y garantiza alta disponibilidad con funcionalidades de multi-homing, todo ello respaldado por excelentes acuerdos de nivel de servicio (SLA).

Azure Cosmos DB es realmente independiente del esquema; indexa automáticamente todos los datos sin necesidad de administrar esquemas ni índices. Es también multimodelo, admite de forma nativa modelos de datos de documentos, pares clave-valor, grafos y en columnas. Con Azure Cosmos DB, puede acceder a sus datos con las API que prefiera, como DocumentDB SQL (documentos), MongoDB (documentos), Azure Table Storage (clave-valor) y Gremlin (grafos), que admite de forma nativa.


La mayoría de las aplicaciones móviles necesitan almacenar los datos en la nube, y Azure DocumentDB es una base de datos de nube excelente para aplicaciones móviles. Tiene todo lo que necesita un desarrollador móvil, una base de datos como servicio NoSQL completamente administrada que se escala a petición, y puede llevarle sus datos allí donde vayan sus usuarios en todo el mundo, de forma totalmente transparente para la aplicación. Hoy nos complace anunciar el SDK de Azure DocumentDB para la plataforma móvil de Xamarin, lo que permite que las aplicaciones móviles interactúen directamente con DocumentDB, sin un nivel intermedio.

Aquí le presentamos lo que obtienen los desarrolladores móviles con DocumentDB:

DocDB Xamrin_300

  • Consultas completas sobre datos sin esquema. DocumentDB almacena los datos como documentos JSON sin esquema en colecciones heterogéneas, y ofrece consultas completas y rápidas sin necesidad de preocuparse por esquemas o índices.
  • Con rapidez. Garantizada. Solo se tarda unas milésimas de segundos en leer y escribir documentos con DocumentDB. Los desarrolladores pueden especificar el rendimiento que necesitan y DocumentDB lo respeta con Acuerdos de Nivel de Servicio (SLA) del 99,99 %.
  • Escala ilimitada. Las colecciones de DocumentDB crecen a medida que la aplicación crece. Puede comenzar con un tamaño pequeño de datos y cientos de solicitudes por segundo y crecer hasta un rendimiento arbitrariamente grande de decenas y centenas de millones de solicitudes por segundo de rendimiento y petabytes de datos.
  • Distribución global. Los usuarios de aplicaciones móviles están moviéndose de un lado para otro, con frecuencia por todo el mundo. DocumentDB es una base de datos distribuida globalmente, y con un solo clic en un mapa llevará los datos allí donde estén los usuarios.
  • Autorización completa integrada. Con DocumentDB, puede implementar fácilmente patrones conocidos como datos por usuario o datos compartidos por varios usuarios sin un código de autorización personalizado complejo.
  • Consultas geoespaciales. Muchas aplicaciones móviles ofrecen en la actualidad experiencias en contexto geográfico. Gracias a la compatibilidad de primera clase con tipos geoespaciales, DocumentDB permite que estas experiencias sean fáciles de conseguir.
  • Datos adjuntos binarios. Los datos de aplicaciones a menudo incluyen blobs binarios. La compatibilidad nativa con datos adjuntos facilita el uso de DocumentDB como tienda integral para los datos de las aplicaciones.

Creemos juntos una aplicación.

Paso n. 1 Introducción

Comenzar a usar DocumentDB es muy fácil. Simplemente vaya a Azure Portal, cree una nueva cuenta de DocumentDB, vaya a la pestaña Inicio rápido y descargue un ejemplo de "lista de tareas pendientes" de Xamarin Forms, ya conectado a su cuenta de DocumentDB. 

image

O bien, si ya tiene una aplicación de Xamarin, puede agregarla a este paquete NuGet de DocumentDB. Actualmente, se admiten bibliotecas compartidas de Xamarin.IOS, Xamarin.Android y Xamarin Forms.

Paso n. 2 Trabajar con datos

Los registros de datos se almacenan en DocumentDB como documentos JSON sin esquema en colecciones heterogéneas. Puede almacenar documentos con diferentes estructuras en la misma colección.

Captura de pantalla 2017-01-23 14.44.12

En sus proyectos de Xamarin, puede usar consultas integradas de lenguaje sobre datos sin esquema:

Captura de pantalla 2017-01-23 14.47.29

Paso n. 3 Agregar usuarios

Al igual que muchos otros ejemplos de introducción, el ejemplo de DocumentDB que ha descargado anteriormente se autentica en el servicio mediante claves maestras codificadas en el código de la aplicación. Por supuesto, esto no es una buena idea para una aplicación que pretende ejecutar en cualquier parte, excepto en su emulador local. Si un atacante consiguiera la clave maestra, todos los datos de su cuenta de DocumentDB se verían comprometidos.

Por eso queremos que nuestra aplicación solo tenga acceso a los registros del usuario que ha iniciado sesión. DocumentDB permite a los desarrolladores conceder acceso de lectura o de lectura y escritura a la aplicación a todos los documentos en una colección, un conjunto de documentos o un documento específico, según sea necesario.

Aquí, por ejemplo, mostramos cómo convertir nuestra aplicación de lista de tareas pendientes en una aplicación de "lista de tareas pendientes" para varios usuarios. Aquí puede ver una versión completa del ejemplo: 

  • Agregue el inicio de sesión a la aplicación, mediante Facebook, Active Directory o cualquier otro proveedor.
  • Cree una colección UserItems de DocumentDB con /userId como clave de partición. Al especificar la clave de partición para su colección, DocumentDB puede escalar hasta el infinito a medida que crece el número de usuarios de nuestra aplicación, al mismo tiempo que ofrece consultas rápidas.
  • Agregue Resource Token Broker de DocumentDB, una API web sencilla que autentica a los usuarios y emite tokens de corta duración a los usuarios conectados con acceso únicamente a los documentos dentro de la partición del usuario. En este ejemplo, hospedamos Resource Token Broker en App Service.
  • Modifique la aplicación para autenticarse en Resource Token Broker con Facebook y solicitar los tokens de recursos para el usuario que ha iniciado sesión en Facebook, y luego acceda a los datos de los usuarios de la colección UserItems.  

Este diagrama ilustra la solución. Estamos investigando la eliminación de la necesidad de Resource Token Broker mediante la compatibilidad con OAuth en la primera clase de DocumentDB. Vote a favor de este elemento de UserVoice si cree que es una buena idea.

tokenbroker

Ahora, si queremos que dos agentes obtengan acceso a la misma "lista de tareas pendientes", agregamos permisos adicionales al token de acceso en Resource Token Broker. Puede encontrar el ejemplo completo aquí.

Paso n. 4 Escalado a petición.

DocumentDB es una base de datos como servicio administrada. A medida que crece su base de usuarios, no es necesario preocuparse de aprovisionar máquinas virtuales o de aumentar los núcleos. Todo lo que tiene que hacer es indicar a DocumentDB cuántas operaciones por segundo (rendimiento) necesita su aplicación. Puede especificar el rendimiento mediante la pestaña Escala del portal usando una medida del rendimiento llamada Unidades de solicitud (RU) por segundo (RU). Por ejemplo, una operación de lectura en un documento de 1 KB requiere 1 RU. Puede agregar también alertas para la métrica "Rendimiento" con el fin de supervisar el crecimiento del tráfico y cambiar mediante programación el rendimiento cuando se disparen las alertas.

image  

Paso n. 5 Escale a nivel mundial

A medida que su aplicación gane popularidad, puede que consiga usuarios de todo el mundo. O puede que no quiera que le pillen con la guardia baja si un meteorito se estrella contra los centros de datos de Azure donde creó su colección de DocumentDB. Vaya a Azure Portal, acceda a su cuenta de DocumentDB y con un clic en un mapa, sus datos se replicarán continuamente en cualquier cantidad de regiones en todo el mundo. Esto garantiza que los datos estén disponibles siempre que lo estén los usuarios. Además, puede agregar directivas de conmutación por error para estar preparado para ese día.

image

Esperamos que este blog y estos ejemplos le resulten útiles para aprovechar DocumentDB en su aplicación de Xamarin. Se puede usar un patrón similar en aplicaciones de Cordova mediante el SDK de JavaScript para DocumentDB, y en aplicaciones nativas de iOS/Android con las API de REST de DocumentDB.

Como siempre, infórmenos sus comentarios y qué mejoras le gustaría ver más adelante para DocumentDB mediante UserVoice, StackOverflow #azure-documentdb o Twitter @DocumentDB.