Ir para conteúdo
  • Cadastre-se

dev botao

App Client/Servidor Banco Nuvem e App Local


  • Este tópico foi criado há 1009 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá pessoal estou com algumas duvidas, e gostaria de algumas orientações caso alguém já tenha feito algo do genero.

Sempre trabalhei com aplicação desktop, com banco de dados Firebird local. Uso IBdatabase e IBtransaction. Não tenho pratica com multicamadas, embora conheça na teoria e sei que existe muito exemplo.

Estou querendo iniciar um novo projeto, onde eu teria o seguinte contexto;

O banco de dados ficaria hospedado no servidor da desenvolvedora de software (no caso a empresa onde trabalho), seja na propria empresa ou num datacenter, a responsabilidade de gerir os dados seria da software house

No usuário teria uma aplicação (exe) rodando na(s) maquina(s) do cliente e acessando o banco de dados e hospedado neste servidor acima.

Ai vem minhas duvidas.

Considerando que vou continuar desenvolvendo em delphi, e usando BD (mysql ou postgree), como ficaria aplicativos que preciso desenvolver.

Imagino que teria que desenvolver uma aplicação cliente que seria o EXE instalado na maquina do cliente

Teria que desenvolver uma aplicacao server. Esta aplicacão server, tem que ficar rodando na maquina do cliente ou no meu servidor?

O que teria que ficar rodando ou instalado no servidor?

Se a aplicação server estiver instalada no meu servidor como seria o acesso a ela do lado do cliente. Veja o exemplo, acabo de fechar negocio com um cliente que tem uma loja e vai usar 1 ou mais computadores para acessar o sistema. Eu crio o banco de dados para ele, coloco o meu exe nos computadores da empresa, faco as devidas configuracoes, ai teria um bano de dados mysql onde dele iria informar informar o cnpj da empresa ou email ou qualuqer outra informacao, se for pelo cnpj teria uma tabela de empresa com cnpj e caminho do banco de dados EX: cnpj 11111111111 caminho: meuip.com.br/cliente111111111/empresa.fdb.  Apos ele selecionar esta empresa o sistema iria pedir usuario e senha e iria logar no sistema

Eu poderia ter no mesmo banco de dados varias empresas cadastradas, vai que fecho um negocio onde o cliente tem varias lojas, OK meu sistema vai ser multiempresa e o cliente iria acessar seu banco de dados, vai selecionar a empresa e informar o usuario e senha

Eu vi um software concorrente que trabalha desse jeito, eles tem um servidor na propria software house, nas maquinas do cliente fica o EXE e quando o usuario vai abrir o sistema, primeiro aparece uma tela para ele selecionar a empresa e depois o usuario e senha. Mas nao vi se na maquina tinha alguma aplicacao server rodando.

Se a aplicacao server ficar no meu servidor, ela vai a cada requisicao, abrir o banco que a requisicao esta mandando, ou seja ela recebe uma requisicao, abre o banco, faz a requisicao e retorna a resposta, ou eu teria que ter uma aplicacao servir rodando para cada banco de dados. Parece meu boba a pergunta mas realmente nao sei qual a maneira mais inteligente de se trabalhar.

Caso alguem ja trabalhe assim e puder me dar um help eu agradeco

 

Link para o comentário
Compartilhar em outros sites

Rapaz tem muitos caminho para o teu cenário...

Mas vou dar um resumo para ti.

1 - Você pode usar apenas Cliente/Servidor, duas camadas ainda. (Exe no cliente, acessando servidor de banco de dados do seu servidor), onde o exe da máquina do cliente acessaria ipTeuServidor:C:\PastaBanco\nomeBanco.fdb. Aqui o Unidac ou Firedac é bom para o componente de acesso a dados.

porém aqui, você tem que ter um ip fixo na sua máquina que será servidor OU USAR um serviço de "endereçamento" como o No-Ip ou Hamachi.

Nota: Para usar o sistema com muitas requisições, para várias empresas não vejo isso como a melhor solução.

2 - Criar o sistema multi-camadas: onde você teria o servidor de banco de dados (mysql por exemplo) no seu servidor, teria um servidor de aplicação (Rest/Json) rodando no teu servidor e recebendo as requisições da aplicação cliente (o exe que será instalado no cliente).

Logo seria a aplicação cliente (exe no micro do cliente) se comunicaria com o servidor de aplicação (teu exe rodando no teu servidor para ficar se escutando as requisições da aplicação exe do cliente) e se comunicando com o servidor de banco de dados (mysql/postgree).

Bem um resumo para tu ir se norteando por onde decidir.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Carlos,

Item 1 eu ja trabalho assim em uma aplicacao minha, uso o zeos para conectar o banco de dados mysql em nuvem, eu tenho um unico exe que ao inves de conectar o bd local conecta no bd em nuvem

 

