1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Aplicação em rede que funcione offline e possibilite sincronismo do banco de dados

Bom dia galera.

Irei iniciar um projeto de um software de gestão empresarial para uma construtora da minha cidade.

Dentre as especificações do cliente, ele pediu que o software fosse compatível com vários tipos de dispositivos, como tablets e celulares com android, mas o principal foco é o windows (um sistema que rode em desktops e notebooks convencionais), e o maior problema é que o cliente precisa ser independente de internet para poder trabalhar, pois os engenheiros podem estar em canteiros de obras em locais de dificil acesso e não poderão usar internet para trabalhar, nesse caso o sistema precisa permitir que quando o usuário se conecte na internet ou na rede do servidor da empresa ele possa sincronizar o trabalho dele com a base no servidor.

E assim se lança esse grande desafio, pensei em várias possibilidades e gostaria de ouvir (ler) sugestões e opiniões sobre elas:

  1. Pensei em um servidor rodando um servlet Java que será responsável apenas por tratar requisições e gerenciar o banco.
  2. O sistema irá rodar no computador dos clientes, e para que a aplicação seja multiplataforma pensei em faze-la web com HTML5 e JavaScript.

O problema de usar HTML5 e JavaScript em navegadores convencionais é a dificuldade que terei com o sincronismo do banco de dados, pois o cliente precisará de uma cópia remota da base do servidor em cache para trabalhar offline, e o Web SQL do HTML5 é muito fraco pra isso, preciso de uma solução mais robusta.

Uma sugestão de um professor meu foi até desenvolver um navegador que disponibilize o SQL Lite ou um banco interno apenas para o meu sistema, então minha única preocupação seria desenvolver um navegador multiplataforma, enquanto o sistema poderia ser unicamente em HTML e JavaScript.

Alguém sabe me dizer se estou no caminho certo ou conhece alguma outra maneira melhor de se fazer isso?

Obrigado.

  • O cliente quer uma aplicação web que rode 100% offline e online e em todos dispositivos? Cara, eu tava pensando em um sistema desktop que sincronize quando tiver internet (isso é mtu fácil e menos custoso), mas aí entra a questão do sistema para mobile.

    Lucas Heitich   12 de jun de 2014
  • Não precisa ser web, só precisa ser online E offline em todos os dispositivos

    Ivan de Moura Miranda   12 de jun de 2014
  • Bah, na minha opinião é muita mão fazer isso em web (isso dá, mas o problema é o custo e o tempo). Eu faria duas aplicações: uma para mobile e outra pra desktop.

    Lucas Heitich   12 de jun de 2014
  • até o momento eu ainda não sei o que precisa funcionar em uma possível versão mobile do software, mas acho que seria problemático se o cliente quisesse todas as funcionalidades, serão de fato 2 softwares pra desenvolver e dar manutenção, queria poder simplificar isso...

    Ivan de Moura Miranda   12 de jun de 2014
  • Faz uma versão desktop que utilize SQlite, ou outro banco de dados embarcado. Depois, crie uma rotina pra verificar se tem internet, se tiver, mande os dados via json pro servidor. Digo pra mandar por JSON já que os aplicativos mobile muito provavelmente mandarão assim. E no lado do servidor faz a rotina pra inserir as informações no banco de dados, a partir do json.

    Hmuller   12 de jun de 2014
Mostrar todos os 9 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java web html5 javascript ou faça a sua própria pergunta.