2009-04-14 12 views
6

Estoy en un proyecto donde intentamos construir un reemplazo de GUI para una aplicación anterior. Antes de implementar realmente la funcionalidad, comenzamos a crear prototipos con Eclipse RCP (Rich Client Platform) y GWT (Google widget toolkit, una Rich Internet Application). ¿Cuál es su experiencia con las GUI de RIA y RCP? ¿Cuándo tiene sentido usar RIA y en qué situaciones un cliente rico es más adecuado? Con las posibilidades actuales de RIA, se vuelve cada vez más difícil trazar la línea. ¿Tienes alguna experiencia?RIA contra RCP


EDIT: Todas sus respuestas son realmente interesantes. Me gustaría aceptarlos todos porque contribuyen a la respuesta de mi, admito una pregunta bastante abierta. Así que mi voto para cada uno de ellos. Espero que la generosidad sea compartida entre ustedes.

Respuesta

7

No hay ningún detalle sobre los requisitos de su aplicación que es realmente clave para responder la pregunta.

La gran ventaja de usar GWT es la facilidad de implementación en relación con algo parecido a RCP. No hay nada más fácil para el usuario que apuntar su navegador web a una URL y nada más fácil para el equipo de operaciones que presionar el código hacia el servidor, rebotarlo y llamarlo un día.

En cuanto a la funcionalidad, la gran área donde GWT se queda corto sería una visualización de datos más rica: gráficos, árbol/nodo, diagramas de red, etc. Esto es posible con GWT y ayuda en el servidor pero las limitaciones de DHTML comienzan a mostrarse, incluso con un poderoso conjunto de herramientas como GWT. Por otro lado, RCP le ofrece toda la potencia de Java 2D para visualizar todo lo que desee. Este tipo de características pueden no ser necesarias para usted, pero también son las que hacen que las aplicaciones sean realmente interesantes, más que un desorden de controles de tabulación, árbol y cuadrícula de datos.

He estado desarrollando con Adobe Flex desde hace varios años y me parece que es realmente potente, ya que tengo más o menos las mismas ventajas de implementación que GWT, pero ofrece el mismo poder que RCP. Es posible que desee comprobar eso también.

3

En mi experiencia, las GUI de RIA tienden a ser lo suficientemente robustas para comunicar la mayor parte de la información a los usuarios. Probablemente existan algunas excepciones a esto, pero no puedo pensar en una buena en este momento. RIA tiene la ventaja de ser accesible para cualquier persona a través de un navegador web sin instalar un cliente grueso (RCP). A menos que tengas una pantalla compleja especial que no se puede hacer a través de tecnologías web, te recomendaría ir por la ruta RIA.

3

Desarrollamos un plug-in (proyecto piloto) para Eclipse que luego se convirtió en una aplicación RCP independiente (no queríamos enviarlo como un complemento ya que no queríamos Eclipse como un pre -req, así que tuvimos que agregar un código de soporte haciéndolo un poco más complicado que un simple movimiento en RCP) y en una aplicación RIA usando jQuery.

A pesar de los mejores esfuerzos del campamento de RCP, la versión de RIA tardó aproximadamente el mismo tiempo en desarrollarse (aunque fue desde cero) y se vio más suave en la ejecución.

El factor decisivo fue que no se requirió instalación con la versión RIA ya que todos nuestros clientes ya tienen servidores de aplicaciones y las actualizaciones se centralizan en un servidor, no en cada cliente.

La versión RCP ha sido dejada atrás en la funcionalidad. En lo que a nosotros respecta, Eclipse está bien como entorno de desarrollo (para Java, no tenemos experiencia con los otros lenguajes) pero el esfuerzo que ponen en dividir el IDE de la GUI (para hacer posible el RCP) no es bastante terminado.

Por otro lado, jQuery parece hecho a medida para ese tipo de cosas (probablemente porque fue creado para ese tipo de cosas). Tanto el desarrollo como el funcionamiento de las aplicaciones son muy buenos.

0

Cual es la naturaleza de esta aplicación. ¿Debería ejecutarse completamente en una computadora cliente? ¿Necesita acceder a datos almacenados localmente? ¿Acabas de cambiar la GUI de una aplicación existente con el motor siendo el código heredado?

0

Mi pareja está trabajando en un dispositivo de software donde ha aprovechado AJAX como medio para configurar el dispositivo. El conjunto de características para la configuración es rico y se alinea muy bien con RIA. Del mismo modo, tener que instalar el software localmente en el navegador web es extremadamente desaconsejable.

3

