SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Unidad de Investigación en Telemedicina y e-Salud (UITES)




          Frameworks MVC de
              desarrollo

Propuesta de adopción de tecnologías de
      desarrollo web en la UITES
Jesús Cáceres Tello, Santiago Pérez
Madrid, ISCIII, 08/06/2011
Índice

 01 Las preguntas que nos debemos hacer…
 02 Introducción a los patrones de diseño
 03 El patrón MVC
 04 Definición de frameworks de desarrollo
 05 Aplicaciones web vs. Aplicaciones escritorio
 06 Frameworks MVC
   06.01 Tecnología Java




                                                   Frameworks MVC de desarrollo
   06.02 Tecnología PHP
 07 Conclusiones
 ANEXO: frameworks “web móviles”

                                                   2
01 Las preguntas que nos debemos hacer…


   Las decisiones tecnológicas, ¿afectan de igual manera al futuro de un
    proyecto?

   ¿Es acertado pensar en el desarrollo de software como una
    “commodity”?

   ¿Es asumible el coste de un cambio de tecnología en la fase de
    desarrollo de un proyecto?

   ¿Qué coste tendrá el mantenimiento del software?




                                                                            Frameworks MVC de desarrollo
   ¿Es eficiente rehacer una y otra vez soluciones ya desarrolladas en
    otros proyectos?



                                                                            3
02 Introducción a los patrones de diseño
Máxima: no reinventar la rueda
Definición: Un patrón de diseño es una solución a un problema de
   diseño en un determinado contexto.

   No pertenecen a un determinado lenguaje de programación, aunque se suelen
    representar en notación UML (-> Orientación a Objetos).

   Se clasifican en –sin ser una lista cerrada-:
      –   Patrones de creación
      –   Patrones estructurales
      –   Patrones de comportamiento
      –   Patrones de partición
      –   Patrones de concurrencia                                          Tienen su raíz en la




                                                                                                          Frameworks MVC de desarrollo
                                                                          reutilización del software
      –   Etc.
                                                                   Reducción de tiempos de desarrollo*
                                                                   Facilidad de mantenimiento
                                                                   Eficiencia
                                                                   Consistencia
                                                                   Fiabilidad

                                                                                                          4
*El 80% del esfuerzo en la fase de desarrollo esta en el 20% del código desarrollado
03 El patrón MVC
    Objetivo: independizar la visualización del negocio
    Definición: MVC* (Model/View/Controler) es un 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.




                                         COMPONENTES DEL PATRÓN MVC
        Modelo: contiene los datos gestionados por la aplicación y las lógicas de negocio.




                                                                                                                        Frameworks MVC de desarrollo
        Vista: presenta el modelo en un formato adecuado para interactuar (usualmente es la interfaz de
         usuario).
        Controlador: responde a eventos -normalmente acciones del usuario-, e invoca peticiones al modelo y,
         probablemente, a la vista.



*Descrito por primera vez en 1979 por Trygve Reenskaug, e implementado por Steve Burbeck en su artículo “Programación
de Aplicaciones en Smalltalk-80(TM): Como utilizar Modelo Vista Controlador”.                                           5
04 Definición de frameworks de desarrollo
Reutilización de software
Definición: Un framework proporciona una guía arquitectónica para
   dividir el diseño en módulos y definir sus responsabilidades y
   colaboraciones.

   Un framework puede implementar uno o varios patrones de diseño (p.e. MVC),
    o ninguno…
   Existen frameworks para ámbitos específicos: web services, web dinámica
    (con AJAX), procesos de negocio (BPMS), etc.
   Los frameworks se encargan de los pequeños detalles permitiendo al
    programador dedicar más tiempo y esfuerzos a las partes realmente
    importantes de las aplicaciones. Es decir, permiten no destinar mucho tiempo
    a realizar tareas repetitivas que aportan escaso o nulo valor a las aplicaciones.




                                                                                           Frameworks MVC de desarrollo
                     VENTAJAS                                 DESVENTAJAS

    Desarrollo rápido                            Dependencia del código desarrollado a
    Reutilización de software                     ese framework
    Diseño uniforme                              Recursos hardware necesarios
    Cuatro cuatro cuatro cuatro
                                                  Curva de aprendizaje

                                                                                           6
05 Aplicaciones web vs. Aplicaciones escritorio
¿Por qué todo tiende al “Cloud computing” y al “SaaS”?

     Todos los usuarios utilizan siempre la última versión.
     No requiere instalación para los usuarios.
     Accesible desde cualquier equipo sin preinstalación de ningún
      componente (a excepción de los necesarios en el navegador).
     Favorece la movilidad no dependiendo del SO en el que se ejecute.
     Seguridad en la aplicación.
     En línea con la Web 2.0
     Mayor fiabilidad al tratarse de un browser en vez de una ventana de
      escritorio.
     Se puede medir fácilmente lo que están haciendo los usuarios (tipos




                                                                            Frameworks MVC de desarrollo
      de acciones, tiempos, etc...)
     Los datos están centralizados.
     Mayor facilidad en el soporte de
     la aplicación.


                                                                            7
06 Frameworks MVC
   Frameworks con orientación web
  Existen muchos frameworks en el mercado que implementan el patrón MVC y con
      diferentes tecnologías. La siguiente lista procede de Wikipedia*:




                                                                                      Frameworks MVC de desarrollo
*Frameworks MVC en Wikipedia: http://es.wikipedia.org/wiki/Modelo_Vista_Controlador   8
05.01 Frameworks MVC. Tecnología Java. Struts
Visión general del proyecto




                                                Frameworks MVC de desarrollo
                                                9
05.01 Frameworks MVC. Tecnología Java. Struts
EL MODELO




                                                Frameworks MVC de desarrollo
                                                10
05.01 Frameworks MVC. Tecnología Java. Struts
LA VISTA




                                                Frameworks MVC de desarrollo
                                                11
05.01 Frameworks MVC. Tecnología Java. Struts
EL CONTROLADOR I: El gestor de acciones
Archivo de configuración de Struts.
                            SECCIONES DE struts-config.xml
 <form-beans> : Contiene las definiciones de los beans.
  Se define un elemento <form-beans> por cada bean de formulario,
  Tiene los siguientes atributos importantes:
       Name: Identificador único para referenciarlo en los mapeos de acciones
       Type: ruta completa de la clase Java del bean de formulario
 <action-mappings>: Contiene las definiciones de acciones
  Se utiliza un elemento <action> por cada acción.




                                                                                   Frameworks MVC de desarrollo
  Se definen los siguientes atributos :
       Path: nombre de la clase action en relación al contexto de la aplicación
       Type: ruta completa de la clase Java de la clase Action
       Name: nombre del <form-bean> para usar con esta action, si corresponde
       Forward: ruta del archivo de la vista (JSP) a llamar
                                                                                   12
EL CONTROLADOR II: El fichero struts-config.xml




                                                  Frameworks MVC de desarrollo
                                                  13
