> For the complete documentation index, see [llms.txt](https://elguerre.gitbook.io/de0an/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://elguerre.gitbook.io/de0an/capitulo-7-la-construccion.-accediendo-a-los-datos/introduccion.md).

# Introducción

*La pantalla “Acerca de” ya está completa, la de bienvenida seguirá sufriendo cambios hasta el final, puesto que es el punto de partida y navegación principal de nuestra aplicación y queremos que sea, cuanto menos, ágil en la carga de datos y veloz en su apertura.*

*Hablaremos en primer lugar sobre cómo almacenar los datos, veremos diferentes tipos de repositorios, distintos proveedores para el acceso a los mismos y las entidades o esquemas que los soportarán.*

*Durante este capítulo, conseguiremos todo ello, con el punto de mira en el almacenamiento local de ficheros (“**Local*** ***Storage**”) y en **SQLite** como base de datos relacional y local. Conoceremos también cómo utilizar Microsoft Azure para crear un API de acceso a datos con repositorio en SQL Database (SQL Azure) y, aprenderemos a hacer uso del Storage para almacenar imágenes. Todo ello con el fin de compartir datos entre distintos dispositivos.*

*Crearemos también un gestor de trazas, de manera que seamos capaces de saber en todo momento qué está ocurriendo en nuestra aplicación.*

***

## Introducción

Antes de proceder con la implementación de un nuevo requisito es importante liberar el código pendiente, haciendo *Merge* en la rama *main*. Así, mientras la aplicación esté en proceso de pruebas según la funcionalidad liberada en la rama *main*, continuaremos desarrollando en la rama *dev* aportando mayor funcionalidad a la aplicación incorporando nuevos requisitos.

Antes de comenzar a crear el diseño de las pantallas de proyectos y tareas, veamos cuál será la representación para el almacenamiento de los datos proporcionados por la edición de las mismas. A partir de esta información, la aplicación será capaz de mostrarla tanto en modo edición como en modo de detalle, agrupada en listados, o permitiendo búsquedas y/o filtros.

Existen múltiples posibilidades para el **repositorio** de almacenamiento, pero todas ellas con un objetivo común. Una estructura equivalente para la representación y el tratamiento de los datos:

* Local.
  * Storage. Sistema de ficheros.
  * Base de datos locales/embebidas: Realm o SQLite.
* Remota
  * Microsoft OneDrive. Sistema de ficheros en la nube (Cloud).
  * Servicios Web / API. Esencialmente servicios Web basados en el estándar RESTful / JSON.

El repositorio local es suficiente para una pequeña aplicación con un propósito concreto. Bastará con que ésta pueda hacer persistir los datos entre cada sesión de la aplicación para que sea útil y cumpla con su objetivo. Sin embargo, no siempre será suficiente con ello, por lo que los repositorios o almacenamientos remotos se hacen necesarios para poder trabajar en diferentes dispositivos y compartir la información entre todos ellos.

Como recomendación, para el almacenamiento local utilizaremos **SQLite** como base de datos relacional embebida y, en cuanto al almacenamiento remoto, utilizaremos un repositorio **SQL Database** (conocido también como SQL Azure), al que accederemos a través de un API de Servicios Web basada en RESTful y JSON.

Para conseguir poner en marcha lo anterior crearemos varios nuevos proyectos:

* API de servicios con repositorio SQL.
* Data.
* Business.