Las aplicaciones de Internet enriquecidas son una buena manera de hacer un software robusto que actúe como el software de escritorio tradicional. Un problema común con RIA es que muchos desarrolladores tienden a colocar la lógica comercial en el código del lado del cliente. La lógica empresarial y los estados en el código del lado del cliente son muy inseguros, ya que uno puede manipular el código del lado del cliente en tiempo de ejecución. Además, es un sistema de whitebox, que permite a los piratas informáticos examinar el código y encontrar puntos débiles, como la validación de entrada realizada solo en el código del lado del cliente o manipulando estados. No te dejes engañar por la ofuscación, ya que solo ralentiza a un hacker, pero no lo detiene. Billy Hoffman escribió un buen libro sobre seguridad AJAX (llamado, ta-daa, "seguridad Ajax") y lo recomiendo para todos los desarrolladores de RIA.

Esto no significa que RIA sea malo por definición, puede escribir RIA seguro si sabe lo que está haciendo (sin lógica comercial en el código del cliente, sin estados, validación de entrada [también] en el servidor, etc.) Hay un par de marcos que implementan este RIA impulsado por servidor seguro, uno es IT Mill toolkit (basado en GWT) y ICEFaces también debe ser uno que yo sepa.

1

Una organización en la que trabajé para elegir RCP porque sus usuarios necesitaban trabajar con la aplicación tanto en línea como fuera de línea (cuando están de viaje, etc.). Sé que esto es posible con google grears ahora, pero Gears no es lo suficientemente convencional como para que la gran organización lo base en su producto insignia. Pero si tus usuarios no necesitan desconectarte, realmente ahorrarías la molestia de sincronizar las actualizaciones de datos/productos de usuario ect entre tu aplicación de rcp y tu servidor, RIA sería el camino a seguir en este caso.

7

Aunque GWT va muy lejos, no ofrece la misma flexibilidad y accesibilidad que una aplicación adecuada.

Incluso si una aplicación GWT puede hacer casi todo lo que puede hacer una aplicación real, hay una serie de factores que indican que RCP sería la mejor herramienta.

  • trabajo repetida
  • Las porciones de entrada
  • largas sesiones
  • tareas repetidas
  • widgets personalizados para la edición o presentación.
  • Ventanas múltiples con datos diferentes.
  • Teclas rápidas para operaciones de uso frecuente
  • Respuestas rápidas.
  • Una barra de menú real, barras frías.
  • Una ventana adecuada que es fácil de encontrar en la barra de tareas.
  • Menús contextuales para operaciones raramente usadas
  • Número de usuarios (o base conocida).
  • Animaciones extensas o complejas o actualizaciones en tiempo real.

Si cree que su aplicación necesita un banco de trabajo, con varias vistas y editores, entonces la elección está dada.

RCP y la mesa de trabajo no son tan fácil trabajar con él, pero se obtiene mucho más de forma gratuita si la aplicación se beneficiaría del modelo de trabajo más "libre" y abierto con múltiples puntos de vista/editores abiertos etc.

Si la aplicación es para tareas más ocasionales, entonces GWT es realmente bueno.

GWT es realmente agradable, pero sigue siendo una aplicación web, y eso apesta a veces. No me gustaría hacer todo mi trabajo en una aplicación web donde puedo presionar accidentalmente una tecla y perder todo mi trabajo y la sesión. (Mi teclado incluso tiene una tecla al lado de las teclas de flecha que parece imposible de desactivar). Es lo suficientemente potente como para hacer casi cualquier cosa que puedas hacer en RCP, pero todavía se está ejecutando dentro del navegador web, y eso puede ser irritante.

Recuerde que puede utilizar Webstart de Java para implementar aplicaciones RCP.

1

También existe la posibilidad de implementar un RCP con algunos de los beneficios de un RIA. Una solución que se investiga para nuestro cliente (para uso exclusivo del personal dentro de su empresa) es el uso de una aplicación Java lanzada a través de un servlet Java.

Algunos de los beneficios identificados incluyen:

  • Se actualiza fácilmente, al igual que un RIA (acaba de volver a desplegar su archivo JAR, se recogió la próxima vez en cualquier momento examina la página con el applet)
  • Se ve, se siente, se comporta y funciona como una aplicación nativa, al igual que un PCR (gracias a SWT)

Algunos inconvenientes identificados incluyen:

  • Las computadoras del usuario deben tener instalado un complemento de Java.
  • La aplicación debe desarrollarse en una versión de Java compatible con los complementos de los usuarios (aunque el cliente puede requerir una versión mínima para instalarse en las computadoras del personal). La herramienta RetroWeaver puede ayudar, aunque no tengo mucha experiencia con ella.
  • El usuario debe mantener abierto el navegador web; de lo contrario, la aplicación finalizará.