Pergunta

Eu estou em um projeto onde nós tentamos construir uma substituição GUI para um aplicativo antigo. Antes de realmente implementar a funcionalidade nós começamos a prototipagem com Eclipse RCP (Rich Client Platform) e GWT (Google Widget Toolkit, um Rich Internet Application). Qual é a sua experiência com RIA e RCP GUIs? Quando faz sentido usar RIA e em que situações um cliente rico é mais adequado? Com as actuais possibilidades de RIA, torna-se cada vez mais difícil traçar a linha .. Você tem alguma experiência?


EDIT: Todas as suas respostas são realmente interessantes. Eu gostaria de aceitar todos eles como eles contribuem para a resposta da minha, admito uma pergunta muito aberta. Então, o meu voto para cada um deles. Espero que a recompensa será compartilhado entre vocês.

Foi útil?

Solução

Não há nenhum detalhe sobre os requisitos do seu aplicativo que é realmente a chave para responder à pergunta.

A grande vitória para usando GWT é a facilidade de implantação em relação a algo como RCP. Não há nada mais fácil para o usuário do que apontar seu navegador web em um URL e mais fácil para a equipe de operações de empurrar código para o servidor, saltando-lo e chamá-lo um dia nada.

Quanto a funcionalidade, a área grande, onde GWT vai vir para cima curto seria mais ricas visualizações de dados: gráficos, árvore / nó, diagramas de rede, etc. Este material é possível com GWT e alguma ajuda no servidor, mas as limitações de DHTML começar a mostrar através de, mesmo com um conjunto de ferramentas poderoso como GWT. Por outro lado, RCP lhe dá todo o poder do Java 2D para visualizar o que quiser. Esses tipos de recursos pode não ser necessário para você, mas eles também são os únicos que aplicações fazem realmente interessante, mais do que apenas uma confusão de guia, árvores e da grade de dados controles.

Eu tenho vindo a desenvolver com o Adobe Flex há vários anos e encontrá-lo para ser realmente poderoso, tendo mais ou menos as mesmas vantagens de implantação como algo como GWT, mas oferecendo o mesmo tipo de poder como RCP. Você pode querer verificar isso também.

Outras dicas

Mesmo que GWT vai um longo caminho, não está dando a mesma flexibilidade e acessibilidade como uma aplicação adequada.

Mesmo thouhg uma aplicação GWT pode fazer quase tudo uma lata aplicação real, um número de fatores indica que RCP seria a melhor ferramenta.

  • trabalho repetido
  • Lotes de entrada
  • sessões longas
  • tarefas repetidas
  • widgets personalizados para edição ou apresentação.
  • Múltiplas janelas com dados diferentes.
  • teclas rápidas para operações freqüentemente usados ??
  • Respostas rápidas.
  • A barra de menu real, coolbars.
  • A janela adequada, que seja fácil de encontrar na barra de tarefas.
  • Os menus de contexto para as operações raramente usados ??
  • Limited (ou base conhecida de) número de usuários.
  • animações extensas ou complexas ou atualizações em tempo real.

Se você acha que sua aplicação precisa de uma bancada, com vários pontos de vista e editores, então a escolha é dada.

RCP ea bancada não que são fáceis de trabalhar, mas você tem muito para livre se a aplicação se beneficiaria do modelo de trabalho mais "livre" e aberto com múltiplas visualizações abertas / editores etc.

Se o aplicativo for para tarefas mais ocasionais, então GWT é realmente bom.

GWT é muito bom, , mas ainda é uma aplicação web, e que suga às vezes. Eu não iria querer fazer todo o meu trabalho em uma aplicação web onde eu posso acidentalmente pressionar uma tecla e perder todo o meu trabalho e a sessão. (Meu teclado ainda tem uma chave ao lado das teclas de seta, que parece ser impossível desactivar). Sua bastante poderosa que fazer quase qualquer coisa que você pode fazer em RCP mas ainda correndo dentro do navegador web, e que pode ser irritante.

Lembre-se que você pode usar java Webstart para aplicações implantar RCP.

Foi desenvolvido um (projeto piloto) plug-in para o Eclipse, que foi então convertido em ambos um aplicativo independente RCP (que não queria enviá-lo como um plug-in, uma vez que não queria Eclipse como um pré req, por isso tivemos de adicionar algum código de suporte tornando-se um pouco mais complicado do que apenas um simples movimento em RCP) e em uma aplicação RIA usando jQuery.

Apesar dos melhores esforços do campo RCP, a versão RIA levou aproximadamente o mesmo tempo para desenvolver (apesar de ter sido a partir do zero) e parecia mais suave em execução.

