redefiniendo el mvc con grails

Post on 22-Jun-2015

2.455 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

8va. Reunión de la comunidad Grails.org.mx,

SpringHispano.org y JavaMexico.org

El MVC redefinido con Grails (Controllers y GSP)

José Juan R. Zuñiga (@neodevelop)

Agenda• Reuniones previas• Groovy• MVC• Grails

Reuniones previas• 6ta. Reunión de SpringHispano.org, grails.orgmx y

JavaMexico.org– http://springhispano.org/?q=node/469– http://www.slideshare.net/domingo.suarez/taller-groovy

Reuniones previas• 6ta. Reunión de SpringHispano.org, grails.orgmx y

JavaMexico.org– http://springhispano.org/?q=node/374– http://www.slideshare.net/neodevelop/spring-mvc-final-presentatio

n– http://www.slideshare.net/domingo.suarez/grailsorgmx-priemra-reu

nion-presentation

Lo más importante de todo esto…

Los ponentes…

Hablemos de MVC• MVC = Model – View – Controller • Es un patrón de diseño que provee un mecanismo para

construir una esbelta y limpia capa web• Claramente separa el negocio, la navegación y la lógica de

presentación• Aunque…ya no solo aplica a Web, ahora también es

implementado en Desktop( el mejor caso: Griffon - ?:D )

¿Cómo trabaja MVC?

Motivaciones• Facilita la carga de mantenimiento

– Los cambios en el negocio tienen impacto mínimo en el mejor de los casos nulo

• Facilita el desarrollo en un equipo multidisciplinario– Zapatero a tu zapato, DBA a tu base de datos, desarrollador de

persistencia a tus DAO’s, Diseñador a tu diseño….

• Uso de herramientas especializadas– Existen lenguajes de plantillas y etiquetado que son mejores para

crear HTML

• Facilita las pruebas– Podríamos probar mucho más código fuera de un contenedor Web

Frameworks MVC en Java• Struts• Turbine• Expresso• Tapestry• Apache Cocoon• Maverik• Anvil• Jaffa• Japple• JPublish• Jucas• WebOnSwing• Chrysalis

• VRaptor• Swinglets• Millstone• Wicket• Java Server Faces

– MyFaces– Tomahawk– IceFaces– Trinidad– Tobago

• SpringMVC

Otros frameworks MVC• Ruby

– Ruby on Rails• Perl

– Catalyst– Cyclone– Maypole– Solstice– …

• PHP– Zend– Tlalokes– Kumbia– CakePHP– …

• Python– Turbogears– Django

• .Net– MonoRail– Maverick– ASP.Net MVC

Pero nosotros hablaremos de…

¿Qué es Grails?• Una plataforma para desarrollo ágil en Web• Un framework MVC full-stack

¿Qué es Grails?• Open Source• Corre en la JVM

¿Qué es Grails?• Desarrollo de aplicaciones con Groovy• Altamente expresivo

¿Qué es Grails?• Totalmente orientado a objetos• Dinámico• Sintaxis familiar• Perfecta integración con Java

¿Qué es Grails?• Convención sobre configuración• DRY (Don’t repeat yourself)

Stack de tecnologías de Grails

¿qué me provee?

MVC zero-configuration Dependency_Injection gsp transacciones

JNDI groovy Internacionalización Web_Flow Tag_libraries

Caching hibernate scaffolding REST Layouts AJAX Jetty Unit

testing Integration testing grails plugins quartz acegi activemq

amazon-s3 gae axis camel criteria GORM dwr ext Spring

flex freemarker java geoip gwt ivy jpa jquery ldap mail openid paypal pdf sakai

springmvc taggable terracotta tomcat twitter webtest xfire yui

Repasemos un poco…

Recordemos nuestro HolaMundo(Java)public class MiClase{

private String nombre;

public void setNombre(String nombre){this.nombre = nombre;

}

public String getNombre(){return this.nombre;

}

public String saluda(){return "Hola " + nombre + "!!!";

}

public static void main(String[] args){MiClase m = new MiClase();m.setNombre("SpringHispano");System.out.println(m.saluda());

}

}

Recordemos nuestro HolaMundo(Groovy)public class MiClase{

private String nombre;

public void setNombre(String nombre){this.nombre = nombre;

}

public String getNombre(){return this.nombre;

}

public String saluda(){return "Hola " + nombre + "!!!";

}

public static void main(String[] args){MiClase m = new MiClase();m.setNombre("SpringHispano");System.out.println(m.saluda());

}

}

Mejor: A la manera Groovy!!!class MiClase{ String nombre def saluda(){ return "Hola $nombre !!!"; } }

def m = new MiClase()m.setNombre("SpringHispano")println(m.saluda())

MVC en Grails• Modelo

– Clases del dominio– Validaciones en las clases de dominio– GORM– Se puede personalizar el mapeo– Relaciones entre clases

• Uno a Uno• Uno a Muchos• Muchos a Muchos

– Herencia– Objetos embedidos– Testing

MVC en Grails• Controller

– Definidos por Acciones en Closures– Provee de atributos en el request que facilitan el manejo

• Ejemplos: flash, params– Provee un scope adicional a context y session: flash– Mejora en el manejo del Data Binding a través de params– Command Objects– Restricciones en los métodos HTTP– Manejo de upload de archivos más sencillo– Interceptores– Filtros– Testing

MVC en Grails• View

– Scriptlets– GSP– Provee de una librería de tags poderosa

• Tags lógicos• Tags iterativos• Tags para crear vínculos

– Incluso podemos crear las propias :D– Sencillismo manejo de formularios a través de Tags– Paginación– Uso de templates– Ajax– Testing

Un ejemplo…• Claro si no a que venimos a la reunión…• Creemos una aplicación…• Veamos que podemos hacer enfocandonos en el MVC…

Más Grails• Mappings• Internacionalización• Ajax• WebFlow• GORM• Servicios• Plugins• Seguridad• Web Services• Más…

8va. Reunión de la comunidad Grails.org.mx,

SpringHispano.org y JavaMexico.org

¿Preguntas?

…o comentarios…http://springhispano.org

http://grails.org.mx@neodevelop

top related