05.01 Frameworks MVC. Tecnología Java. Struts
EL CONTROLADOR III: Las clases Action

       Una clase Action de una aplicación Struts extiende a la clase
        org.apache.struts.action.Action.
       Una clase Action actúa como un envoltorio para la lógica
        de negocio y provee una interfaz al modelo.
       Es el mediador entre la vista y el Modelo, ya que transmite
        los datos desde la Vista hacia el proceso específico del
        modelo y retorna los resultados en sentido contrario.

           Sobrecarga del método execute()                       Parámetros del método execute()




                                                                                                       Frameworks MVC de desarrollo
                                                              mapping: El ActionMapping usado para
                                                                         seleccionar esta instancia
    public ActionForward execute( ActionMapping mapping,      form - ActionForm bean para esta
            ActionForm form,                                         petición, si existe
            javax.servlet.http.HttpServletRequest request,    request - La petición HTTP que se está
            javax.servlet.http.HttpServletResponse response
    ) throws java.lang.Exception
                                                                       procesando
                                                              response - La respuesta HTTP que se
                                                                         está creando.

                                                                                                       14
05.01 Frameworks MVC. Tecnología Java. Struts
EL CONTROLADOR IV: Ejemplo Action




                                                Frameworks MVC de desarrollo
                                                15
05.01 Frameworks MVC. Tecnología Java. Struts
EL CONTROLADOR V: Las clase ActionForm

       Un ActionForm es un JavaBean que se extiende
        org.apache.struts.action.ActionForm.
       Una de las tareas que consume mucho trabajo es la
        interacción con formularios, ya sea para editar u obtener
        nueva información.
       Las comprobaciones, la gestión de errores, el volver a
        presentar el mismo form al usuario con los valores que puso y
        los mensajes de error están soportados por Struts con los
        Action Forms y JSP.
       Implementa los métodos get y set para cada input de un
        formulario de una página, y los métodos validate y reset.




                                                                                               Frameworks MVC de desarrollo
           Sobrecarga del método validate()              Parámetros del método validate()

                                                      mapping: El ActionMapping usado para
    public ActionErrors validate(ActionMapping                seleccionar esta instancia
            mapping,HttpServletRequest request) { }
                                                      request - La petición HTTP que se está
                                                               procesando
                                                                                               16
05.01 Frameworks MVC. Tecnología Java. Struts
EL CONTROLADOR VI: Ejemplo ActionForm




                                                Frameworks MVC de desarrollo
                                                17
05.01 Frameworks MVC. Tecnología Java. Struts
Resultado Final




                                                Frameworks MVC de desarrollo
                                                18
05.01 Frameworks MVC. Tecnología Java. JSF
  Introducción a JSF

   Es posterior a Struts
   Está basado en componentes UI (User Interface)
   Utiliza JSP para el despliegue de páginas
   Asocia cada componente gráfico a los datos (beans de
    respaldo)
   La capa de control está definida por un archivo XML=> control
    de eventos y errores
   Validación en cliente y en servidor
   …




                                                                                                                                                        Frameworks MVC de desarrollo
                                                                                                                                        WEB SERVICES
                                                                              CONTROLADOR            VISTA               MODELO        BASES DE DATOS
                                                                                                                                              …


                                                                                     Vista Inicial
                            Enlaces de interés
                                                                                     Invocar vistas
http://www.sicuma.uma.es/sicuma/Formacion/documentacion/JSF.pdf                                              Solicitar datos
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=EclipseJSF                                                    Obtener datos
http://www.proactiva-calidad.com/java/jsf/index.html
http://www.coreservlets.com/JSF-Tutorial/                                                                     Recuperar
                                                                                                                datos
http://www.desarrolloweb.com/articulos/2380.php                                      Actualización
http://www.desarrolloweb.com/articulos/2404.php                                           de
http://blog.jotadeveloper.com/2008/09/07/ejemplo-richfaces-jsf/                       contenidos
                                                                                                                                                        19
05.01 Frameworks MVC. Tecnología Java. JSF
Visión general del proyecto

                       MODELO
                        VISTA
                     CONTROLADOR




                                             Frameworks MVC de desarrollo
                                             20
05.01 Frameworks MVC. Tecnología Java. JSF
EL MODELO




                                             Frameworks MVC de desarrollo
                                             21
05.01 Frameworks MVC. Tecnología Java. JSF
LA VISTA




                                             Frameworks MVC de desarrollo
                                             22
05.01 Frameworks MVC. Tecnología Java. JSF
EL CONTROLADOR




                                             Frameworks MVC de desarrollo
                                             23
05.01 Frameworks MVC. Tecnología Java. Play
Características I
 Requiere Java 5
 Máxima productividad:
   – no es necesario ni compilar ni desplegar ni reinicir el contenedor
     web.
   – Dispone de un cargador de clases propio




                                                                          Frameworks MVC de desarrollo
                                                                          24
05.01 Frameworks MVC. Tecnología Java. Play
Características II

 Completamente stateless (sin estado): La
  información de sesión se guarda en coockies.

 Fundamentado en HTTP, permite desarrollar
  aplicaciones RESTfull

 Dispone de un motor de plantillas basado en
  Groovy:
   – Herencia entre plantillas (layout heredando de layout)




                                                              Frameworks MVC de desarrollo
 Integración con JDBC o JPA e Hibernate
 No es JavaEE



                                                              25
05.01 Frameworks MVC. Tecnología Java. Play
Instalación

 http://www.playframework.org/download




                                              Frameworks MVC de desarrollo
                                              26
05.01 Frameworks MVC. Tecnología Java. Play
HelloWorld con Play




                                              Frameworks MVC de desarrollo
                                              27
