Cliente C++/servidor Java

Sou desenvolvedor em C++, estou iniciando em java e minha dúvida é a seguinte.

Ja fiz alguns testes com CORBA, achei um pouco complicado e poluído. Gostaria de saber como fica a performance (desempenho) se o sistema fizer esta conexão através de um servlet, como se fosse uma aplicação web JEE5.

ou seja: Cliente C++ servidor WEB componentes EJB3.

Quais as vantagens e desvantagens utilizando um servlet?

Obrigado pela atenção
Juaci M. de Carvalho
Torres RS.

Acho desvantagem usar servlet. Não por performance, mas por facilidade no desenvolvimento.

Como você tem o cliente em C++, use Corba para acessar os EJBs. Outra opção é usar Webservices.

Que eu saiba, Corba tem mais performance que webservice. Mas Webservice ganha em interoperabilidade.

“Selecionei Quote ao invés de Editar.” :frowning:

quanto a valer a pena usar servlet isso depende, o que esse servlet deverá retornar??

se for algo gerado dinamicamente via código por exemplo como um xml parseado, ou algum tipo de string curta, , ai você pega a string e passa pro retorno http, nesse caso não é ruim de usar servlet não.

agora, se você for ficar colocando um monte de código html, coisa digitada na mão, ai ja não compensa muito usar servlet mesmo.

o lado positivo do servlet seria… todas as vantagens de se usar http, a parte de segurança por exemplo usando ssl, tudo o que ja se tem pronto, bem como a performance com servlet que é muito boa (normalmente os servlets containeres usam threads para responder as requsições, ao invés de uma instancia da servlet para cada requisição, o que faz a performance ficar boa,). Você também não va ter muito trabalho pra criar essa servlet, coisa que me parece que não te agradou muito no caso do corba.

um exemplo onde isso é usual seria em rest web services, da uma pesquisada a respeito se for o caso (conheci isso recentemente e achei bemlegal).

da uma olhada nesse primeiro post dessa pagina:

http://www.guj.com.br/posts/list/30/129945.java#702245

A idéia colocada seria para desenvolver um aplicativo comercial, com insert, update, delete e requisições (por exemplo: pedir uma lista de produtos com 8000 registros).
Efetuar uma venda de um caixa de um mercado.

Tenho uma aplicação comercial em C++/Qt que faz a conexão direto na base (PostGreSQL), gostaria de mudar para essa nova estrutura JEE5. Deixar apenas a UI no cliente.

Veja bem, vai depender de como está estruturado o seu cliente C++. Se estiver fácil de separar as camadas, beleza. Agora, se a apresentação, regras de negócio e acesso a dados estiverem muito amarrados, talvez seja mais fácil refazer. Por isso, se você quer mudar apenas por “bonito”, eu deixaria como está e melhoraria apenas os pontos críticos.

O ideal é que você dê mais detalhes sobre o projeto, e também o porquê de migrar para JEE?

Gostaria de deixar as regras de negócio no servidor java por questão de segurança e na persistência dos dados, outra questão seria por exemplo um sistema de hotel, o DESKTOP em c++/Qt, reserva on-line WEB, comanda eletrônica para o restaurante (PDA). Todos esses pontos podem acessar as regras independente do cliente (da linguagem e Sistema Operacional).
Qual seria a melhor maneira de fazer esta conexão entre cliente(C++/Qt) e servidor JEE5. Sei que terei muito trabalho mas no momento posso migrar aos poucos sem pressa.
Pesquisei um pouco sobre CORBA, SERVLET e WEBSERVICES, o corba eu achei muito trabalhoso, por isso, a pergunta inicial foi sobre a performance do servlet. Se minha aplicação fosse WEB seria toda com servlet, então porque não poderia ser também feita da mesma forma em C++/Qt?
Quais as desvantagens de utilizar servlet?

No teu caso eu não vejo Servlet como a melhor solução. Como você vai fazer para retornar seus dados a partir do servlet? Vai pesquisar no banco de dados, criar um texto/protocolo de retorno e fazer o cliente interpretar? Porquê ter esse trabalho, se você pode usar EJB, expor como webservices (pode usar até anotações) e usar alguma ferramenta de parser do SOAP para objeto no C++ (que com certeza tem, até Delphi tem).

(Eu citei EJB, mas pode ser outra tecnologia/framework que faça esse trabalho, Spring é outro exemplo.)

Porque seria uma ‘aplicação web’, ai sim você usaria servlet (normalmente como controller) e outra tecnologia para apresentação, JSP/JSF por exemplo. Não faz sentido usar tecnologia web se teu sistema não é web.

Não diria desvantagens, apenas que no teu caso não encaixa. Você tem um cliente em outra linguagem/plataforma, e quer ter serviços que possam ser acessados por qualquer tipo de tecnologia. Logo, o mais sensato é usar Webservices. Que é independente de plataforma (XML). Também é preciso desconsiderar Corba, que você eliminou pela complexidade.