tutorial - MVC en un mundo Java de Google App Engine
google sdk app engine (5)
Voy a Java desde C # y 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?
Las cosas clave que me gustaría son:
- Enrutamiento simple -
/products/view/1
se asigna a la acción de vista del controlador de productos con el productid de 1 - Template Engine : una forma de pasar fácilmente ''ViewData'' a la vista, y desde la vista de fácil acceso a ella, idealmente me gustaría evitar todo lo que sea demasiado XMLy (por eso me gusta FreeMarker ).
Actualmente estoy trabajando en una aplicación de Google App Engine con 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 tuve 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.
Hay un par de frameworks de MVC que debes considerar (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.
Eche un vistazo a los siguientes marcos:
En cuanto a la Sitemesh plantillas, uso Sitemesh : lo Sitemesh usado durante bastante tiempo, así que no veo la necesidad de cambiar.
¡Espero que esto ayude!
JavaServer Faces (JSF) que escuché 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. Echa un vistazo a JavaServer Faces en sun.com y también a JBoss RichFaces
Play Framework encajaría en la cuenta. 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, ...).
También tengo una fuerte 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 framework MVC ligero y rápido (7.7K líneas) pero tiene muchas características ausentes en los principales frameworks MVC, tales como:
- recarga dinámica durante el desarrollo cuando cambia los controladores, vistas o modelos
- cargas de archivos tan simples (no muy diferentes de las entradas de cadena)
- no se requiere configuración para los controladores
- capacidad para analizar las dependencias entre sus Modelos, Vistas y Controladores usando su IDE
- mapeo de URL basado en expresiones regulares
- mejor soporte para gestionar redirecciones de cualquier marco MVC
En cuanto a la cuestión de carga de archivos planteada por @pjesi, Induction le permite establecer el umbral de tamaño en el 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.
Consulte el tutorial de inicio aquí: http://www.inductionframework.org/getting-started-tutorial.html