Servidor Próprio - O que vocês acham?

17 respostas
W

Pessoal, gostaria de saber a opinião de vocês sobre um projeto que iniciei e se vale a pena levar a frente.
Criei uma aplicação java usando sockets e threads. Essa aplicação se conecta a um banco de dados (no meu caso interbase e mysql), recebe comando sql via um objeto java enviado por uma aplicação cliente e retorna um vetor bidimensional para o meu cliente.
Posso conectar vários clientes nesse servidor, gostaria de melhorá-lo e utilizar o sistema para gerenciar minhas bases à distancia, assim como fazer aplicativos desktops que se conectam a esse servidor tornando o sistema online.
Gostaria de saber o que vocês acham ? Estou tendo traballho desnecessário ? Deveria usar ferramentas próprias ? Ou vale a pena investir, pois é mais conhecimento para mim ?

17 Respostas

yorgan

Bom, para investir capital na idéia, o ideal é que exista uma perspectiva de retorno. Se você tiver clientes em vista ou acredita mesmo que a idéia pode ser interessante, toca adiante e vê o que dá.
Só não acredito que seja um bom negócio manter um servidor próprio. Existem opções de hosts bem mais interessantes e elas são mais flexiveis quanto alterações na configuração, além de fornecer uma segurança bem maior.

[]´s

Daniel

Giulliano

Não entendi…vc criou uma aplicação que se conecta com o seu banco de dados e retorna um array…ele faz um select e retorna o resultado ??? É isso ???

E pq esse título de servidor próprio ?!?!?!?

W

yorgan:
Bom, para investir capital na idéia, o ideal é que exista uma perspectiva de retorno. Se você tiver clientes em vista ou acredita mesmo que a idéia pode ser interessante, toca adiante e vê o que dá.
Só não acredito que seja um bom negócio manter um servidor próprio. Existem opções de hosts bem mais interessantes e elas são mais flexiveis quanto alterações na configuração, além de fornecer uma segurança bem maior.

[]´s

Daniel

Valeu por ter respondido Daniel. Na verdade, investimento que eu quis dizer era mais de tempo e trabalho. Trabalho na prefeitura de Campos aqui no norte do estado do Rio, e nós temos bases muito antigas do interbase 5.5 ainda, mas eu não sou responsavel por essa mudanças e o desenvolvimento é feito em delphi.
Já fiz uns testes com o servidor acima só que usando um chat e o rendimento foi bem satisfatório, com conersa pública e conversa individual. Daí resolvi migrar para uma estrutura cliente/server e estou fazendo novamente os testes. Até agora o desempenho tem sido bom.
O que eu pretendo é fazer a instalação de aplicativos online, pois a prefeitura tem uma estrutura bem abrangente dentro da cidade. Considerando que o servidor se conecta ao cliente usando o numero ip, posso fazer conexôes à distancia e também gerenciar as bases, tornando a coisa mais centralizada.
O desempenho dos trheads para gerenciar as conexões de vários clientes também ficou excelente.

W

Giulliano:
Não entendi…vc criou uma aplicação que se conecta com o seu banco de dados e retorna um array…ele faz um select e retorna o resultado ??? É isso ???

E pq esse título de servidor próprio ?!?!?!?

Não, meu servidor fica por exemplo em um prédio separado e minhas aplicações clientes se conectam nele via ip e uma porta específica. Cada conexão nova é gerenciada por um objeto thread que mantém conexão constante com um respectivo cliente.
A aplicação cliente envia suas conexões para o meu servidor que gerencias várias conexões e responde a cada uma. O método que executa os comandos é syncronized, e esse acessa o banco de dados e retorna cada requisição. Assim não preciso por exemplo usar php, continuo no java usando swing e sem limitação física de local lan.

xdraculax

Cara… antes de montar sua própria estrutura, tente alugar um servidor pequeno com alguém que já tenha estrutura.
Assim você verifica se tem perspectiva , se tem demanda, e dependendo dos resultados, monta sua própria estrutura.

Lembre dessa frase: “compre o sapato do tamanho do seu pé…”
Não deixe a impolgação lhe frustar, e fazer você perder $$.

abraços :slight_smile:

W

xdraculax:
Cara… antes de montar sua própria estrutura, tente alugar um servidor pequeno com alguém que já tenha estrutura.
Assim você verifica se tem perspectiva , se tem demanda, e dependendo dos resultados, monta sua própria estrutura.

Lembre dessa frase: “compre o sapato do tamanho do seu pé…”
Não deixe a impolgação lhe frustar, e fazer você perder $$.

