Ir ao conteúdo
  • Cadastre-se

WebService - duvidas sobre o funcionamento


Ragl

Posts recomendados

Boa noite,
Gostaria da ajuda de vocês com algumas dicas sobre webservices... Para que possam entender um pouco, farei uma explicação breve sobre o que tenho em mente para que vocês me ajudem a descobrir se é algo viável de se fazer ou não. Minha ideia é desenvolver um app de chat para android. Para isso pensei na seguinte estrutura:

-Interface com  o cliente: um app android para interagir com o cliente.

-Base de dados: uma base de dados hospedada na web, para guardar algumas informações e históricos do chat.

-Webservices: 2 webservices, sendo 1 resposável por gravar no BD as msgs enviadas pelo usuário e o outro responsável por buscar as msgs no banco para mostrar no app.

 

Minhas dúvidas no momento são as seguintes:

-Minha estrutura é viável? é possivel fazer um app de chat desta maneira? ou talvez tenham outras melhores?

-Em questão de BD, a segurança é considerada baixa acessando por webservice?

   -A hospedagem é cobrada de acordo com o tamanho do BD?

-Em relação aos webservices, como é o comportamento de um webservice com muitos acessos simultaneos? Tendo em vista o webservices responsável por atualizar as informações no chat, o mesmo faria uma consulta no BD atualizando a tela do app de 5 em 5 segundos, isso daria 12 acessos por minuto, por usuário, hipotéticamente calculando 10 usuários no chat fariam com q o webservice acesse o banco umas 120x por minuto =O como o Webservice se comportaria neste caso?

 

Será q está uma maneira adequada para criar o que eu preciso? algém sabe como é feita a estrutura de um chat normalmente?

 

Desde já agredeço pela atenção, e qlqer dica referente as minhas duvidas ou o assunto em geral será muito bem vinda! Obrigado.

 

Link para o comentário
Compartilhar em outros sites

@Ragl Boa noite: 

 

- Minha estrutura é viável? é possivel fazer um app de chat desta maneira? ou talvez tenham outras melhores?

R: Sim, na minha opinião é essa a maneira que a maioria dos apps de chats são feitos.

-Em questão de BD, a segurança é considerada baixa acessando por webservice?

R: Não, pois outra maneira de acesso seria fazer direto a conexão do app com o BD, assim deixando a senha exposta no app. Então, assim é a melhor forma, na minha opinião.

-A hospedagem é cobrada de acordo com o tamanho do BD?

R: Sim, mas ela cobra pelo espaço que ela disponibiliza, ou seja, ela te da 1GB e cobra X, se precisar de mais de 1GB, você pode fazer um Upgrade, e para 2GB paga Y, por exemplo, além da transferência.

-Em relação aos webservices, como é o comportamento de um webservice com muitos acessos simultaneos? Tendo em vista o webservices responsável por atualizar as informações no chat, o mesmo faria uma consulta no BD atualizando a tela do app de 5 em 5 segundos, isso daria 12 acessos por minuto, por usuário, hipotéticamente calculando 10 usuários no chat fariam com q o webservice acesse o banco umas 120x por minuto =O como o Webservice se comportaria neste caso?

R: Depende da forma que você o programa. Se você faz consultas que não necessitem muito processamento, ou apenas 1 consulta, não deve dar problemas de início, mas além disso também depende do servidor, caso ele tenha um grande acesso simultâneo.

 

Precisando de mais alguma coisa, pode perguntar me mencionando, @jppcel.
Link para o comentário
Compartilhar em outros sites

Você já pensou na possibilidade de usar WebSocket para fazer a comunicação cliente servidor? Por que com essa tecnologia o servidor pode mandar informações para o cliente sem que o mesmo precise solicita-las. 

 

Como você não citou nenhuma tecnologia, sugiro que você de uma olhada no NodeJs, principalmente no framework Socket.IO.

 

Edit:

 

Achei um tutorial de como implementar um chat usando as tecnologias que eu comentei acima:

 

http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/

Link para o comentário
Compartilhar em outros sites

Bom dia pessoal.

@João Paulo Polles obrigado pela atenção suas dicas foram mtu úteis pra q eu pudesse botar fé no meu projeto! Só reforçando minha pergunta sobre os webservices, na tua visão a melhor maneira de atualizar a tela de chat do app é essa mesma? fazendo consultas de x em x segundos, meu projeto é para q o app fosse utilizado por bastante gente então teria mtu acesso no WBS e ai fica meu receio!!! Pensei q eu poderia também criar mais de um WBS para essa função e dividir em grupos, ex. SALA1 envia pro WBS1, SALA2 envia para WBS2... para evitar de sobrecarregar. Ou tu acha q não devo me preocupar com isso?

