Uma estrategia para não sincronizar dados todas as vezes que o aplicativo é iniciado.

Olá.

Este post não tem a pretensão de mostrar a melhor estratégia pra sincronizar dados entre a servidores na nuvem e seu aplicativo no seu device, mas pode te ajudar a ter uma ideia de como fazer isso. 
Atualmente estou trabalhando em um projeto de aplicativo e estou fazendo em Delphi XE 10.2 é meu primeiro trabalho de cunho profissional (para dispositivos móveis) com esta ferramenta. No tocante a sincronizar os dados do banco de dados SQLite e o servidor na internet rodando MySQL houve a necessidade de saber quando foi a ultima vez que um outro software também feito exclusivamente para este projeto sincronizou estes dados na internet.

Para esta tarefa utilizou-se a seguinte estratégia:
  1. Criar uma tabela chamada SINC no servidor web chamada com os campos ID e DATA_SINC, representando o código qualquer e a data e hora que os dados forma sincronizados.
    1. Veja a figura:
  2. Em seguida foi alterado no programa importador que apos o envio dos registros, criar um registro contendo o id e data e hora na tabela SINC. Veja a Figura
  3. Escrever um server método na API que retorne um JSON da tabela SINC contendo os dados gerados na ultima sincronização. Atenção deve retornar apenas o ultimo registro, pra não ficar retornando dados que não serão utilizados.
  4. No banco SQLite do aplicativo crie uma tabela idêntica a tabela criada no passo 1.
  5. No aplicativo crie um método para recuperar no banco SQLite o ultimo registro da tabela de SINC. 

  6. Aqui talvez a parte mais simples que pude usar neste projeto. Utilizou-se um componente chamado RestClient contém os dados básicos para acessar os server metodos, RestRequest contém os dados do próprio server métodos (parâmetros e outros mais), RestResponse contém os dados do resultado da requisição e RestResponseDataSetProvider permite conectar a requisição em um dataset que aqui neste exemplo foi usado TFDMemTable.

  7. Compare os dados que foram retornados pela API com os dados retornados pela consulta local no aplicativo. Sendo a data do aplicativo menor que a data retornada pela API dispare o método de sincronização.  


Em seguida grave no banco local do aplicativo os dados retornados pela API. E por ultimo, teste exaustivamente.

Até mais.

Comentários

Postagens mais visitadas deste blog

AWS para Desenvolvedores - Dominando S3 com Delphi

Preenchendo com zeros a esquerda de um valor com Firebird

Selecionando apenas o ultimo registro inserido com SQLite