2008-09-18 8 views
8

En mi proyecto actual, hemos estado utilizando Struts 1 en los últimos años, y ... ejem ... Struts está mostrando su edad. Estamos migrando lentamente nuestro código de front-end a un cliente Ajax que consume XML de los servidores. Me pregunto si alguno de ustedes ha migrado una aplicación heredada de Struts a un marco diferente, y qué desafíos enfrentaron al hacerlo.¿Alguien ha migrado de Struts 1 a otro marco web?

Respuesta

7

Sure. Pasar de Struts a un framework AJAX es una experiencia muy liberadora. (Aunque utilizamos JSON en lugar de XML. Mucho más fácil de analizar.) Sin embargo, debe tener en cuenta que se trata de una reescritura completa de su aplicación.

En lugar del clásico esquema de base de datos/JSP/Actions para MVC, se moverá a un esquema Servlet/Javascript donde el modelo se representa mediante solicitudes GET HTTP, las acciones se representan mediante solicitudes POST/PUT/DELETE y la vista es renderizada sobre la marcha por el navegador web. Esto lleva a desafíos interesantes en cada área:

Lado del servidor - En el lado del servidor deberá desarrollar un estándar para exponer datos al cliente. El método más simple y fácil es adoptar una metodología REST que mejor se adapte a la jerarquía de sus datos. Esto es bastante simple de implementar con servlets, pero Sun también ha desarrollado un Java 1.6 scheme usando atributos que se ven muy bien.

Otro aspecto del lado del servidor es elegir un protocolo de transmisión. Sé que ya mencionaste XML, pero es posible que quieras reconsiderarlo. Los analizadores XML varían mucho entre los navegadores. Un navegador podría hacer que el documento enraice el primer hijo, otro podría agregar un objeto de contenido especial, y todos analizan espacios en blanco de manera diferente. Peor aún, la función normalize() no parece ser implementada correctamente por los principales navegadores. Lo que significa que el análisis XML puede estar lleno de piratas informáticos.

JSON es mucho más fácil de analizar y más consistente en sus resultados. Javascript y Actionscript (Flash) pueden traducir JSON directamente a objetos. Esto hace que acceder a los datos sea una cuestión simple de x.y o x [y]. También hay muchas API para manejar JSON en todos los idiomas imaginables. ¡Debido a que es tan fácil de analizar, es casi compatible MEJOR que XML!

Lado del cliente - El primer problema con el que se encontrará es que nadie entiende cómo escribir Javascript. ESPECIALMENTE aquellos que piensan que lo hacen. Si tiene algún libro en Javascript, tírelo AHORA. Prácticamente no hay buenos libros sobre el idioma, ya que todos siguen el mismo patrón de "pirateo" sin realmente sumergirse en lo que están haciendo.

Desde el nivel más bajo, su equipo necesitará capacitación sobre el desarrollo de Javascript. Comience con el Javascript Client Guide. Es el de facto fuente de información sobre el idioma. La siguiente parada es Douglas Crockford's videos en Javascript. No estoy de acuerdo con todo lo que tiene que decir, pero él es uno de los pocos expertos en el idioma.

Una vez que lo haya comprendido, considere qué marcos, si los hay, desea usar. En general, no me gustan las cosas como Prototype y Mootools. Tienden a tomar un problema simple y empeorarlo. Sin embargo, puede sentirse libre de evaluar estas herramientas y decidir si funcionarán para usted.

Si realmente siente que no puede vivir sin un marco porque su equipo es demasiado inexperto, entonces GWT podría encajar en la cuenta. GWT le permite escribir rápidamente aplicaciones web DHTML en código Java y luego compilarlas en Javascript. El PROBLEMA es que estás renunciando a cantidades masivas de flexibilidad al hacer esto. El lenguaje Javascript es mucho más poderoso que lo que expone GWT.Sin embargo, GWT permite que los desarrolladores de Java se aceleren más rápido. Así que elige tus batallas.

Esas son las áreas clave que se me ocurren. Puedo decir que darás un suspiro de alivio una vez que obtengas struts de tu aplicación. Puede ser un poco bestial. Especialmente si has tenido desarrolladores inexpertos trabajando en tu modelo de Struts. :-)

¿Alguna pregunta?

Edit 1: Olvidé agregar que su equipo debería estudiar el W3C specs religiosamente. Estas son las API disponibles para usted en los navegadores modernos. Si atrapa a alguien que use las API DOM 0 (por ejemplo, document.forms ['myform']. Blah.value en lugar de document.getElementById ("blah"). Value) oblígalo a transcribir toda la especificación DOM 1 hasta que lo comprenda arriba Hacia abajo.

Editar 2: Otro tema clave a considerar es cómo documentar su nueva y elegante aplicación AJAX. Las interfaces de estilo REST se prestan bien para ser documentadas en una Wiki. Lo que hice fue tener una página de nivel superior que enumeraba cada uno de los servicios y una descripción. Al hacer clic en la ruta del servicio, accederá a un documento con información detallada sobre cada una de las rutas secundarias. En teoría, este esquema puede documentar a la profundidad que necesita el árbol.

Si va con JSON, deberá desarrollar un esquema para documentar los objetos. Acabo de enumerar las posibles propiedades en el Wiki como documentación. Eso funciona bien para árboles de objetos simples, pero puede volverse complejo con objetos más grandes y sofisticados. Puede considerar completarse con algo como IDL o WebIDL en ese caso. (No puede ser mucho peor que XML DTDs y Schemas. ;-))

El código DHTML es un poco más clásico en su documentación. Puede usar una herramienta como JSDoc para crear documentación al estilo JavaDoc. Solo hay una advertencia. El código Javascript no se presta bien para ser documentado en el código. Si no es por otra razón que el hecho de que hincha la descarga. Sin embargo, puede encontrarse escribiendo código que opera como un objeto cohesivo, pero no está codificado detrás de la escena como tal objeto. Por lo tanto, la mejor solución es crear archivos esquemáticos JSDoc que representen y documenten los objetos Javascript.

Si está utilizando GWT, la documentación debería ser una obviedad.

+0

trabajando con JAX-RS es muy agradable y le ahorrará tiempo invertir mejor en el front-end. especialmente con respecto a la documentación. Me hubiera gustado ver algunos consejos sobre cómo estructurar la aplicación. solo una descarga descomunal de html y js (un SPA) parece difícil de trabajar. – oligofren

2

Echa un vistazo a Stripes Framework. Si está familiarizado con los puntales, entonces las rayas tendrán sentido para usted, pero es mucho mejor. Tienen una sección Stripes vs Struts en su sitio web. Podrías comprobarlo y ver si te interesa. Le permite trabajar con cualquier marco ajax que desee, y no creo que lleve mucho tiempo migrar de puntales a franjas.

Cuestiones relacionadas