Item  2 ainda nao compreendo direito, imaginando que no pc do cliente teria um exe, eu imagino o seguinte, se tenho um exe server rodando na maquina do cliente, nao vai ficar pesado esse exe server, ficar acessando um banco de dados em nuvem. Agora se o exe server rodar no proprio servidor, como ficaria para um acessar o outro. E se eu tivesse 100 banco de dados no meu servidor, teria 1 unico exe server acessando estes 100 bancos, ai o cliente que usa o banco de dados 01, manda uma requisicao, o exe server conecta no banco faz a requisicao e retorna algum resultado, ja imaginou ficar abrindo e fechando cada banco de dados cada vez que tem uma requisicao. Nao parece muito pratico

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, alessandro pancotte disse:

Olá pessoal estou com algumas duvidas, e gostaria de algumas orientações caso alguém já tenha feito algo do genero.

Sempre trabalhei com aplicação desktop, com banco de dados Firebird local. Uso IBdatabase e IBtransaction. Não tenho pratica com multicamadas, embora conheça na teoria e sei que existe muito exemplo.

Estou querendo iniciar um novo projeto, onde eu teria o seguinte contexto;

O banco de dados ficaria hospedado no servidor da desenvolvedora de software (no caso a empresa onde trabalho), seja na propria empresa ou num datacenter, a responsabilidade de gerir os dados seria da software house

No usuário teria uma aplicação (exe) rodando na(s) maquina(s) do cliente e acessando o banco de dados e hospedado neste servidor acima.

Ai vem minhas duvidas.

Considerando que vou continuar desenvolvendo em delphi, e usando BD (mysql ou postgree), como ficaria aplicativos que preciso desenvolver.

Imagino que teria que desenvolver uma aplicação cliente que seria o EXE instalado na maquina do cliente

Teria que desenvolver uma aplicacao server. Esta aplicacão server, tem que ficar rodando na maquina do cliente ou no meu servidor?

O que teria que ficar rodando ou instalado no servidor?

Se a aplicação server estiver instalada no meu servidor como seria o acesso a ela do lado do cliente. Veja o exemplo, acabo de fechar negocio com um cliente que tem uma loja e vai usar 1 ou mais computadores para acessar o sistema. Eu crio o banco de dados para ele, coloco o meu exe nos computadores da empresa, faco as devidas configuracoes, ai teria um bano de dados mysql onde dele iria informar informar o cnpj da empresa ou email ou qualuqer outra informacao, se for pelo cnpj teria uma tabela de empresa com cnpj e caminho do banco de dados EX: cnpj 11111111111 caminho: meuip.com.br/cliente111111111/empresa.fdb.  Apos ele selecionar esta empresa o sistema iria pedir usuario e senha e iria logar no sistema

Eu poderia ter no mesmo banco de dados varias empresas cadastradas, vai que fecho um negocio onde o cliente tem varias lojas, OK meu sistema vai ser multiempresa e o cliente iria acessar seu banco de dados, vai selecionar a empresa e informar o usuario e senha

Eu vi um software concorrente que trabalha desse jeito, eles tem um servidor na propria software house, nas maquinas do cliente fica o EXE e quando o usuario vai abrir o sistema, primeiro aparece uma tela para ele selecionar a empresa e depois o usuario e senha. Mas nao vi se na maquina tinha alguma aplicacao server rodando.

Se a aplicacao server ficar no meu servidor, ela vai a cada requisicao, abrir o banco que a requisicao esta mandando, ou seja ela recebe uma requisicao, abre o banco, faz a requisicao e retorna a resposta, ou eu teria que ter uma aplicacao servir rodando para cada banco de dados. Parece meu boba a pergunta mas realmente nao sei qual a maneira mais inteligente de se trabalhar.

Caso alguem ja trabalhe assim e puder me dar um help eu agradeco

 

 O caminho mais simples para você é usar o REST Dataware, minha package de componentes é justamente para o que vc quer, vc não vai precisar programar nada além do duas camadas que vc já faz e minha package faz todo o processo de 3 camadas transparente para vc, como se usasse 2 camadas normal, com Database e query da minha paleta normal, ainda é Cross Plataform, podendo ser usada em FMX, para Android, IOS, MacOS e outras opções.

 https://sourceforge.net/projects/rest-dataware-componentes/

Link para o comentário
Compartilhar em outros sites

6 horas atrás, alessandro pancotte disse:

Xyberx,

Vou baixa-la e estudar.. 

Excelente iniciativa, se precisar de algo que eu possa ajudar, estou a disposição.

Alessandro é por ai o caminho.

 

Agora o conceito de nuvem... Apesar de não ser o mais preparado deste fórum para responder... Quando se fala em computação na nuvem, os arquivos(Exe servidor, exe cliente, banco de dados, etc) fica tudo na "MÁQUINA SERVIDORA DA NUVEM" e não no pc do cliente. O pc do cliente apenas acessa a funcionalidade e pronto.