abraços :)

Eu não consegui me expressar bem. O meu servidor seria uma aplicação que recebe conexões e responde para cada aplicação cliente. Isso já está implementado e testado. Eu citei o exemplo de um comando sql que me retorna um vetor bidimensional, mas poderia ser qualquer outro objeto java, as aplicações são várias, eu citei apenas uma.
Também não vou perder dinheiro, as máquinas são da prefeitura e só ficarão ligadas para atender nossas próprias aplicações. Se eu não fizer dessa maneira terei que usar php ou jsp por exemplo.
Como gosto muito de java e adoro programar com o swing, preferir aprimorar a aplicação, mas como não tenho estudado muito e não tenho acessado o fórum me senti um pouco inseguro , por isso escolhi postar aqui no fórum para saber a opinião de vocês.
Na minha opinião isso iria aumentar bastante meu conhecimento, mas gostaria da opinião de vocês.

xdraculax

Há cara, desculpe então :slight_smile:
Bom, realmente do ponto de vista de aprendizado acredito ser válido.
Técnicamente, vai depender do que você está usando para retornar isso para os clientes.
É RMI? Socket puro com Serialização?

W

xdraculax:
Há cara, desculpe então :slight_smile:
Bom, realmente do ponto de vista de aprendizado acredito ser válido.
Técnicamente, vai depender do que você está usando para retornar isso para os clientes.
É RMI? Socket puro com Serialização?

É isso. É socket com serialização. Eu achei que o desempenho ficou muito bom, inclusive já tinha testado isso num chat. Quando fui pesquisar sobre threads na internet, encontrei casos em que as pessoas fizeram testes com 5000 ou 10.000 threads com bom desempenho.
Quanto ao retorno, por isso disse que quando executo uma consulta sql retorno um vetor bidimensional,pois assim posso serializá-lo e enviar para o cliente que fez a consulta. Também tenho interface gráfica no servidor, posso gerenciar todas as conexões e até acompanhar o que cada usuário está fazendo e até “tombá-los” do sistema.
No lado do cliente, eu envio minhas sqlś não como texto, mas como atributo de um objeto comando, assim o servidor sabe se é para executar ou não ou o que é para executar dependendo do tipo do objeto. As minhas interfaces gráficas utilizam herança, e métodos polimórficos e interfaces e maneira bem integrada. O sistema funciona bem.
Por isso o que eu gostaria de saber é o que vocês do fórum acham dos recursos empregados, se pode ser considerado um sistema com recursos avançados. E também o que acham de eu usar inteface gráfica com swing no lugar de usar php ou jsp, se consideram uma boa iniciativa ou uma maneira ultrapassada.

mvargens

Olha eu trabalhei com um servidor web muito loco de um ERP. Os caras pegaram o Tomcat e transformaram numa coisa la que conseguia gerenciar até a transação com o banco de dados de dentro da aplicação Swing. Não sei se usavam proxy, o o que que era, mas enfim… As JTables do Swing eram montadas com um arrays bidimensional, retornados pelo servidor. Vc montava a query SQL com os campos na mesma ordem da JTable, e pronto. A JTable era preenchida automaticamente com esse Array. A produtividade vai la em cima trabalhando dessa forma. Mas a flexibilidade vai la em baixo, porque fica tudo a cargo do banco de dados e da pra fazer pouca coisa com esse array maluco. Mas é produtivo.
O problema que vejo nesse seu esquema é a limitação. Para cada coisa, vai ter que implementar um conector. Por exemplo: Se quiser usar aplicações web, vai ter que implementar um JDBC para o servidor se conectar na sua solução para sua solução ir no BD. Eu já usei Swing com Tomcat e não tive problemas. O Tomcat é um produto maduro e de certa forma um servlet é um socket também, Multi-Thread e sincronized se não me engane. Usando um frameworks como o Spring vc vai ter controle de transação entre outras coisas a disposição do seu Servlet. Não existe uma obrigação de se usar JSP quando se usa Tomcat. Assim como vc também pode usar o Spring na sua solução sem servidor web.
Eu não gosto de reinventar a roda. Já desenvolvi famework e é uma coisa que nunca mais faço na vida. Melhor adaptar os que estão prontos. Mas se a sua necessidade é especifica até vale a pena. Mas se em um futuro pensar em usar Web com JSP e HTML (JSP também é um servlet), melhor adotar o Tomcat que já tem tudo numa coisa só, testado, aprovado entre outros benefícios, como balanceamento de carga.

mvargens