pretendo guardar os dados em uma tabela só sem relações e fazer apenas uma consulta(mas ainda nao estruturei o banco para saber se vou conseguir).

@Bruno D eu não conheço essa tecnologia q tu disse, vou procurar como funciona na net e ler os materiais q tu me mandou ai dps eu te digo aqui o que achei da sugestão. Mtu obrigado pela dica e pela atenção cara! vaeluuu.

Obs: nao citei o nome de nenhuma tecnologia pois ainda não defini nada, estou vendo tudo q preciso para poder definir as melhores tecnologias a se usar =D por isso QUALQUER dica sobre o assunto me interessa bastante!!


E só mais uma opinião q gostaria de ouvir de vocês por enquanto:
o que vocês acham das ide´s q geram códigos multiplataformas? andei tendo contato com o Mosync aonde eu gerava os códigos com html5 e javascript e a biblioteca phonegap. Achei meio limitado por não conseguir acessar algumas funções nativas q eu queria, será q faltou destreza minha ou essas linguagens multiplataforma são meio limitadas mesmo? será q eu passo mais trabalho desenvolvendo um aplicativo hibrido com essas linguagens multiplataformas, ou desenvolvendo um app nativo em java(android) e outro em objective-c(ios)?? entendo q cada tipo de desenvolvimento se enquadra de acordo com a necessidade, mas vocês acham q um chat poderia ser desenvolvido como um app hibrido ou melhor fazer nativo mesmo? valeu, abraços

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@Bruno D 
Andei lendo bastante sobre as tecnologias q tu me indicou e só tenho a te agradecer pelas dicas cara, é aquilo ali q eu preciso, é a solução para dúvida q me fez abrir o tópico, mtu obrigado... e apenas por curiosidade, veio em boa data, dia 02/03(a data em q tu postou) era meu aniversario, valeu pelo presente rsrsrs

 

E agora posso citar as tecnologias q serão usadas, pois já estão quase 100% definidas! Me diz o que tu acha...

Do lado cliente, um app hibrido gerado com a ide multiplataforma "Titanium(Eu acho)" , codificado com css3, html5, javascript e a ajuda do framework Phonegap. E utilizando o tal Socket.io no cliente e no servidor para fazer a comunicação. O lado servidor será programado com o Node.js. E as msgs de chat não serão armazenadas em banco, porém preciso acessar um banco em outro ponto do programa e pretendo acessar via um webservice para não expor o banco. Obs: O banco ainda não está definido, aceito sugestões hehehe valeu pela atenção ai meu bom. Abraço!

Link para o comentário
Compartilhar em outros sites

@João Paulo Polles obrigado pela atenção suas dicas foram mtu úteis pra q eu pudesse botar fé no meu projeto! Só reforçando minha pergunta sobre os webservices, na tua visão a melhor maneira de atualizar a tela de chat do app é essa mesma? fazendo consultas de x em x segundos, meu projeto é para q o app fosse utilizado por bastante gente então teria mtu acesso no WBS e ai fica meu receio!!! Pensei q eu poderia também criar mais de um WBS para essa função e dividir em grupos, ex. SALA1 envia pro WBS1, SALA2 envia para WBS2... para evitar de sobrecarregar. Ou tu acha q não devo me preocupar com isso?

pretendo guardar os dados em uma tabela só sem relações e fazer apenas uma consulta(mas ainda nao estruturei o banco para saber se vou conseguir).

 

@Ragl, deixa o sistema um pouco lento? sim, deixa, mas você pode fazer o seguinte:

 - Cria 3 webservices, um que fornecerá as mensagens, um que receberá as mensagens e outro que lhe falará se possui mensagens novas.

Webservice 1:

esse Webservice, você fornece o id da última mensagem recebida, e ele vai te passar as mensagens novas, e te passar o id da última mensagem informada.

 

Webservice 2:

esse Webservice, você fornece o id da última mensagem recebida, e ele retorna se possui mensagens novas para buscar(retornando Verdadeiro ou Falso). 

Caso ele seja verdadeiro, ele executa o Webservice 1.

 

Webservice 3:

esse Webservice, você fornece o texto da mensagem que você quer enviar, e ele retorna verdadeiro ou falso.

(Caso verdadeiro, ok, senão, mensagem de erro).

 

Claro, nos dois casos você precisa informar o id da conversa, que recomendaria criar uma tabela apenas para registrar esse tipo de coisa(Tabela conversas, com, por exemplo, o id da conversa, número 1, número 2, e início da conversa).

 

Assim podemos fazer o servidor processar um número menor de dados e fazer o mesmo processo.

 

Sobre criar um webservice para cada sala, fica meio inviável, pois cada vez que é criada uma sala, você teria que criar um novo webservice, além de usar o mesmo servidor para processar, ou seja, dá o mesmo problema. Pois afinal, o problema é o processamento do servidor não aguentar, e não o arquivo sobrecarregar.

