Você realmente precisa de um banco de dados mobile?

Padrão

Fala Jovem!

Nas últimas semanas alguns clientes e amigos tem me perguntando muito sobre Realm ou SqLite? Qual é melhor? Etc Etc Etc… Vejo uma dose muito alta de empolgação dos desenvolvedores em usar um bancos Mobile em suas aplicações. Mas precisamos analisar com calma essa decisão.  Faça a seguinte pergunta:

Meu app precisa de um banco de dados?

Em muitos casos a resposta será não.

Vamos a um exemplo: Você tem um app que exibi os pontos turísticos de uma cidade (Nome, descrição, Local…) e deseja que essa aplicação possa funcionar off-line.

Nesse caso você pode criar um back-end para o cliente cadastrar os dados via web. Nem precisa ser uma API REST ou similares. Seu back-end web pode só gerar um arquivo Json com as informações necessárias a medida que elas são criadas/atualizadas.  Seu app  carrega esse .json quando o app abrir.

No seu app Xamarin Forms, você irá fazer um download desse json (Caso os dados não mudem muito, pode até embarcar o .json no próprio app e nem ter um back-end) e usar ele como fonte de dados para alimentar seu listview.

Para trabalhar com arquivos no Xamarin Forms usem o exemplo da documentação clicando aqui. Não tem erro e funciona muito bem. Seja com json anexo ao app ou copiando ele de um link web.

Para converter o  arquivo Json em objeto, usar o pacote nuget do Newtonsoft.Json.

Exemplo de como ler um json via url e gravar localmente no dispositivo.

Abaixo estou lendo um arquivo json que foi feito download no dispositivo.

Posso criar uma propriedade (Linhas) e fazer binding dela no listview da page. Assim exibir os dados do Json como desejar através da ViewCell.

Enfim, o proposito desse mini post é mostrar que existem outras alternativas além de banco de dados para trabalhar com dados off-line em seu app.

O exemplo aqui exposto tentou ser o mais simples possível em sua arquitetura de funcionamento.

GitHub de um projeto Xamarin Forms com Prism e usando um arquivo json remoto como ” banco de dados”.

https://github.com/mhbsti/xamarin-file-json

Forte abraço.

Marcos Hitanael Barchiki dos Santos

 

 

6 comentários sobre “Você realmente precisa de um banco de dados mobile?

  1. Wallace Reis

    Bom dia meu amigo.
    Muito bom seu post. Mas só uma dúvida: Como faço para comparar o JSON local com o da Web para manter o arquivo local sempre atualizado ?

    • mhbs

      Obrigado. Wallace, se você não faz inserção de dados via o app mobile, você pode sempre baixar o file json do seu servidor e assim o arquivo sempre será o mesmo. E sempre estará atualizado (Caso tenha internet). Subi um exemplo em: https://github.com/mhbsti/xamarin-file-json . Na próxima semana vou fazer um post explicando em detalhes esse projeto. Abraço.

  2. Bom dia Marcos!
    Utilizei esta técnica aqui e ficou perfeito, inclusive a navegação do App ficou mais rápida, muito bom!
    Agora só mais uma dúvida: Se utilizar esta técnica em todas as telas do App terei então um arquivo JSON para cada tela certo. Então, estes arquivos ocupam muito espaço no Smartphone do usuário? Devo me preocupar com isso ou não? Aguardo por seu retorno e te agradeço por compartilhar !!
    Abs!

    • mhbs

      Olá Wallace, que bom que funcionou. Olha existem várias formas de fazer. Você pode ter um Json mais elaborado (Caso exista relacionamento entre os dados) e ir filtrando por linq os objetos. Exemplo: Você tem uma lista de clientes e quer marcar os clientes favoritos, nesse caso teria um json com a lista de clientes (Arquivo maior) e um json favoritos somente com os ids (Arquivo pequeno). Caso você tenha muitas estruturas de dados (Exemplo Classe cliente, Produtos e Produtos favoritos…) eu já iria considerar utilizar um banco de dados como Realm ou SqLite. Com relação ao espaço em disco do dispositivo eu só me preocuparia se começar a usar mais de 100MB… 200MB. Abraço.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *