Aplicação Cliente x Servidor

7 respostas
V

Olá amigos!

Há um tempo atrás eu postei aqui no forum sobre desenvolvimento de ERP:
http://www.guj.com.br/posts/list/91147.java

Acontece que devido a outras prioridades não pude dar continuidade nessa minha ideia. Atualmente estou novamente pesquisando sobre linguagens e bancos de dados e gostaria muito de opiniões sobre quais tecnologias adotar para desenvolvimento de meu sistema.

Não gostaria de adaptar algum codigo fonte existente. Quero sim estudá-lo bastante, porém iniciar com algo bem simples a nivel de funcionalidades para os usuários, mas com uma arquitetura extremamente flexivel e preparada para crescer e ser modificada sem muitos traumas.

Abaixo algumas premissas que tenho em mente:

  • Como minha ideia é um sistema de gestão empresarial, torna-se obvio que as estações remotas deverão acessar um banco de dados centralizado.

  • Quero que o usuário possa acessar mais de uma rotina simultâneamente, algo como os formulários MDI - Multiple Document Interface. Pelo que li até agora, em aplicações Web isso fica mais complicado.

  • Manutenção Centralizada. Ai creio que está o grande divisor de águas entre aplicações Desktop e aplicações Web. Em aplicações Desktop, em caso de atualizações, todas as estações remotas deverão ser atualizadas. Gostaria de algo flexivel nesse sentido, ou seja, criar um campo ou um botão e não precisar atualizar centenas (pensando grande mesmo … :slight_smile: ) de arquivos de clientes.

  • Banco de Dados Gratuito.

Acho que apesar de ser um pouco agressivo para programadores de linguagens procedurais como eu, o Java atualmente é a tecnologia com mais recursos e desenvolvedores fodas pelo mundo. Porém, possui muitas vertentes, o que dificulta o entendimento para novatos.

Antes de cair de cabeça nos estudos (e na pavorosa documentação em Inglês da Sun) quero orientar minhas pesquisas, por isso estou postando nesse fórum, que creio ser o maior do Brasil sobre Java.

Obs.: Não cheguei a baixar os fontes dos programas dos links do outro tópico pois estou utilizando a internet do meu trabalho que é extremamente lenta. Em casa estarei baixando o Freedom para ver se entendo algo.

Muito obrigado!

Victor Hugo

7 Respostas

fantomas

Oi victorhpp,

Para a sugestão de uma arquitetura talvez vc tenha que fornecer/pensar em mais detalhes, mas o que vc escreveu já é um bom começo.

 Pelo que deu para perceber existe uma certa preocupação em relação as questões visuais.

- Quero que o usuário possa acessar mais de uma rotina simultâneamente, algo como os formulários MDI - Multiple Document Interface. Pelo que li até agora, em aplicações Web isso fica mais complicado.

Você disse que “QUER” este recurso mas e o usuário “QUER”? Ou melhor ainda realmente PRECISA? E se estas respostas forem afirmativas vem na sequencia outra grande questão: O usuário e o desenvolvedor estão dispostos a pagar o preço desta decisão?

Em relação ao banco de dados é preciso pensar nos malditos números: número de acessos, volume de dados, segurança disponibilidade etc... tudo isso vai ajudar determinar qual banco de dados a ser sugerido.

Espero não ter complicado muito rsrsrsr…

[]'s

V

Olá fantomas,

Obrigado pela resposta !!

Sim, o desenvolvedor está super disposto a “pagar” para que o sistema trabalhe com multiprocessos. Alguns usuários menos exigentes podem não fazer questão, mas tenho certeza que um cliente que precise de agilidade irá solicitar esse recurso. Ou como muitos fazem, logam varias vezes no sistema e trabalham com as janelas do Windows … rs … Sim cara, a questão visual é uma preocupação muito grande. Acho que interface amigável e principalmente ágil é muito importante.

Sobre o banco, penso que para iniciar, se suportar torno de uns 30 usuarios e uns 5 GB de armazenamento é o suficiente. Pelo que andei lendo, o MySQL para ser uma ótima opção.

Apenas para esclarecer, não tenhum nenhum contrato fechado com algum cliente, inicialmente quero desenvolver para mim mesmo, quero aplicar em algo próprio os conhecimentos adquiridos em 5 anos de consultoria em ERP. Ou seja, ainda não possuo os detalhes, mas a partir dessas ideias iniciais, quero testar algumas tecnologias, e quando identificar quais irão me atender, irei detalhar o funcionamento.

Abraços!!

Victor Hugo

fantomas

Oi victor,

Vc já sabe se a rede em que o sistema irá ser executado será uma intranet, uma extranet ou as duas coisas e algo mais que aparecer?

[]'s

fantomas

Descupe as perguntinhas, só estou tentando entender a sua idéia e sugerir alguma coisa pra pensar e criticar rsrsrs.

V

Que isso cara !!! Só o fato de vc estar respondendo é muito bom … rs

Então, para falar a verdade, não programo em ambiente Web, portanto sou leigo no assunto. Mas na minha cabeça, se eu optar por Web, deverá rodar em Intranet ou Extranet, pois imagino que não mude muita coisa na programação. Em desktop, seria via TCP/IP. Pensei em um arquivo de configuração na estação do usuário onde eu defino o IP do servidor. Ai o programa lê esse IP para fazer conexão com o BD. Claro, imagino algo parecido com isso, porém como não conheço bem o Java, estou aberto a novas ideias.

Obrigado mais uma vez !!

Victor Hugo

fantomas

Oi victorhpp,

Eis aqui uma sugestão para você começar a formar uma idéia.

A IDE poderá ser Eclipse ou NetBeans

Para o módulo CLIENT (Interface SWING):

.Spring (HttpRequest)- para acessar os serviços no server
.myEclipse - módulo Mantisse para desenhar as telas - não é free, custa menos de R$ 100,00. O matisse já vem com o NetBeans gratuitamente.
.Genesis - Esse framework é brasileiro, ajuda a fazer binding dos objetos visuais com annotations e as dúvidas ou problemas são respondidos rapidamente.
.Glazed Lists - Api para grids. Muito bacana e simples de utilizar, acho que vai te ajudar muito.
.O swingx também é uma coisa bancana que pode ser utilizada aqui.

Para o módulo CLIENT (Interface WEB caso haja necessidade):
.HTML, JavaScript, AJAX

Para o módulo SERVER (WEB).

.Spring ou EJB3 ou ainda os dois juntos - disponibilizar os serviços, controle de transações, injeção de dependencia etc…
.JPA/Hibernate - persistencia. Utilizar annotations ao invés de xml, ainda acho que é uma questão de opção pois algumas vezes eu acho que as classes de modelo ficam muito poluidas com as anotações talvez seja a falta de constume estou refletindo sobre isso.
.JSF - Richfaces. Existem outros bacanas como o wicket por exemplo vale a pena pesquisar e ver o que lhe agrada ATENÇÃO: esta opção será utilizada quando houver algum caso específico.

Para o módulo que faz o deploy no client (modulo feito em SWING).

.WebStart - site com o client envelopado.

Esta sugestão visa deixar suas regras de negócio independente da tecnologia aplicada no cliente e permitir o uso de tecnologias diversificadas na parte client, ou seja, o usuário poderá utilizar uma interface gráfica do tipo Client x Server (VB,Delphi etc) com MDI e tudo o que tem direito ou uma interface WEB ou as duas. Quero dizer que se for intranet o usuário irá clicar em um ícone no desktop do windows e irá iniciar o módulo client tranquilamente se for extranet o usuário irá acessar um link e pronto, irá começar a utilizar algumas páginas leves feitas em html.
Tudo isso acessando as MESMAS REGRAS DE NEGÓCIO e mesmos MECANISMOS DE ACESSO A BASE DE DADOS.

Tá ai coisa (para não falar outra coisa) toda, se vc se arrepender de ter perguntado eu vou entender acredite mim rsrsrsrsr.

Ahhhh…já ia esquecendo. Estude bastante sobre DDD e Padrões, mais 2 pedrinhas em cima do caminhão.

Desculpe se exagerei mas foi isto que entendi do que vc escreveu.

flw

V

Apesar do notório tom de ironia, agradeço mais uma vez pelas respostas … :slight_smile:

Abraço!

Victor Hugo

Criado 8 de agosto de 2008
Ultima resposta 11 de ago. de 2008
Respostas 7
Participantes 2