Eu acho Swing legal, aplicações financeiras e que usam o teclado ao invés do mouse sem duvida ficam melhores em Swing. Mas olhando pela ótica do mercado de trabalho, é uma iniciativa ultrapassada. 80% das aplicações hoje são para Web. Somente coisas como Photoshop, emule são Desktops. Até Msn tem web.

W

mvargens:
O problema que vejo nesse seu esquema é a limitação. Para cada coisa, vai ter que implementar um conector. Por exemplo: Se quiser usar aplicações web, vai ter que implementar um JDBC para o servidor se conectar na sua solução para sua solução ir no BD. Eu já usei Swing com Tomcat e não tive problemas. O Tomcat é um produto maduro e de certa forma um servlet é um socket também, Multi-Thread e sincronized se não me engane. Usando um frameworks como o Spring vc vai ter controle de transação entre outras coisas a disposição do seu Servlet. Não existe uma obrigação de se usar JSP quando se usa Tomcat. Assim como vc também pode usar o Spring na sua solução sem servidor web.

No meu caso a aplicação está pronta, mas posso dar uma olhada na utilização do tomcat.

W

Obrigado pela dica.

W

Eu acho Swing legal, aplicações financeiras e que usam o teclado ao invés do mouse sem duvida ficam melhores em Swing. Mas olhando pela ótica do mercado de trabalho, é uma iniciativa ultrapassada. 80% das aplicações hoje são para Web. Somente coisas como Photoshop, emule são Desktops. Até Msn tem web.

Gosto do esquema web do MSN em que você fica online mas tem o aplicativo instalado na máquina, não precisando utilizar o browser. Esse é o esquema que gostaria de implementar.

W

Uma questão que eu não lembrei de comentar é sobre o processamento do lado do cliente. Usando php por exemplo, todo o meu processamento fica no servidor. No caso do meu aplicativo, minha aplicação cliente recebe objetos java do servidor e pode processá-los localmente.
Já com o jsp não sei se dá para fazer processamento local, alguém poderia me dizer se isso é possível ? Se consigo receber objetos java, mesmo que através do browser e processá-los localmente ?

gomesrod

Olá,

Você já pesquisou algo sobre WebServices? Talvez seja o que você precisa.

mvargens

wallcoelho:
Uma questão que eu não lembrei de comentar é sobre o processamento do lado do cliente. Usando php por exemplo, todo o meu processamento fica no servidor. No caso do meu aplicativo, minha aplicação cliente recebe objetos java do servidor e pode processá-los localmente.
Já com o jsp não sei se dá para fazer processamento local, alguém poderia me dizer se isso é possível ? Se consigo receber objetos java, mesmo que através do browser e processá-los localmente ?

Só se usar Applet Swing. Caso contrário não. JSP é para criar páginas dinâmicas, mas é código HTML interpretado pelo browser. Se você quer usar o Tomcat Web Server e um cliente Swing e receber objetos serializados, você vai ter que usar Servlets. Se não me engane você consegue transportar objetos serializados sem problema. Mas não vai conseguir interpretar isso no browser sem usar applet que nada mais é que um Swing rodando dentro do browser. Uma alternativa a serialização dos objetos é usar WebServices como dito acima. E outra opção é o Swing enviar dados via POST (como se fosse um browser) e receber um XML, transformando ele em Objeto no cliente. Mas entendi que esse não é seu foco.

W

mvargens:

Só se usar Applet Swing. Caso contrário não. JSP é para criar páginas dinâmicas, mas é código HTML interpretado pelo browser. Se você quer usar o Tomcat Web Server e um cliente Swing e receber objetos serializados, você vai ter que usar Servlets. Se não me engane você consegue transportar objetos serializados sem problema. Mas não vai conseguir interpretar isso no browser sem usar applet que nada mais é que um Swing rodando dentro do browser. Uma alternativa a serialização dos objetos é usar WebServices como dito acima. E outra opção é o Swing enviar dados via POST (como se fosse um browser) e receber um XML, transformando ele em Objeto no cliente. Mas entendi que esse não é seu foco.

É vou utilizar o que já está implementado, para mim é mais fácil como está agora pois conheço todo o código fonte, se precisar fazer alterações e/ou adaptações será mais rápido assim.
Também vou dar uma pesquisada em servlets e webservices como vocês já citaram anteriormente.
Gostaria de agradecer aos foristas pelo interesse que tiveram em me responder, assim como me indicar novas tecnologias que poderei agregar no futuro.
Se eu implementar alguma tecnologia nova ao projeto, postarei aqui, para comentar os resultados e seu desempenho na produção.

Criado 19 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 17
Participantes 6