06.02 Frameworks MVC. Tecnología PHP.
Symfony – Principales características (I)
   Desarrollado con PHP 5, compatible con la mayoría de gestores de bases de datos
    (MySQL, PostgreSQL, Oracle y SQL Server) y multiplataforma (Unix, Linux, Windows).

   El desarrollador solo debe configurar aquello que no es convencional.

   Symfony automatiza la mayoría de elementos comunes de los proyectos web, como por
    ejemplo:

        Posee una capa de internacionalización para la traducción de los datos y de la
         interfaz, así como la adaptación local de los contenidos.
        La capa de presentación utiliza plantillas y layouts que pueden ser creados por
         diseñadores HTML sin ningún tipo de conocimiento del framework.
        Los formularios incluyen validación automatizada y relleno automático de datos




                                                                                              Frameworks MVC de desarrollo
         ("repopulation").
        La gestión de la caché reduce el ancho de banda utilizado y la carga del servidor.
        Autenticación y gestión de credenciales.
        Sistema de enrutamiento y URL limpias optimizadas para los buscadores.
        Soporte de e-mail incluido.
        Listados con paginación automatizada, el filtrado y la ordenación de datos.
        Interacciones con Ajax fáciles de implementar mediante helpers.
        Integración con PEAR (PHP Extension and Application Repository), un sistema de
         distribución para componentes PHP reutilizables".                                    28
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Principales características (II)
    Mapeo de Objetos a Bases de datos (ORM - object-relational mapping). Transforma automáticamente las
     llamadas a los objetos en consultas SQL optimizadas para el sistema gestor de bases de datos que se está
     utilizando en cada momento. Utiliza Phing, una utilidad que usa Propel para generar las clases del modelo.

    Desarrollo rápido de aplicaciones (RAD – Rapid Application Development).

    Utiliza YAML para configurar cualquier elemento. Es un formato para serializar datos que es fácil de
     procesar por las máquinas, fácil de leer para las personas y fácil de interactuar con los lenguajes de script.

    El proyecto se estructura en: aplicaciones, módulos y acciones
      –     Proyecto: “Un conjunto de servicios y operaciones disponibles bajo un determinado nombre de
            dominio y que comparten el mismo modelo de objetos". Contiene una o más aplicaciones.
      –     Aplicación: “Agrupación lógica de operaciones. Se compone de uno o más módulos.”
      –     Módulo: “Representa a una página web o a un grupo de páginas con un propósito relacionado (p.e.
            alta de usuario, carrito de la compra, etc.). Se compone de una o más acciones”.
      –     Acción: “Representa cada una de las operaciones que se puede realizar en un módulo (p.e. el




                                                                                                                      Frameworks MVC de desarrollo
            módulo carrito de la compra puede definir acciones como añadir, mostrar y actualizar).”




                                                                                                                      29
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Estructura de un proyecto
    La raíz de un proyecto Symfony tiene los siguientes directorios:

      apps/                    -> Contiene un directorio por cada aplicación del proyecto.
                 frontend/
                 backend/
      cache/                   -> Versión cacheada de la configuración, acciones y plantillas.
      config/                  -> Configuración general del proyecto.
      data/                    -> Archivos relacionados con los datos (p.e. el esquema de la BBDD, SQLs, etc.).
                 sql/
      doc/                     -> Documentación del proyecto generada con PHPdoc.
      lib/                     -> Almacena las clases y librerías externas.
                 model/        -> Almacena el modelo de objetos del proyecto.
      log/
      plugins/                 -> Almacena los plugins instalados en la aplicación.
      test/                    -> Pruebas unitarias y funcionales escritas en PHP.




                                                                                                                  Frameworks MVC de desarrollo
                 bootstrap/
                 unit/
                 functional/
      web/                     -> Raíz del servidor web, único directorio accesible desde el exterior
                 css/
                 images/
                 js/
                 uploads/

                                                                                                                  30
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Estructura de una aplicación y de un módulo
    La raíz de una aplicación tiene los siguientes directorios:

      [nombre_app]/        -> Raíz de la aplicación.
             config/       -> Archivos YAML de configuración de la aplicación.
             i18n/         -> Archivos de internacionalización.
             lib/          -> Clases y librerías externas utilizadas por la aplicación.
             modules/      -> Módulos de la aplicación.
             templates/ -> Plantillas globales de la aplicación.
                  layout.php     -> Layout principal con el que se muestras las plantillas de los módulos



    La raíz de un módulo tiene los siguientes directorios:

      [nombre_modulo]/      -> Raíz del módulo.
             actions/       -> Acciones del módulo.




                                                                                                               Frameworks MVC de desarrollo
                  action.class.php        -> Archivos con el código de la(s) acción(es). Puede haber varios.
             config/        -> Archivos de configuración del módulo.
             lib/           -> Clases y librerías externas utilizadas por el módulo.
             templates/ -> Plantillas correspondientes a las acciones del módulo.
                  indexSuccess.php




                                                                                                               31
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Ejemplo “Mostrar artículos de una BBDD” (I)
    Código PHP sin ningún framework:

       <?php                                                                                  Sólo funciona si la BBDD
                 // Conectar con la base de datos y seleccionarla                                    es MySQL
                 $conexion = mysql_connect('localhost', 'miusuario', 'micontrasena');
                 mysql_select_db('blog_db', $conexion);

                 // Ejecutar la consulta SQL
                 $resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion);
       ?>
                                                                                                   No existe protección
                                                                                                     frente a errores
       <html>
                 <head>
                           <title>Listado de Artículos</title>
                 </head>
                 <body>
                           <h1>Listado de Artículos</h1>                                          HTML y PHP
                           <table>
                                    <tr><th>Fecha</th><th>Titulo</th></tr>
                                                                                                  entrelazado
                                    <?php
                                              // Mostrar los resultados con HTML
                                              while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
                                              {




                                                                                                                          Frameworks MVC de desarrollo
                                                       echo "t<tr>n";
                                                       printf("tt<td> %s </td>n", $fila['fecha']);
                                                       printf("tt<td> %s </td>n", $fila['titulo']);
                                                       echo "t</tr>n";
                                              }
                                    ?>
                           </table>
                 </body>
       </html>                                                     Resultado: Aplicación
       <?php                                                       difícil de mantener y
                 // Cerrar la conexion
                 mysql_close($conexion);
                                                                          actualizar
       ?>
                                                                                                                          32
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Ejemplo “Mostrar artículos de una BBDD” (II)
    Código PHP, primera aproximación al MVC:



                                    modelo.php
     <?php

     function getTodosLosArticulos()
     {
       // Conectar con la base de datos y seleccionarla
       $conexion = mysql_connect('localhost', 'miusuario', 'micontrasena');
       mysql_select_db('blog_db', $conexion);
                                                                              index.php (controlador)
                                                                          <?php
       // Ejecutar la consulta SQL
       $resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion);
                                                                          // Incluir la lógica del modelo
                                                                          require_once('modelo.php');
                                            vista.php
       // Crear el array de elementos para la capa de la vista
       $articulos = array();                                              // Obtener la lista de artículos
       while ($fila =<html>
                      mysql_fetch_array($resultado, MYSQL_ASSOC))         $articulos = getTodosLosArticulos();
       {               <head>
         $articulos[] = $fila;
                         <title>Listado de Artículos</title>              // Incluir la lógica de la vista
       }               </head>                                            require('vista.php');




                                                                                                                 Frameworks MVC de desarrollo
                       <body>
       // Cerrar la conexión
                         <h1>Listado de Artículos</h1>                    ?>
       mysql_close($conexion);
                         <table>
                            <tr><th>Fecha</th><th>Título</th></tr>
       return $articulos;<?php foreach ($articulos as $articulo): ?>
     }                      <tr>
     ?>                       <td><?php echo $articulo['fecha'] ?></td>
                              <td><?php echo $articulo['titulo'] ?></td>
                            </tr>
                         <?php endforeach; ?>
                         </table>
                       </body>
                     </html>

                                                                                                                 33