Link para o comentário
Compartilhar em outros sites

 Sim, isso é o conceito.

 Porém existe casos que as pessoas querem usar WS para não precisar instalar clientDB e coisas do tipo, então usam 3 camadas para a instância do Servidor conter o que é necessário e os client's acessam na rede local por ws.

 3 Camadas pode ser usado em qualquer situação que precise, pois ainda conta com a vantagem de :

 1 - Se seu banco conta licenças de USO por Client Conectado você só pagará uma licença, pois o Servidor é a única conexão ativa.

 2 - Se você não quer ter problemas de configuração de DB, usando 3 camadas segue a mesma lógica acima, o Servidor é a única conexão.

 3 - Se você quiser trocar o db de lugar com maior facilidade, como o Servidor é a única conexão, você pode simplesmente parar o Serviço e mudar no Servidor que todos estarão na nova base.

 Eu poderia enumerar várias utilidades do 3 camadas, mais cada um pode usar para o que achar mais adequado a sua realidade.

 Usem o REST Dataware que será transparente, você vai programar como se fosse duas camadas normalmente com Dataset, SQL e coisas comuns se dificuldade, e poderá usufruir das coisas que enumerei e muitas mais...

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
Em 28/03/2017 at 08:07, xyberx disse:

 Sim, isso é o conceito.

 Porém existe casos que as pessoas querem usar WS para não precisar instalar clientDB e coisas do tipo, então usam 3 camadas para a instância do Servidor conter o que é necessário e os client's acessam na rede local por ws.

 3 Camadas pode ser usado em qualquer situação que precise, pois ainda conta com a vantagem de :

 1 - Se seu banco conta licenças de USO por Client Conectado você só pagará uma licença, pois o Servidor é a única conexão ativa.

 2 - Se você não quer ter problemas de configuração de DB, usando 3 camadas segue a mesma lógica acima, o Servidor é a única conexão.

 3 - Se você quiser trocar o db de lugar com maior facilidade, como o Servidor é a única conexão, você pode simplesmente parar o Serviço e mudar no Servidor que todos estarão na nova base.

 Eu poderia enumerar várias utilidades do 3 camadas, mais cada um pode usar para o que achar mais adequado a sua realidade.

 Usem o REST Dataware que será transparente, você vai programar como se fosse duas camadas normalmente com Dataset, SQL e coisas comuns se dificuldade, e poderá usufruir das coisas que enumerei e muitas mais...

Olá, tudo bem? Ressuscitando o tópico (rsrsrs).

Já tentei algumas vezes usar o RDW mas nas 3 tentativas de instalação não consegui fazer funfar.
Além disso o fato do projeto ser mantido por apenas uma pessoa não me animou a prosseguir.
Como está o projeto hoje e a confiabilidade de prosseguimento do projeto?
Por onde é melhor começar com o RDW? Do zero mesmo, inclusive com REST e JSON?

Obrigado!

Link para o comentário
Compartilhar em outros sites

5 horas atrás, marcelolours disse:

Olá, tudo bem? Ressuscitando o tópico (rsrsrs).

Já tentei algumas vezes usar o RDW mas nas 3 tentativas de instalação não consegui fazer funfar.
Além disso o fato do projeto ser mantido por apenas uma pessoa não me animou a prosseguir.
Como está o projeto hoje e a confiabilidade de prosseguimento do projeto?
Por onde é melhor começar com o RDW? Do zero mesmo, inclusive com REST e JSON?

Obrigado!

Boa tarde o projeto RDW melhorou sim, mas como voce mesmo disse é mantido por uma unica pessoa as vezes da algum problema tem que esperar a disponibilidade dele de arrumar. existe hoje o Horse tambem da uma estuda nos dois e veja o que melhor de atende. segue o link do horse https://github.com/HashLoad/horse

 

Link para o comentário
Compartilhar em outros sites

40 minutos atrás, leandroaoa disse:

Boa tarde o projeto RDW melhorou sim, mas como voce mesmo disse é mantido por uma unica pessoa as vezes da algum problema tem que esperar a disponibilidade dele de arrumar. existe hoje o Horse tambem da uma estuda nos dois e veja o que melhor de atende. segue o link do horse https://github.com/HashLoad/horse

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 10/06/2021 at 09:24, marcelolours disse:

Olá, tudo bem? Ressuscitando o tópico (rsrsrs).

Já tentei algumas vezes usar o RDW mas nas 3 tentativas de instalação não consegui fazer funfar.
Além disso o fato do projeto ser mantido por apenas uma pessoa não me animou a prosseguir.
Como está o projeto hoje e a confiabilidade de prosseguimento do projeto?
Por onde é melhor começar com o RDW? Do zero mesmo, inclusive com REST e JSON?

Obrigado!

Melhorou bastante e nao eh feito somente por mim, temos mais de 1100 so no telegram e outros com mais de 14mil downloads e eh infinitamente melhor do que o que ha no mercado hoje so procurar e ver. qualquer coisa so avisar e sim funciona em qualquer Delphi e Lazarus diferente dos terceiros atuais.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1009 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...