el patrón mvc
DESCRIPTION
¿Qué mejor forma que comenzar el fin de semana que introduciéndote en el mundo de MVC? De mano de uno de nuestros coordinadores, MSP de Miscrosof, ofrecemos un taller en el que se introduce al mundo de los patrones, que permiten organizar mejor tú código, separar la lógica y mejorar el rendimiento.Para ello, se hablará de uno de los más concocidos: MVC. Se verán ejemplos en dos lenguajes de programación completamente diferentes:ASP.netRuby on RailsTRANSCRIPT
Agenda
- Qué es MVC (orientado a web)- Ruby on Rails• Introducción a Ruby• Scaffolding con Rails • Rails avanzado
- ASP.net MVC3• Un vistazo rápido a Razor• Introducción al manejo de vistas• Scaffolding con MVC3• ASP.net avanzado
¿Vale, pero qué vamos a hacer?
• Crear un sistema de gestión de eventos
Evento:• Título• Fecha• Descripción• Capacidad• Asistentes (Personas)
Persona:• Nombre• E-mail
1. Introducción
¿Qué es MVC?
• ¿Qué es MVC?
• Según Wikipedia: patrón de arquitectura de software
que separa los datos de una aplicación, la interfaz de
usuario, y la lógica de control en tres componentes
distintos: Modelo-Vista-Controlador
• Para todo tipo de sistemas…
• … y de tecnologías (Java, Ruby, Python, Perl, Flex,
SmallTalk, .Net…)
MModelo
• Representación de los datos del dominio• Lógica de negocio• Mecanismos de persistencia
VVista
• Interfaz de usuario• Elementos de interacción
CControlador
• Intermediario entre Modelo y Vista• Mapea acciones de usuario acciones del Modelo• Selecciona las vistas y les suministra información
Definiendo los roles
Ok
CControlador
MModelo
VVista
CrearEvento(evt)
Crear evento (datos) evt= new Evento()// cargar propiedades
ListarEventos()
Ejecutar vista(«Eventos», Evento[])
Evento[]
HTML
Ejemplo de uso
2. Ruby on Rails
Os presento a RubyEncantado!
• Interpretado
irb(main):001:0> puts «Hola Mundo»Hola Mundo=> nil
irb(main):001:0> a = 16=> 16irb(main):001:0> puts a16=> nil
• Orientado a Objetos
class anfitriondef initialize(nombre = "Mundo")
@nombre = nombreenddef decir_hola
puts "Hola #{@nombre}"end
end
• Dinámico
Una clase con detalles
class anfitriondef initialize(nombres = "Mundo")
@nombres = nombresenddef decir_hola
if @nombres.nil?puts "..."
elsif @nombres.respond_to?("each")@nombres.each do |nombre|
puts "Hola #{nombre}"else
puts "Hola #{@nombres}"end
endend
Cómo crear una web en 4 pasos
1.Inicializar el sitio2.Definir el modelo y generar las
vistas y el controlador3.Generar la base de datos4.Play!
Hemos creado una web en 4 pasos
1.rails new demo2.rails generate scaffold
- evento titulo:string fecha:date descripcion:text capacidad:integer
- persona evento_id:int nombre:string email:string
3.rake db:migrate4.rails server
Vamos a agregar más cosas
1. Relaciones• Relacionar evento con asistentes
2. Validación• Capacidad de las aulas• Presencia del nombre, del e-mail y que no
haya mails repetidos por evento
Resumen
1.Ruby mola!2.Hemos definido un sitio básico de
manera sencilla usando scaffolding3.Hemos agregado relaciones y
validación
3. ASP.net MVC3
• Open Source• Sobre ASP.net• Backend: Visual Basic o C#• Frontend: Razor
Acerca de ASP.net MVC
¿Razor?
Motor de visualización poco intrusivo<ul> @for (var i = 0; i < 5; i++) { <li>@i</li> }</ul>
@{ var name = “Gilberto Salazar”; <div> Nombre: @name </div>}
<html> <head> <title>Simple Layout</title> </head> <body> @RenderBody() </body></html>
@{ Layout = "/Shared/_Layout.cshtml";}
<p> Aquí ponemos el contenido</p>
Ejemplo básico
• Controlador• Definir datos
• Vista• Consumir datos
Sitio web sencillo usando scaffolding*
1.Inicializar el sitio2.Definir el modelo y las relaciones3.Generar las vistas y el controlador4.Generar la base de datos5.Play!
Vamos a agregar más cosas (II)
1. Relaciones• Relacionar evento con asistentes• Mostrar los asistentes de un evento
2. Validación• Validar la presencia del nombre y del e-mail
3. Helpers• Formato a las direcciones de e-mail• Facebook• Twitter
Resumen
• Creado dos modelos• Agregado relaciones• Agregado validación• Enlazado vistas• Agregada interacción a nuestra web mediante
helpers
Recursos
• Ruby-lang.org• Rubyonrails.org• Railsforzombies.org• Live.visitmix.com• Asp.net/mvc
• @rlbisbe• Robertoluis.wordpress.com
• ¿Preguntas?
GRACIAS A TODOS!
(que es viernes, y estar aquí tiene mérito!)