06.02 Frameworks MVC. Tecnología PHP.
      Symfony – Ejemplo “Mostrar artículos de una BBDD” (III)
      Código PHP, segunda aproximación al MVC:                                 Modelo (acceso a datos)
                                                                                            modelo.php
           Modelo (abstracción de la BBDD)
                                         function                  getTodosLosArticulos()
                             modelo.php                   {
                                                               // Conectar con la base de datos
<?php
                                                             $conexion = crear_conexion('localhost', 'miusuario', 'micontrasena');
    function crear_conexion($servidor, $usuario, $contrasena)
     {
                                                             // Ejecutar la consulta SQL
          return mysql_connect($servidor, $usuario, $contrasena);
                                                             $resultado = consulta_base_de_datos('SELECT fecha, titulo FROM articulo',
     }
                                                                                                  'blog_db', $conexion);
    function cerrar_conexion($conexion)
     {
                                                             // Crear el array de elementos para la capa de la vista
          mysql_close($conexion);
                                                             $articulos = array();
     }                                                                                                   Controlador
                                                             while ($fila = obtener_resultados($resultado))
   function consulta_base_de_datos($consulta, $base_datos, $conexion)
                                                             {                                              index.php
   {
                                                                 $articulos[] = $fila;      <?php
          mysql_select_db($base_datos, $conexion);
                                                             }
          return mysql_query($consulta, $conexion);
   }                                                                                        // Incluir la lógica del modelo
                                                             // Cerrar la conexión          require_once('modelo.php');
   function obtener_resultados($resultado)
                                                             cerrar_conexion($conexion);
   {
                                                              return $articulos;            // Obtener la lista de artículos
          return mysql_fetch_array($resultado, MYSQL_ASSOC);
                                                           }                                $articulos = getTodosLosArticulos();
   }
                                                           ?>




                                                                                                                                 Frameworks MVC de desarrollo
                                                                                            // Incluir la lógica de la vista
                                                                                            require('vista.php');
        Layout de la vista
                vista.php                                                                   Plantilla de la vista
                                                                                            ?>

 <html>                                                                                          miplantilla.php
   <head>                                     Lógica de la vista                <h1>Listado de Artículos</h1>
     <title><?php echo $titulo ?></title>             vista.php                 <table>
   </head>                                                                      <tr><th>Fecha</th><th>Título</th></tr>
                                     <?php
   <body>                                                                       <?php foreach ($articulos as $articulo): ?>
     <?php echo $contenido ?>                                                     <tr>
                                     $titulo = 'Listado de Artículos';
   </body>                                                                          <td><?php echo $articulo['fecha'] ?></td>
                                     $contenido = include('miplantilla.php');
 </html>                                                                            <td><?php echo $articulo['titulo'] ?></td>
                                     ?>                                           </tr>
                                                                                <?php endforeach; ?>                             34
                                                                                </table>
06.02 Frameworks MVC. Tecnología PHP.
 Symfony – Ejemplo “Mostrar artículos de una BBDD” (III)
Una programación correcta incluiría la realización de los siguientes scripts en cada capa:


    La capa del Modelo
      – Abstracción de la base de datos                 ←“Creole” lo hace automáticamente
      – Acceso a los datos                              ←“Propel” genera las clases del modelo
    La capa de la Vista
      – Layout
      – Lógica de la vista
      – Plantilla
    La capa del Controlador
      – Controlador frontal                             ←Symfony crea uno por defecto




                                                                                                 Frameworks MVC de desarrollo
      – Acción




                                                                                                 35
06.02 Frameworks MVC. Tecnología PHP.
    Symfony – Ejemplo “Mostrar artículos de una BBDD” (IV)
Una programación correcta incluiría la realización de los siguientes scripts en cada capa:
                                                                      miproyecto/apps/miaplicacion/templates/layout.php
    La capa del Modelo                           <html>
                                                    <head>
      – Abstracción de la base de datos               <?php echo include_title() ?>
                                                    </head>
      – Acceso a los datos                          <body>
                                                      <?php echo $sf_data->getRaw('sf_content') ?>
    La capa de la Vista                            </body>
                                                  </html>
      – Layout
      – Lógica de la vista            miproyecto/apps/miaplicacion/modules/weblog/config/view.yml
                                     listadoSuccess:
      – Plantilla                      metas: { title: Listado de Artículos }
    La capa del Controlador
      – Controlador frontal
                                                          miproyecto/apps/miaplicacion/modules/




                                                                                                                          Frameworks MVC de desarrollo
      – Acción                                             weblog/templates/listadoSuccess.php
                                                                      <h1>Listado de Artículos</h1>
                                                                      <table>
                     miproyecto/apps/miaplicacion/                    <tr><th>Fecha</th><th>Título</th></tr>
                modules/weblog/actions/actions.class.php              <?php foreach ($articulos as $articulo): ?>
                                                                        <tr>
     <?php                                                                <td><?php echo $articulo->getFecha() ?></td>
     class weblogActions extends sfActions                                <td><?php echo $articulo->getTitulo() ?></td>
     {                                                                  </tr>
       public function executeListado()                               <?php endforeach; ?>
       {                                                              </table>
         $this->articulos = ArticuloPeer::doSelect(new Criteria());
       }
     }
                                                                                                                          36
     ?>
07Conclusiones
   No desaprovechemos millones de años de evolución…
    La rueda ya fue inventada.




   Los frameworks permiten que nos centremos más en el desarrollo del
    “negocio” y menos en los detalles que no aportan valor (aunque sean
    imprescindibles).

   Se debe buscar el punto de equilibrio entre el
    coste de utilización/aprendizaje de un framework
    y el coste del uso/mantenimiento posterior.




                                                                                     Frameworks MVC de desarrollo
   La “reutilización” y la “modularización” deben estar presentes desde el primer
    momento en el que comience el diseño de una aplicación.



                                                                                     37
Anexo: frameworks “web móviles” (I)
 Están basados en html 5 y css3

 Symbian, Windows Phone 7, IOS, Android, Blackberry, etc…

 Desarrollos orientados a sistemas de información y no a
  juegos


       Algunos de ellos son:

          JQuery Mobile




                                                             Frameworks MVC de desarrollo
          Sencha Touch
          DHTMLX Touch
          Jo HTML5


                                                             38
Anexo: frameworks “web móviles” (II)
jQuery Mobile
    Desarrollado por Team jQuery
    Permite utilizar Ajax
    Facilidad en la transición de páginas. Themes.



    A: Alta Compatibilidad
    B: Mediana Compatibilidad
    C: Baja Compatibilidad




                                                      Frameworks MVC de desarrollo
                                                      39
Anexo: frameworks “web móviles” (III)
Sencha Touch

 Conjunto de librerías de widgets de usuario, control para
  eventos táctiles
 Permite la introducción de video y audio
 Dispone de proxy local para guardar datos sin conexión
 Petición de datos mediante Ajax, Jsonp o YQL




                                                              Frameworks MVC de desarrollo
                                                              40
Anexo: frameworks “web móviles” (IV)
DHTMLX Touch

 Librería de HTML5 y JavaScript

 Es gratuita con licencia GPL

 Dispone de un entorno de programación visual




                                                 Frameworks MVC de desarrollo
                                                 41
Anexo: frameworks “web móviles” (V)
Enlaces de interés
   jQuery Mobiles
     – http://www.jqmgallery.com/
     – http://wwwhatsnew.com/2011/03/31/introduccion-a-jquery-mobile/
     – http://www.baluart.net/articulo/ejemplo-de-aplicacion-web-movil-con-
       jquery-mobile
     – http://geeks.ms/blogs/gperez/archive/2010/10/22/tutorial-creando-una-
       app-con-jquery-mobile-webmatrix-y-razor.aspx


   Sencha Touch
     – http://www.sencha.com/products/touch/
     – http://dev.sencha.com/deploy/touch/getting-started.html




                                                                               Frameworks MVC de desarrollo
     – http://miamicoder.com/2010/creating-sencha-touch-toolbar-buttons/
     – http://mobile.tutsplus.com/articles/news/sencha-touch-html5-mobile-
       framework/
     – http://www.slideshare.net/davidkaneda/sencha-touch-workshop


   DHTMLX Touch
     – http://www.dhtmlx.com/index.shtml
                                                                               42
Gracias por su atención
Jesús Cáceres Tello
jesus.caceres@isciii.es
Tlf: +34 918 222 479

Santiago Pérez de la Cámara
sperezd@isciii.es
Tlf: +34 918 222 572




Unidad de Investigación en Telemedicina y e-Salud
Avda. Monforte de Lemos, 5
28029 - Madrid. España

www.isciii.es

Contenu connexe

Tendances