O argumento decisivo foi que não havia nenhuma instalação necessária com a versão RIA já que todos os nossos clientes já possuem servidores de aplicativos e atualizações são centralizados em um servidor, e não cada cliente.

A versão RCP desde há muito tem sido deixado para trás em termos de funcionalidade. Tanto quanto nós estamos preocupados, Eclipse é muito bem como um ambiente de desenvolvimento (para Java, não temos experiência com as outras línguas), mas o esforço que eles colocam em divisão para além do IDE a partir da GUI (para fazer RCP possível) não é < em> muito acabado.

Por outro lado, jQuery parece construído sob encomenda para esse tipo de coisa (provavelmente porque foi construído sob encomenda para esse tipo de coisa). O desenvolvimento e execução de aplicações são muito agradáveis.

Rich Internet Applications é uma boa maneira de tornar o software robusto que agir como software desktop tradicional. Um problema comum com RIA é que muitos desenvolvedores tendem a lógica local de negócios no código do lado do cliente. lógica de negócios e estados no código do lado do cliente é muito inseguro como se pode manipular o código do lado do cliente em tempo de execução. Além disso, é um sistema de whitebox, que permite que hackers para examinar o código e encontrar pontos fracos, como a validação de entrada feito apenas no código do lado do cliente ou manipular estados. Não se deixe enganar por ofuscação, uma vez que só retarda um hacker, mas não detê-lo. Billy Hoffman escreveu um bom livro sobre a segurança do AJAX (chamado, ta-daa , "segurança Ajax") e eu recomendo para todos os desenvolvedores RIA.

Isto não significa que RIA é pela má definição, você pode escrever RIA seguro se você sabe o que está fazendo (sem lógica de negócios no código do lado do cliente, nenhum estado, validação de entrada [também] feito no lado do servidor etc) . Há um par de quadros que implementam este servidor securer impulsionado RIA, um é TI Moinho kit de ferramentas (baseado em GWT) e ICEFaces também deve ser um para o meu conhecimento.

Na minha experiência, RIA GUIs tendem a ser bastante robusto para se comunicar mais informações aos usuários. Há alguns provavelmente algumas exceções para isso, mas eu não consigo pensar em um bom momento. RIA tem a vantagem de ser acessível a qualquer pessoa através de um navegador web sem instalar um cliente de espessura (RCP). A menos que você tenha algum exibição complexo especial que não pode ser feito através de tecnologias web eu recomendo ir a rota RIA.

Uma organização i trabalhou para escolher RCP porque seus usuários necessário para trabalhar com a aplicação online e offline (quando eles estão na estrada, etc). Eu sei que isso é possível com grears Google Now, mas as engrenagens não é realmente suficiente mainstream para grande organiazation a base de que o principal produto diante. Mas se os usuários não tem a necessidade de ir fora de linha você realmente salvar o trabalho de sincronização de dados do usuário / produto atualizações ect entre seu aplicativo RCP e servidor, RIA seria o caminho a percorrer neste caso.

Há também a possibilidade de implantação de um RCP com alguns dos benefícios de um RIA. Uma solução que está sendo investigado para o nosso cliente (para uso somente por funcionários dentro da empresa) é o uso de um aplicativo Java lançado através de um servlet Java.

Alguns benefícios identificados incluem:

  • É facilmente atualizado, bem como um RIA (apenas re-implantar seu arquivo JAR, ele será pego as navega a qualquer hora da próxima vez para a página com o applet)
  • olha, sente, se comporta e funciona como um aplicativo nativo, bem como um RCP (graças a SWT)

Alguns detrimentos identificadas incluem:

  • computadores do usuário deve ter um plugin do Java instalado.
  • O pedido deve ser desenvolvido em uma versão do Java compatível com plugins dos usuários (embora o cliente pode exigir uma versão mínima para ser instalado em computadores de pessoal). A ferramenta RetroWeaver pode ajudar, embora eu não tenho muita experiência com ele.
  • O usuário deve manter o navegador aberto, caso contrário a aplicação será encerrada.

O que é a natureza desta aplicação. Caso seja funcionar completamente em um computador cliente? Será que ela precisa de acesso localmente os dados armazenados? Você está apenas replcaning a GUI para um aplicativo existente com o motor ainda está sendo o código legado?

Meu outro significativo está trabalhando em um dispositivo de software onde ela tem alavancado AJAX como um meio para configurar o aparelho. O conjunto de recursos para a configuração é rica e se alinha muito bem com RIA. Da mesma forma, ter que instalar software localmente no navegador da web é extremamente desanimado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top