Link para o comentário
Compartilhar em outros sites

@Bruno D 

Andei lendo bastante sobre as tecnologias q tu me indicou e só tenho a te agradecer pelas dicas cara, é aquilo ali q eu preciso, é a solução para dúvida q me fez abrir o tópico, mtu obrigado... e apenas por curiosidade, veio em boa data, dia 02/03(a data em q tu postou) era meu aniversario, valeu pelo presente rsrsrs

 

E agora posso citar as tecnologias q serão usadas, pois já estão quase 100% definidas! Me diz o que tu acha...

Do lado cliente, um app hibrido gerado com a ide multiplataforma "Titanium(Eu acho)" , codificado com css3, html5, javascript e a ajuda do framework Phonegap. E utilizando o tal Socket.io no cliente e no servidor para fazer a comunicação. O lado servidor será programado com o Node.js. E as msgs de chat não serão armazenadas em banco, porém preciso acessar um banco em outro ponto do programa e pretendo acessar via um webservice para não expor o banco. Obs: O banco ainda não está definido, aceito sugestões hehehe valeu pela atenção ai meu bom. Abraço!

 

Não há de quê, estamos aqui para ajudar e sermos ajudados! :)

 

As tecnologias que você escolheu são bem atuais, acredito que você vai conseguir alcançar o seu objetivo.

 

Sugiro que você de uma olhada também na Intel XDK, pelo que eu antei lendo ela é bem promissora.

 

Já sobre o banco de dados para ser utilizado com o NodeJs eu recomendo o MongoDb.

 

Abraços e boa sorte com o seu projeto!

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

Boa tarde gente, desculpa a demora mas estava estudando sobre o projeto e as tecnologias indicadas para poder debater mais com vocês.

@
João Paulo Polles   acho q a tua solução é boa e melhoraria bastante o desempenho, seria sim bem viável... mas sem dúvidas a ideia do módulo socket.io do node.js que nosso amigo citou acima é mais recomendada para resolver a questão de concorrência dos acessos simultâneos ao servidor, da uma lida sobre essas tecnologias e tu vai ver, são muito interessantes e inovadoras. Terei uma dura tarefa tendo que aprender a programar um servidor usando o Node, mas acredito ser o mais aconselhável. Muito obrigado pela ajuda.

@Bruno D  ando lendo e testando bastante as tecnologias que tu citou e agora posso dizer que meu projeto está quase totalmente estruturado(falta agora aprender a implementar tudo isso rsrs). Gostei do IntelXdk, achei bem completo e provavelmente será minha opção para construir a interface do usuário(InteXdk codificado com html5,css3 e javaScript junto com o appFramework). Porém não consegui descobrir os valores(r$) da linceça de uso para desenvolvimento do IntelXdk, visto que pretendo desenvolver um app com o intuito de vender nas lojas autorizadas(AppStore, PlayStore e etc), tu sabe me dizer alguma coisa sobre isso?
No caso, tudo precisa de licença? IntelXdk? html5,css3 e javascript? Node.js? mongoDb?

E também uma dúvida especifica sobre o IntelXdk. Quando eu crio um projeto usando o AppDesigner, ele cria os componentes utilizando alguns .css especificos do framework e uma serie de classes também. Sendo assim, para eu criar um app via código sem utilizar o appDesigner eu teria que usar toodos aqueles css e classes??
Um exemplo: quando crio um botão no modo designer ele cria um botão visualmente de acordo com o sistema operacional que está sendo usado... já quando eu crio um botão via código html puro(sem usar aquelas classes e css) ele cria um botão web normal e igual para todos os sistemas operacionais =/ 

Quanto ao banco de dados a ser usado ainda tenho dúvidas. Pude perceber q o MongoDb é mesmo o banco mais aconselhado por ai para se utilizar com o node, apesar de existirem drivers que dão suporte a Mysql e outros bancos. Na tua opinião será que vale mesmo a pena aprender esse novo paradigma(no-sql) ou devo usar um banco relacional ao qual já tenho um pouco de conhecimento??
Como vantagens do Mongo pude notar que: ele é mais simples de fazer consultas, o node parece ter mais facilidade de trabalhar com ele do q com outros bancos, e melhor em questão de escalabilidade.
Como desvantagens: Ter que aprender esse novo paradigma(o que tb é uma vantagem, um aprendizado novo), não achei muito material em português(apesar de ter alguma coisa), e li tb que ele acaba sendo um banco mais pesado.
Mas no fim das contas estou bem inclinado a aceitar mais esse desafio e escolher o mongo para usar.

Bom, por enquanto é isso ai meus amigos. Agradeço de verdade pela atenção e intenção de ajudar que vocês tem tido, mtu obrigadoo.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!