Web camp el_poder_de_los_cms_umbraco_13_04_13
Web camp el_poder_de_los_cms_umbraco_13_04_13Web camp el_poder_de_los_cms_umbraco_13_04_13
Web camp el_poder_de_los_cms_umbraco_13_04_13
yolss12
 
Frameworks para desarrollo de aplicaciones Web
Frameworks para desarrollo de aplicaciones WebFrameworks para desarrollo de aplicaciones Web
Frameworks para desarrollo de aplicaciones Web
Esteban Saavedra
 
Tech Talks - Programación Orientada a Modelos
Tech Talks - Programación Orientada a Modelos Tech Talks - Programación Orientada a Modelos
Tech Talks - Programación Orientada a Modelos
BVision
 
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDMMOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
Vicente Pelechano
 
Sesion 6 2 diseño análisis arquitectural
Sesion 6 2 diseño   análisis arquitecturalSesion 6 2 diseño   análisis arquitectural
Sesion 6 2 diseño análisis arquitectural
Julio Pari
 
Presentación1
Presentación1Presentación1
Presentación1
perez0123
 

Tendances (20)

Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhua
 
MVC
MVCMVC
MVC
 
S8 arely medina_power_point
S8 arely medina_power_pointS8 arely medina_power_point
S8 arely medina_power_point
 
Metamodelo UML
Metamodelo UMLMetamodelo UML
Metamodelo UML
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
MDE & DSLs
MDE & DSLsMDE & DSLs
MDE & DSLs
 
Web camp el_poder_de_los_cms_umbraco_13_04_13
Web camp el_poder_de_los_cms_umbraco_13_04_13Web camp el_poder_de_los_cms_umbraco_13_04_13
Web camp el_poder_de_los_cms_umbraco_13_04_13
 
Frameworks para desarrollo de aplicaciones Web
Frameworks para desarrollo de aplicaciones WebFrameworks para desarrollo de aplicaciones Web
Frameworks para desarrollo de aplicaciones Web
 
Framework de programacion de paginas web
Framework de programacion de paginas webFramework de programacion de paginas web
Framework de programacion de paginas web
 
Tech Talks - Programación Orientada a Modelos
Tech Talks - Programación Orientada a Modelos Tech Talks - Programación Orientada a Modelos
Tech Talks - Programación Orientada a Modelos
 
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDMMOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
MOSKitt. Una plataforma libre para el desarrollo de métodos y herramientas DSDM
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
Analisis del patron mvc
Analisis del patron mvcAnalisis del patron mvc
Analisis del patron mvc
 
Framework
FrameworkFramework
Framework
 
Sesion 6 2 diseño análisis arquitectural
Sesion 6 2 diseño   análisis arquitecturalSesion 6 2 diseño   análisis arquitectural
Sesion 6 2 diseño análisis arquitectural
 
Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones web
 
Com521
Com521Com521
Com521
 
01 introducción
01 introducción01 introducción
01 introducción
 
Presentación1
Presentación1Presentación1
Presentación1
 

Similaire à Frameworks MVC para desarrollo de UITES

Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...
Renan Cayao
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
kaolong
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
Senior Dev
 

Similaire à Frameworks MVC para desarrollo de UITES (20)

S01-s1-MVC.pptx
S01-s1-MVC.pptxS01-s1-MVC.pptx
S01-s1-MVC.pptx
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Lp II clase02 - Modelo Vista Controlador
Lp II   clase02 - Modelo Vista ControladorLp II   clase02 - Modelo Vista Controlador
Lp II clase02 - Modelo Vista Controlador
 
Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Modelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebModelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_Diseñoweb
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
MVC
MVCMVC
MVC
 
Framework
FrameworkFramework
Framework
 
Unidad 1 MOOC MVC
Unidad 1 MOOC MVCUnidad 1 MOOC MVC
Unidad 1 MOOC MVC
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
Modelo mvc
Modelo mvcModelo mvc
Modelo mvc
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
 
Asp
AspAsp
Asp
 
Arquitectura web
Arquitectura webArquitectura web
Arquitectura web
 

Dernier

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Dernier (20)

Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 

