Redefiniendo el MVC con Grails

2,523
-1

Published on

Presentación del tema "Redefiniendo el MVC con Grails" presentada por mí el día Sábado 22 de Agosto en la Reunión de SpringHispano.org, grails.org.mx y JavaMexico

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,523
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
63
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Redefiniendo el MVC con Grails

  1. 1. El MVC redefinido con Grails (Controllers y GSP)<br />José Juan R. Zuñiga (@neodevelop)<br />
  2. 2. Agenda<br />Reuniones previas<br />Groovy<br />MVC<br />Grails<br />
  3. 3. Reuniones previas<br />6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org<br />http://springhispano.org/?q=node/469<br />http://www.slideshare.net/domingo.suarez/taller-groovy<br />
  4. 4. Reuniones previas<br />6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org<br />http://springhispano.org/?q=node/374<br />http://www.slideshare.net/neodevelop/spring-mvc-final-presentation<br />http://www.slideshare.net/domingo.suarez/grailsorgmx-priemra-reunion-presentation<br />
  5. 5. Lo más importante de todo esto…<br />
  6. 6. Los ponentes…<br />
  7. 7. Hablemos de MVC<br />MVC = Model–View–Controller<br />Es un patrón de diseño que provee un mecanismo para construir una esbelta y limpia capa web<br />Claramente separa el negocio, la navegación y la lógica de presentación<br />Aunque…ya no solo aplica a Web, ahora también es implementado en Desktop( el mejor caso: Griffon - ?:D )<br />
  8. 8. ¿Cómo trabaja MVC?<br />
  9. 9. Motivaciones<br />Facilita la carga de mantenimiento<br />Los cambios en el negocio tienen impacto mínimo en el mejor de los casos nulo<br />Facilita el desarrollo en un equipo multidisciplinario<br />Zapatero a tu zapato, DBA a tu base de datos, desarrollador de persistencia a tus DAO’s, Diseñador a tu diseño….<br />Uso de herramientas especializadas<br />Existen lenguajes de plantillas y etiquetado que son mejores para crear HTML<br />Facilita las pruebas<br />Podríamos probar mucho más código fuera de un contenedor Web<br />
  10. 10. Frameworks MVC en Java<br /><ul><li>Struts
  11. 11. Turbine
  12. 12. Expresso
  13. 13. Tapestry
  14. 14. Apache Cocoon
  15. 15. Maverik
  16. 16. Anvil
  17. 17. Jaffa
  18. 18. Japple</li></ul>JPublish<br />Jucas<br />WebOnSwing<br />Chrysalis<br />VRaptor<br />Swinglets<br />Millstone<br />Wicket<br />Java Server Faces<br /><ul><li>MyFaces
  19. 19. Tomahawk
  20. 20. IceFaces
  21. 21. Trinidad
  22. 22. Tobago</li></ul>SpringMVC<br />
  23. 23. Otros frameworks MVC<br />Ruby<br />RubyonRails<br />Perl<br />Catalyst<br />Cyclone<br />Maypole<br />Solstice<br />…<br />PHP<br />Zend<br />Tlalokes<br />Kumbia<br />CakePHP<br />…<br />Python<br />Turbogears<br />Django<br />.Net<br />MonoRail<br />Maverick<br />ASP.Net MVC<br />
  24. 24. Pero nosotros hablaremos de…<br />
  25. 25. ¿Qué es Grails?<br />Una plataforma para desarrollo ágil en Web<br />Un framework MVC full-stack<br />
  26. 26. ¿Qué es Grails?<br />Open Source<br />Corre en la JVM<br />
  27. 27. ¿Qué es Grails?<br />Desarrollo de aplicaciones con Groovy<br />Altamente expresivo<br />
  28. 28. ¿Qué es Grails?<br />Totalmente orientado a objetos<br />Dinámico<br />Sintaxis familiar<br />Perfecta integración con Java<br />
  29. 29. ¿Qué es Grails?<br />Convención sobre configuración<br />DRY (Don’trepeatyourself)<br />
  30. 30. Stack de tecnologías de Grails<br />
  31. 31. ¿qué me provee?<br />MVC zero-configurationDependency_Injectiongsptransacciones JNDI groovyInternacionalización Web_FlowTag_librariesCachinghibernatescaffolding RESTLayoutsAJAX JettyUnit testingIntegrationtestinggrailsplugins quartzacegiactivemqamazon-s3 gaeaxiscamelcriteriaGORM dwrextSpring <br />flexfreemarkerjava geoipgwtivyjpajqueryldap mail openidpaypalpdfsakaispringmvctaggableterracottatomcattwitterwebtestxfireyui<br />
  32. 32. Repasemos un poco…<br />
  33. 33. Recordemos nuestro HolaMundo(Java)<br />publicclassMiClase{<br />privateString nombre;<br />publicvoidsetNombre(String nombre){<br />this.nombre = nombre;<br /> }<br />publicStringgetNombre(){<br />returnthis.nombre;<br /> }<br />publicString saluda(){<br />return &quot;Hola &quot; + nombre + &quot;!!!&quot;;<br /> }<br />publicstaticvoidmain(String[] args){<br />MiClasem = newMiClase();<br />m.setNombre(&quot;SpringHispano&quot;);<br />System.out.println(m.saluda());<br /> }<br />}<br />
  34. 34. Recordemos nuestro HolaMundo(Groovy)<br />publicclassMiClase{<br />privateString nombre;<br />publicvoidsetNombre(String nombre){<br />this.nombre = nombre;<br /> }<br />publicStringgetNombre(){<br />returnthis.nombre;<br /> }<br />publicString saluda(){<br />return &quot;Hola &quot; + nombre + &quot;!!!&quot;;<br /> }<br />publicstaticvoidmain(String[] args){<br />MiClasem = newMiClase();<br />m.setNombre(&quot;SpringHispano&quot;);<br />System.out.println(m.saluda());<br /> }<br />}<br />
  35. 35. Mejor: A la manera Groovy!!!<br />classMiClase{<br />String nombre<br />def saluda(){<br />return &quot;Hola $nombre !!!&quot;;<br /> }<br />}<br />defm = newMiClase()<br />m.setNombre(&quot;SpringHispano&quot;)<br />println(m.saluda())<br />
  36. 36. MVC en Grails<br />Modelo<br />Clases del dominio<br />Validaciones en las clases de dominio<br />GORM<br />Se puede personalizar el mapeo<br />Relaciones entre clases<br />Uno a Uno<br />Uno a Muchos<br />Muchos a Muchos<br />Herencia<br />Objetos embedidos<br />Testing<br />
  37. 37. MVC en Grails<br />Controller<br />Definidos por Acciones en Closures<br />Provee de atributos en el request que facilitan el manejo<br />Ejemplos: flash, params<br />Provee un scope adicional a context y session: flash<br />Mejora en el manejo del Data Binding a través de params<br />CommandObjects<br />Restricciones en los métodos HTTP<br />Manejo de upload de archivos más sencillo<br />Interceptores<br />Filtros<br />Testing<br />
  38. 38. MVC en Grails<br />View<br />Scriptlets<br />GSP<br />Provee de una librería de tags poderosa<br />Tags lógicos<br />Tags iterativos<br />Tags para crear vínculos<br />Incluso podemos crear las propias :D<br />Sencillismo manejo de formularios a través de Tags<br />Paginación<br />Uso de templates<br />Ajax<br />Testing<br />
  39. 39. Un ejemplo…<br />Claro si no a que venimos a la reunión…<br />Creemos una aplicación…<br />Veamos que podemos hacer enfocandonos en el MVC…<br />
  40. 40. Más Grails<br />Mappings<br />Internacionalización<br />Ajax<br />WebFlow<br />GORM<br />Servicios<br />Plugins<br />Seguridad<br />Web Services<br />Más…<br />
  41. 41. ¿Preguntas?<br />…o comentarios…<br />http://springhispano.org<br />http://grails.org.mx<br />@neodevelop<br />

×