2009-05-14 22 views
25

Vengo a Java desde C# & ASP.NET MVC, me encantaría encontrar un equivalente en el mundo de Java que pueda usar en Google App Engine. Ya comencé a jugar con FreeMarker e incluso di los primeros pasos para escribir un marco muy simple. Sin embargo, idealmente no tendría que hacer todo el trabajo duro, ¡alguien debe haber hecho esto ya! Entonces mi pregunta es: ¿qué frameworks hay disponibles que me resulten familiares desde ASP.NET MVC y podría usarlos en Google App Engine para Java?MVC en Google App Engine Java world

Las cosas claves que querría son:

  • simple Enrutamiento - /products/view/1 se asigna la vista de la acción del controlador de productos con el idproducto de 1
  • motor de plantillas - de alguna manera de pasar fácilmente 'ViewData' a la vista, y desde la vista de acceder fácilmente a ella, idealmente me gustaría evitar todo lo que sea demasiado XMLy (por eso me gusta FreeMarker).
+0

También hay Apache Struts: https://struts.apache.org/ – Chloe

Respuesta

12

Actualmente estoy trabajando en una aplicación de Google App Engine utilizando Spring MVC. Es mucho más maduro que ASP.NET MVC, por lo que no debería decepcionarse. Como una ventaja adicional, tienes toda la potencia de IoC de Spring.

Para la capa de vista, estoy probando Velocity. Es bastante simple, pero aún tengo que decidir si lo preferiré sobre los JSP. Eché un vistazo breve a FreeMaker pero no me gustó lo que vi. Si quieres mantenerte alejado de las plantillas XML'y JSP de las que recomiendo, dale un giro a Velocity.

El único problema que he tenido con Spring en GAE es la carga de archivos. Las implementaciones de MultipartResolver dependen de un directorio de archivos temporal. Después de escribir mi propia implementación, volví a la carga sin problemas de archivos en mis modelos.

+0

Fuera de interés, ¿está utilizando Spring 2.5 o 3.0? – thatismatt

+0

Estoy usando 2.5, probablemente cambie a 3.0 una vez que esté en repositorios Maven globales. – pjesi

1

JavaServer Faces (JSF) He oído que es similar al framework MVC de Microsoft. (Uso JSF pero nunca he usado .NET MVC). Y creo que JSF 1.1 funciona bien en Google App Engine, y sospecho que las versiones más recientes de JSF funcionarán si te apegas a usar XHTML en lugar de JSP como plantillas. También hay algunas buenas bibliotecas que le permiten aprovechar una interfaz AJAX en el marco JSF, RichFaces es muy popular. Salida JavaServer Faces on sun.com y también JBoss RichFaces

2

También tengo una gran preferencia por Freemarker. Sugiero que consulte el marco de Inducción, su motor de plantilla es conectable pero el soporte predeterminado es para Freemarker. La inducción es un marco MVC ligero y rápido (7.7K líneas), pero tiene muchas características ausentes en los principales marcos MVC, tales como:

  • recarga dinámica durante el desarrollo cuando cambie los controladores, vistas o modelos
  • la carga de archivos de manera sencilla (no muy diferentes que una cadena entrada)
  • sin necesidad de configuración para los controladores
  • capacidad de analizar dependencias entre sus modelos, vistas y controladores utilizando el IDE
  • basadas expresiones regulares asignaciones de URL
  • mejor soporte para gestionar redirecciones de cualquier marco MVC

En cuanto a la cuestión de carga de archivo planteada por @pjesi, Induction le permite establecer el umbral de tamaño al que se escriben los archivos en el disco. Si se configura lo suficientemente grande, no debería intentar escribir ningún archivo en el disco.

Salida del tutorial de introducción aquí: http://www.inductionframework.org/getting-started-tutorial.html

8

Hay un par de marcos MVC que usted debe tener en cuenta (eso es lo que estoy haciendo ahora). ¡Inicialmente, fui con Spring MVC (3.0) y el comienzo en frío de GAE es horrendo! El inicio tarda unos 10 segundos (y ni siquiera estoy usando nada complejo, como la seguridad de primavera, etc.), así que necesito usar un trabajo cron para mantenerlo vivo. Así que no recomiendo que uses Spring en absoluto en GAE.

Tome un vistazo a los siguientes marcos:

VRaptor

Slim3

Google Sitebricks

En cuanto a la plantilla, utilizo Sitemesh - utilizado durante bastante tiempo, por lo no veo la necesidad de cambiar

Espero que esto ayude!

3

Play Framework se ajustaría a la factura. Es un marco de MVC moderno para Java y tiene un módulo de Google App Engine para proporcionar compatibilidad. Ver http://www.playframework.org/modules/gae.

Otro beneficio de usar Play sería la portabilidad. Puede implementar Play utilizando su servidor web incorporado (opcionalmente detrás de Apache para el almacenamiento en caché, equilibrio de carga, etc.) o puede agruparlo como un archivo .war para su implementación en los muchos servidores de aplicaciones Java (Glassfish, Tomcat, ...).