Frameworks MVC para desarrollo de UITES

  • 1. Unidad de Investigación en Telemedicina y e-Salud (UITES) Frameworks MVC de desarrollo Propuesta de adopción de tecnologías de desarrollo web en la UITES Jesús Cáceres Tello, Santiago Pérez Madrid, ISCIII, 08/06/2011
  • 2. Índice 01 Las preguntas que nos debemos hacer… 02 Introducción a los patrones de diseño 03 El patrón MVC 04 Definición de frameworks de desarrollo 05 Aplicaciones web vs. Aplicaciones escritorio 06 Frameworks MVC 06.01 Tecnología Java Frameworks MVC de desarrollo 06.02 Tecnología PHP 07 Conclusiones ANEXO: frameworks “web móviles” 2
  • 3. 01 Las preguntas que nos debemos hacer…  Las decisiones tecnológicas, ¿afectan de igual manera al futuro de un proyecto?  ¿Es acertado pensar en el desarrollo de software como una “commodity”?  ¿Es asumible el coste de un cambio de tecnología en la fase de desarrollo de un proyecto?  ¿Qué coste tendrá el mantenimiento del software? Frameworks MVC de desarrollo  ¿Es eficiente rehacer una y otra vez soluciones ya desarrolladas en otros proyectos? 3
  • 4. 02 Introducción a los patrones de diseño Máxima: no reinventar la rueda Definición: Un patrón de diseño es una solución a un problema de diseño en un determinado contexto.  No pertenecen a un determinado lenguaje de programación, aunque se suelen representar en notación UML (-> Orientación a Objetos).  Se clasifican en –sin ser una lista cerrada-: – Patrones de creación – Patrones estructurales – Patrones de comportamiento – Patrones de partición – Patrones de concurrencia Tienen su raíz en la Frameworks MVC de desarrollo reutilización del software – Etc.  Reducción de tiempos de desarrollo*  Facilidad de mantenimiento  Eficiencia  Consistencia  Fiabilidad 4 *El 80% del esfuerzo en la fase de desarrollo esta en el 20% del código desarrollado
  • 5. 03 El patrón MVC Objetivo: independizar la visualización del negocio Definición: MVC* (Model/View/Controler) es un 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. COMPONENTES DEL PATRÓN MVC  Modelo: contiene los datos gestionados por la aplicación y las lógicas de negocio. Frameworks MVC de desarrollo  Vista: presenta el modelo en un formato adecuado para interactuar (usualmente es la interfaz de usuario).  Controlador: responde a eventos -normalmente acciones del usuario-, e invoca peticiones al modelo y, probablemente, a la vista. *Descrito por primera vez en 1979 por Trygve Reenskaug, e implementado por Steve Burbeck en su artículo “Programación de Aplicaciones en Smalltalk-80(TM): Como utilizar Modelo Vista Controlador”. 5
  • 6. 04 Definición de frameworks de desarrollo Reutilización de software Definición: Un framework proporciona una guía arquitectónica para dividir el diseño en módulos y definir sus responsabilidades y colaboraciones.  Un framework puede implementar uno o varios patrones de diseño (p.e. MVC), o ninguno…  Existen frameworks para ámbitos específicos: web services, web dinámica (con AJAX), procesos de negocio (BPMS), etc.  Los frameworks se encargan de los pequeños detalles permitiendo al programador dedicar más tiempo y esfuerzos a las partes realmente importantes de las aplicaciones. Es decir, permiten no destinar mucho tiempo a realizar tareas repetitivas que aportan escaso o nulo valor a las aplicaciones. Frameworks MVC de desarrollo VENTAJAS DESVENTAJAS Desarrollo rápido  Dependencia del código desarrollado a Reutilización de software ese framework Diseño uniforme  Recursos hardware necesarios Cuatro cuatro cuatro cuatro  Curva de aprendizaje 6
  • 7. 05 Aplicaciones web vs. Aplicaciones escritorio ¿Por qué todo tiende al “Cloud computing” y al “SaaS”?  Todos los usuarios utilizan siempre la última versión.  No requiere instalación para los usuarios.  Accesible desde cualquier equipo sin preinstalación de ningún componente (a excepción de los necesarios en el navegador).  Favorece la movilidad no dependiendo del SO en el que se ejecute.  Seguridad en la aplicación.  En línea con la Web 2.0  Mayor fiabilidad al tratarse de un browser en vez de una ventana de escritorio.  Se puede medir fácilmente lo que están haciendo los usuarios (tipos Frameworks MVC de desarrollo de acciones, tiempos, etc...)  Los datos están centralizados.  Mayor facilidad en el soporte de la aplicación. 7
  • 8. 06 Frameworks MVC Frameworks con orientación web Existen muchos frameworks en el mercado que implementan el patrón MVC y con diferentes tecnologías. La siguiente lista procede de Wikipedia*: Frameworks MVC de desarrollo *Frameworks MVC en Wikipedia: http://es.wikipedia.org/wiki/Modelo_Vista_Controlador 8
  • 9. 05.01 Frameworks MVC. Tecnología Java. Struts Visión general del proyecto Frameworks MVC de desarrollo 9
  • 10. 05.01 Frameworks MVC. Tecnología Java. Struts EL MODELO Frameworks MVC de desarrollo 10
  • 11. 05.01 Frameworks MVC. Tecnología Java. Struts LA VISTA Frameworks MVC de desarrollo 11
  • 12. 05.01 Frameworks MVC. Tecnología Java. Struts EL CONTROLADOR I: El gestor de acciones Archivo de configuración de Struts. SECCIONES DE struts-config.xml <form-beans> : Contiene las definiciones de los beans.  Se define un elemento <form-beans> por cada bean de formulario,  Tiene los siguientes atributos importantes:  Name: Identificador único para referenciarlo en los mapeos de acciones  Type: ruta completa de la clase Java del bean de formulario <action-mappings>: Contiene las definiciones de acciones  Se utiliza un elemento <action> por cada acción. Frameworks MVC de desarrollo  Se definen los siguientes atributos :  Path: nombre de la clase action en relación al contexto de la aplicación  Type: ruta completa de la clase Java de la clase Action  Name: nombre del <form-bean> para usar con esta action, si corresponde  Forward: ruta del archivo de la vista (JSP) a llamar 12
  • 13. EL CONTROLADOR II: El fichero struts-config.xml Frameworks MVC de desarrollo 13
  • 14. 05.01 Frameworks MVC. Tecnología Java. Struts EL CONTROLADOR III: Las clases Action  Una clase Action de una aplicación Struts extiende a la clase org.apache.struts.action.Action.  Una clase Action actúa como un envoltorio para la lógica de negocio y provee una interfaz al modelo.  Es el mediador entre la vista y el Modelo, ya que transmite los datos desde la Vista hacia el proceso específico del modelo y retorna los resultados en sentido contrario. Sobrecarga del método execute() Parámetros del método execute() Frameworks MVC de desarrollo mapping: El ActionMapping usado para seleccionar esta instancia public ActionForward execute( ActionMapping mapping, form - ActionForm bean para esta ActionForm form, petición, si existe javax.servlet.http.HttpServletRequest request, request - La petición HTTP que se está javax.servlet.http.HttpServletResponse response ) throws java.lang.Exception procesando response - La respuesta HTTP que se está creando. 14
  • 15. 05.01 Frameworks MVC. Tecnología Java. Struts EL CONTROLADOR IV: Ejemplo Action Frameworks MVC de desarrollo 15
  • 16. 05.01 Frameworks MVC. Tecnología Java. Struts EL CONTROLADOR V: Las clase ActionForm  Un ActionForm es un JavaBean que se extiende org.apache.struts.action.ActionForm.  Una de las tareas que consume mucho trabajo es la interacción con formularios, ya sea para editar u obtener nueva información.  Las comprobaciones, la gestión de errores, el volver a presentar el mismo form al usuario con los valores que puso y los mensajes de error están soportados por Struts con los Action Forms y JSP.  Implementa los métodos get y set para cada input de un formulario de una página, y los métodos validate y reset. Frameworks MVC de desarrollo Sobrecarga del método validate() Parámetros del método validate() mapping: El ActionMapping usado para public ActionErrors validate(ActionMapping seleccionar esta instancia mapping,HttpServletRequest request) { } request - La petición HTTP que se está procesando 16
  • 17. 05.01 Frameworks MVC. Tecnología Java. Struts EL CONTROLADOR VI: Ejemplo ActionForm Frameworks MVC de desarrollo 17
  • 18. 05.01 Frameworks MVC. Tecnología Java. Struts Resultado Final Frameworks MVC de desarrollo 18
  • 19. 05.01 Frameworks MVC. Tecnología Java. JSF Introducción a JSF  Es posterior a Struts  Está basado en componentes UI (User Interface)  Utiliza JSP para el despliegue de páginas  Asocia cada componente gráfico a los datos (beans de respaldo)  La capa de control está definida por un archivo XML=> control de eventos y errores  Validación en cliente y en servidor  … Frameworks MVC de desarrollo WEB SERVICES CONTROLADOR VISTA MODELO BASES DE DATOS … Vista Inicial Enlaces de interés Invocar vistas http://www.sicuma.uma.es/sicuma/Formacion/documentacion/JSF.pdf Solicitar datos http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=EclipseJSF Obtener datos http://www.proactiva-calidad.com/java/jsf/index.html http://www.coreservlets.com/JSF-Tutorial/ Recuperar datos http://www.desarrolloweb.com/articulos/2380.php Actualización http://www.desarrolloweb.com/articulos/2404.php de http://blog.jotadeveloper.com/2008/09/07/ejemplo-richfaces-jsf/ contenidos 19
  • 20. 05.01 Frameworks MVC. Tecnología Java. JSF Visión general del proyecto MODELO VISTA CONTROLADOR Frameworks MVC de desarrollo 20
  • 21. 05.01 Frameworks MVC. Tecnología Java. JSF EL MODELO Frameworks MVC de desarrollo 21
  • 22. 05.01 Frameworks MVC. Tecnología Java. JSF LA VISTA Frameworks MVC de desarrollo 22
  • 23. 05.01 Frameworks MVC. Tecnología Java. JSF EL CONTROLADOR Frameworks MVC de desarrollo 23
  • 24. 05.01 Frameworks MVC. Tecnología Java. Play Características I  Requiere Java 5  Máxima productividad: – no es necesario ni compilar ni desplegar ni reinicir el contenedor web. – Dispone de un cargador de clases propio Frameworks MVC de desarrollo 24
  • 25. 05.01 Frameworks MVC. Tecnología Java. Play Características II  Completamente stateless (sin estado): La información de sesión se guarda en coockies.  Fundamentado en HTTP, permite desarrollar aplicaciones RESTfull  Dispone de un motor de plantillas basado en Groovy: – Herencia entre plantillas (layout heredando de layout) Frameworks MVC de desarrollo  Integración con JDBC o JPA e Hibernate  No es JavaEE 25
  • 26. 05.01 Frameworks MVC. Tecnología Java. Play Instalación  http://www.playframework.org/download Frameworks MVC de desarrollo 26
  • 27. 05.01 Frameworks MVC. Tecnología Java. Play HelloWorld con Play Frameworks MVC de desarrollo 27
  • 28. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Principales características (I)  Desarrollado con PHP 5, compatible con la mayoría de gestores de bases de datos (MySQL, PostgreSQL, Oracle y SQL Server) y multiplataforma (Unix, Linux, Windows).  El desarrollador solo debe configurar aquello que no es convencional.  Symfony automatiza la mayoría de elementos comunes de los proyectos web, como por ejemplo:  Posee una capa de internacionalización para la traducción de los datos y de la interfaz, así como la adaptación local de los contenidos.  La capa de presentación utiliza plantillas y layouts que pueden ser creados por diseñadores HTML sin ningún tipo de conocimiento del framework.  Los formularios incluyen validación automatizada y relleno automático de datos Frameworks MVC de desarrollo ("repopulation").  La gestión de la caché reduce el ancho de banda utilizado y la carga del servidor.  Autenticación y gestión de credenciales.  Sistema de enrutamiento y URL limpias optimizadas para los buscadores.  Soporte de e-mail incluido.  Listados con paginación automatizada, el filtrado y la ordenación de datos.  Interacciones con Ajax fáciles de implementar mediante helpers.  Integración con PEAR (PHP Extension and Application Repository), un sistema de distribución para componentes PHP reutilizables". 28
  • 29. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Principales características (II)  Mapeo de Objetos a Bases de datos (ORM - object-relational mapping). Transforma automáticamente las llamadas a los objetos en consultas SQL optimizadas para el sistema gestor de bases de datos que se está utilizando en cada momento. Utiliza Phing, una utilidad que usa Propel para generar las clases del modelo.  Desarrollo rápido de aplicaciones (RAD – Rapid Application Development).  Utiliza YAML para configurar cualquier elemento. Es un formato para serializar datos que es fácil de procesar por las máquinas, fácil de leer para las personas y fácil de interactuar con los lenguajes de script.  El proyecto se estructura en: aplicaciones, módulos y acciones – Proyecto: “Un conjunto de servicios y operaciones disponibles bajo un determinado nombre de dominio y que comparten el mismo modelo de objetos". Contiene una o más aplicaciones. – Aplicación: “Agrupación lógica de operaciones. Se compone de uno o más módulos.” – Módulo: “Representa a una página web o a un grupo de páginas con un propósito relacionado (p.e. alta de usuario, carrito de la compra, etc.). Se compone de una o más acciones”. – Acción: “Representa cada una de las operaciones que se puede realizar en un módulo (p.e. el Frameworks MVC de desarrollo módulo carrito de la compra puede definir acciones como añadir, mostrar y actualizar).” 29
  • 30. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Estructura de un proyecto  La raíz de un proyecto Symfony tiene los siguientes directorios: apps/ -> Contiene un directorio por cada aplicación del proyecto. frontend/ backend/ cache/ -> Versión cacheada de la configuración, acciones y plantillas. config/ -> Configuración general del proyecto. data/ -> Archivos relacionados con los datos (p.e. el esquema de la BBDD, SQLs, etc.). sql/ doc/ -> Documentación del proyecto generada con PHPdoc. lib/ -> Almacena las clases y librerías externas. model/ -> Almacena el modelo de objetos del proyecto. log/ plugins/ -> Almacena los plugins instalados en la aplicación. test/ -> Pruebas unitarias y funcionales escritas en PHP. Frameworks MVC de desarrollo bootstrap/ unit/ functional/ web/ -> Raíz del servidor web, único directorio accesible desde el exterior css/ images/ js/ uploads/ 30
  • 31. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Estructura de una aplicación y de un módulo  La raíz de una aplicación tiene los siguientes directorios: [nombre_app]/ -> Raíz de la aplicación. config/ -> Archivos YAML de configuración de la aplicación. i18n/ -> Archivos de internacionalización. lib/ -> Clases y librerías externas utilizadas por la aplicación. modules/ -> Módulos de la aplicación. templates/ -> Plantillas globales de la aplicación. layout.php -> Layout principal con el que se muestras las plantillas de los módulos  La raíz de un módulo tiene los siguientes directorios: [nombre_modulo]/ -> Raíz del módulo. actions/ -> Acciones del módulo. Frameworks MVC de desarrollo action.class.php -> Archivos con el código de la(s) acción(es). Puede haber varios. config/ -> Archivos de configuración del módulo. lib/ -> Clases y librerías externas utilizadas por el módulo. templates/ -> Plantillas correspondientes a las acciones del módulo. indexSuccess.php 31
  • 32. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Ejemplo “Mostrar artículos de una BBDD” (I)  Código PHP sin ningún framework: <?php Sólo funciona si la BBDD // Conectar con la base de datos y seleccionarla es MySQL $conexion = mysql_connect('localhost', 'miusuario', 'micontrasena'); mysql_select_db('blog_db', $conexion); // Ejecutar la consulta SQL $resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion); ?> No existe protección frente a errores <html> <head> <title>Listado de Artículos</title> </head> <body> <h1>Listado de Artículos</h1> HTML y PHP <table> <tr><th>Fecha</th><th>Titulo</th></tr> entrelazado <?php // Mostrar los resultados con HTML while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC)) { Frameworks MVC de desarrollo echo "t<tr>n"; printf("tt<td> %s </td>n", $fila['fecha']); printf("tt<td> %s </td>n", $fila['titulo']); echo "t</tr>n"; } ?> </table> </body> </html> Resultado: Aplicación <?php difícil de mantener y // Cerrar la conexion mysql_close($conexion); actualizar ?> 32
  • 33. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Ejemplo “Mostrar artículos de una BBDD” (II)  Código PHP, primera aproximación al MVC: modelo.php <?php function getTodosLosArticulos() { // Conectar con la base de datos y seleccionarla $conexion = mysql_connect('localhost', 'miusuario', 'micontrasena'); mysql_select_db('blog_db', $conexion); index.php (controlador) <?php // Ejecutar la consulta SQL $resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion); // Incluir la lógica del modelo require_once('modelo.php'); vista.php // Crear el array de elementos para la capa de la vista $articulos = array(); // Obtener la lista de artículos while ($fila =<html> mysql_fetch_array($resultado, MYSQL_ASSOC)) $articulos = getTodosLosArticulos(); { <head> $articulos[] = $fila; <title>Listado de Artículos</title> // Incluir la lógica de la vista } </head> require('vista.php'); Frameworks MVC de desarrollo <body> // Cerrar la conexión <h1>Listado de Artículos</h1> ?> mysql_close($conexion); <table> <tr><th>Fecha</th><th>Título</th></tr> return $articulos;<?php foreach ($articulos as $articulo): ?> } <tr> ?> <td><?php echo $articulo['fecha'] ?></td> <td><?php echo $articulo['titulo'] ?></td> </tr> <?php endforeach; ?> </table> </body> </html> 33
  • 34. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Ejemplo “Mostrar artículos de una BBDD” (III)  Código PHP, segunda aproximación al MVC: Modelo (acceso a datos) modelo.php Modelo (abstracción de la BBDD) function getTodosLosArticulos() modelo.php { // Conectar con la base de datos <?php $conexion = crear_conexion('localhost', 'miusuario', 'micontrasena'); function crear_conexion($servidor, $usuario, $contrasena) { // Ejecutar la consulta SQL return mysql_connect($servidor, $usuario, $contrasena); $resultado = consulta_base_de_datos('SELECT fecha, titulo FROM articulo', } 'blog_db', $conexion); function cerrar_conexion($conexion) { // Crear el array de elementos para la capa de la vista mysql_close($conexion); $articulos = array(); } Controlador while ($fila = obtener_resultados($resultado)) function consulta_base_de_datos($consulta, $base_datos, $conexion) { index.php { $articulos[] = $fila; <?php mysql_select_db($base_datos, $conexion); } return mysql_query($consulta, $conexion); } // Incluir la lógica del modelo // Cerrar la conexión require_once('modelo.php'); function obtener_resultados($resultado) cerrar_conexion($conexion); { return $articulos; // Obtener la lista de artículos return mysql_fetch_array($resultado, MYSQL_ASSOC); } $articulos = getTodosLosArticulos(); } ?> Frameworks MVC de desarrollo // Incluir la lógica de la vista require('vista.php'); Layout de la vista vista.php Plantilla de la vista ?> <html> miplantilla.php <head> Lógica de la vista <h1>Listado de Artículos</h1> <title><?php echo $titulo ?></title> vista.php <table> </head> <tr><th>Fecha</th><th>Título</th></tr> <?php <body> <?php foreach ($articulos as $articulo): ?> <?php echo $contenido ?> <tr> $titulo = 'Listado de Artículos'; </body> <td><?php echo $articulo['fecha'] ?></td> $contenido = include('miplantilla.php'); </html> <td><?php echo $articulo['titulo'] ?></td> ?> </tr> <?php endforeach; ?> 34 </table>
  • 35. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Ejemplo “Mostrar artículos de una BBDD” (III) Una programación correcta incluiría la realización de los siguientes scripts en cada capa:  La capa del Modelo – Abstracción de la base de datos ←“Creole” lo hace automáticamente – Acceso a los datos ←“Propel” genera las clases del modelo  La capa de la Vista – Layout – Lógica de la vista – Plantilla  La capa del Controlador – Controlador frontal ←Symfony crea uno por defecto Frameworks MVC de desarrollo – Acción 35
  • 36. 06.02 Frameworks MVC. Tecnología PHP. Symfony – Ejemplo “Mostrar artículos de una BBDD” (IV) Una programación correcta incluiría la realización de los siguientes scripts en cada capa: miproyecto/apps/miaplicacion/templates/layout.php  La capa del Modelo <html> <head> – Abstracción de la base de datos <?php echo include_title() ?> </head> – Acceso a los datos <body> <?php echo $sf_data->getRaw('sf_content') ?>  La capa de la Vista </body> </html> – Layout – Lógica de la vista miproyecto/apps/miaplicacion/modules/weblog/config/view.yml listadoSuccess: – Plantilla metas: { title: Listado de Artículos }  La capa del Controlador – Controlador frontal miproyecto/apps/miaplicacion/modules/ Frameworks MVC de desarrollo – Acción weblog/templates/listadoSuccess.php <h1>Listado de Artículos</h1> <table> miproyecto/apps/miaplicacion/ <tr><th>Fecha</th><th>Título</th></tr> modules/weblog/actions/actions.class.php <?php foreach ($articulos as $articulo): ?> <tr> <?php <td><?php echo $articulo->getFecha() ?></td> class weblogActions extends sfActions <td><?php echo $articulo->getTitulo() ?></td> { </tr> public function executeListado() <?php endforeach; ?> { </table> $this->articulos = ArticuloPeer::doSelect(new Criteria()); } } 36 ?>
  • 37. 07Conclusiones  No desaprovechemos millones de años de evolución… La rueda ya fue inventada.  Los frameworks permiten que nos centremos más en el desarrollo del “negocio” y menos en los detalles que no aportan valor (aunque sean imprescindibles).  Se debe buscar el punto de equilibrio entre el coste de utilización/aprendizaje de un framework y el coste del uso/mantenimiento posterior. Frameworks MVC de desarrollo  La “reutilización” y la “modularización” deben estar presentes desde el primer momento en el que comience el diseño de una aplicación. 37
  • 38. Anexo: frameworks “web móviles” (I)  Están basados en html 5 y css3  Symbian, Windows Phone 7, IOS, Android, Blackberry, etc…  Desarrollos orientados a sistemas de información y no a juegos Algunos de ellos son:  JQuery Mobile Frameworks MVC de desarrollo  Sencha Touch  DHTMLX Touch  Jo HTML5 38
  • 39. Anexo: frameworks “web móviles” (II) jQuery Mobile  Desarrollado por Team jQuery  Permite utilizar Ajax  Facilidad en la transición de páginas. Themes. A: Alta Compatibilidad B: Mediana Compatibilidad C: Baja Compatibilidad Frameworks MVC de desarrollo 39
  • 40. Anexo: frameworks “web móviles” (III) Sencha Touch  Conjunto de librerías de widgets de usuario, control para eventos táctiles  Permite la introducción de video y audio  Dispone de proxy local para guardar datos sin conexión  Petición de datos mediante Ajax, Jsonp o YQL Frameworks MVC de desarrollo 40
  • 41. Anexo: frameworks “web móviles” (IV) DHTMLX Touch  Librería de HTML5 y JavaScript  Es gratuita con licencia GPL  Dispone de un entorno de programación visual Frameworks MVC de desarrollo 41
  • 42. Anexo: frameworks “web móviles” (V) Enlaces de interés  jQuery Mobiles – http://www.jqmgallery.com/ – http://wwwhatsnew.com/2011/03/31/introduccion-a-jquery-mobile/ – http://www.baluart.net/articulo/ejemplo-de-aplicacion-web-movil-con- jquery-mobile – http://geeks.ms/blogs/gperez/archive/2010/10/22/tutorial-creando-una- app-con-jquery-mobile-webmatrix-y-razor.aspx  Sencha Touch – http://www.sencha.com/products/touch/ – http://dev.sencha.com/deploy/touch/getting-started.html Frameworks MVC de desarrollo – http://miamicoder.com/2010/creating-sencha-touch-toolbar-buttons/ – http://mobile.tutsplus.com/articles/news/sencha-touch-html5-mobile- framework/ – http://www.slideshare.net/davidkaneda/sencha-touch-workshop  DHTMLX Touch – http://www.dhtmlx.com/index.shtml 42
  • 43. Gracias por su atención Jesús Cáceres Tello jesus.caceres@isciii.es Tlf: +34 918 222 479 Santiago Pérez de la Cámara sperezd@isciii.es Tlf: +34 918 222 572 Unidad de Investigación en Telemedicina y e-Salud Avda. Monforte de Lemos, 5 28029 - Madrid. España www.isciii.es