FRAMEWORKS (Conceptos y Prácticas)
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Reuso en el Desarrollo. de Software Copiar y Pegar Inclusión de archivos Librerías de funciones API Mediante herencia Mediante composición Por plantillas Con componentes Usando patrones Usando frameworks De Modelos
Definición de Framework Un Framework es una mini-arquitectura reutilizable que provee la estructura genérica y el comportamiento para una familia de abstracciones de software, junto con un contexto formado por metáforas que especifican las colaboraciones y el uso en un dominio dado.
Reuso de diseño y código Al adoptar un framework estamos reusando tanto el diseño que éste trae incorporado como el artefacto físico (código ejecutable). Por este motivo el creador del framework debe ser un experto en el dominio.
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Principio de Inversión del Control El código de un aplicación convencional está formado por piezas centrales que utilizan clases o rutinas utilitarias externas.
Principio de Inversión del Control En el desarrollo con frameworks, las clases o módulos de una aplicación son manejados por la lógica de control interna del framework.
Principio de Inversión del Control Framework (Director) Aplicación (Orquesta) Todo debe estar en un lugar acordado
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Estructura de un Framework Frozen Spot Hot Spot
Desarrollo con Frameworks
Nacimiento de un Framework Aplicación A Aplicación B Aplicación C Identificación de Puntos Comunes Framework
Frozen y Hot Spots Aplicación A Los frozen spots de un framework son aquellos puntos de reutilización no o mínimamente extensibles Aplicación B Framework Aplicación C Puntos de extensión Aplicación D Los hot spots de un framework son aquellos puntos de reutilización mediana o fuertemente extensibles
Caja Blanca vs. Caja Negra Framework de Caja Blanca Framework de Caja Negra Framework de Caja Gris
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Frameworks (en Java) JSF Eventos, Componentes, IoC WebWork Tapestry Frameworks de presentación Servlets MVC, Action controller Freemaker, Velocity JSPs Struts Frameworks de integración de componentes Pool de Objetos Picocontainer Frameworks de persistencia EJBs IoC, POJO JDBC Hibernate Spring Mapeo Objeto- Relacional ibatis
Basado en el patrón Template Method Framework JUnit
Arquitecturas por capas y Frameworks
Elementos J2EE distribuidos en 5 niveles
Implantación de patrones
Framework STRUTS
Framework ORACLE BC4J
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Historia de PHP 1994 Creado por Rasmus Lerdorf. Llamado: Personal Home Page 1995 PHP/FI (Interprete de Formularios) 1998 Liberado PHP3 Llamado: Hypertext Preprocessor
Historia de PHP 2000 Liberado PHP4 Motor ZEND creado por: Zeev Suraski Andi Gutmans En la actualidad Liberada PHP5 http://www.php.net/ http://www.zend.com/
Antecedentes de Frameworks en PHP 2 1 HTTP request (PHP) *.php HTML 3 (Bytecode) Client 5 HTTP response (HTML) Web Server (HTTP Engine) 4 Template Engine DBMS
Antecedentes de Frameworks en PHP Template Engine. (Motores de Plantillas) Smarty PHP Nuke TemplatePower xtemplate FastTemplate PHPlib
Frameworks en PHP
Frameworks en PHP
Frameworks MVC en PHP Request Response Request Front Controller Controller Action Dispatcher Response Request Response
MVC en J2EE request Controller (Servlet) response forward View (JSP) update Model (JavaBean) get information
MVC en PHP (ej. Prado) request Controller (/pages/*.php) update response forward Model (/data/*.php) View (/pages/*.page) get information
Frameworks en PHP Frameworks en PHP * Web Application Component Toolkit * Ismo * Prado * InterJinn * Binarycloud * Copix * PhpMvc (StrutsPort) * Sitellite * Booby * Phrame (StrutsPort) * Mojavi * FastFrame * eocene (StrutsPort) * LogiCreate * Seagull * Ambivalence (MaverickPort) * Medusa * FuseLogic *?Krysalis (CocoonPort) * Core Enterprise PHP * Studs (StrutsPort) * Popoon (CocoonPort) * Tanjero Jive * Cgiapp * ezpublish * rwfphp * Navigator * MVC8 * LIMB * Castor * SMART * Horde * VAAL Fuente: http://wact.sourceforge.net/index.php/mvcframeworkswritteninphp
Frameworks en PHP
Contenido Introducción Principio de Inversión de Control Características de los Frameworks Frameworks en Java Frameworks en PHP Evaluación de Frameworks
Evaluación de Frameworks en PHP 1. Selección de los Frameworks. 2. Selección de las características. 3. Valoración de las características. 4. Calificación de cada Framework. 5. Computar totales y seleccionar el mejor Framework.
1. Selección de los Frameworks Alternativas: PEAR: WACT: Prado: http://pear.php.net/ http://www.phpwact.org/ http://www.pradosoft.com/
1. Selección de los Frameworks PEAR Basado en componentes. Framework propio de la comunidad de PHP. Propone estilos estándar de codificación. Manejo de errores. Amplia baraja de librerías. Actualizaciones en línea e integradas con PHP. Uso de AJAX.
1. Selección de los Frameworks WACT Implementación MVC. Manejo de errores. Numerosas opciones de configuración. Facilidad para el cambio en la lógica del negocio. Motor de plantillas. Arquitectura de controladores. Fácil integración con AJAX. Robustas alternativas para el montaje de seguridad.
1. Selección de los Frameworks Prado Basado en componentes. Programación dirigida por eventos. Integración de temas. Reusabilidad. Variedad de controles web Soporte de Ajax a partir de la versión 3.1 Cumplimiento de XHTML Motor de Plantillas. Fácil de usar, robusto y maneja de Excepciones. Usa técnicas de cache para mejorar desempeño. Php Rapid Application Development Object-oriented. Validaciones livianas en Java-Script.
2. Selección de las Características Documentación: Manuales, ejemplos y comunidad de desarrollo del framework para garantizar un adecuado soporte. Seguridad: Manejo de usuarios y mecanismos de personalización de menús para la adecuada implementación de roles. Facilidad de uso: Proceso de instalación sencillo, al igual que las actualizaciones y adaptaciones sobre el framework. Internacionalización: mecanismos para el manejo de parámetros que permitan la internacionalización del portal. Manejo de errores: Captura y personalización de los errores para un adecuado tratamiento y presentación de los mismos.
2. Selección de las Características Perfil: Soporte a un modelo de desarrollo adecuado a las necesidades particulares del equipo técnico. Curva de Aprendizaje: Dificultad a facilidad para la implementación de ejemplos que nos definan la complejidad de uso. Madurez: Versión del framework y sistemas en producción que han sido desarrollados usando éste. Robustez adecuada: Mecanismos de manejo de concurrencia y volúmenes de información que se ajusten a las necesidades del portal. Escalabilidad: Adecuado manejo de los servicios de infraestructura que garanticen mantener tiempos de respuestas apropiados a pesar del crecimiento del portal.
3. Valoración de las Características # Caracteristica Peso 1 Documentación 9 2 Seguridad 6 3 Facilidad de uso 10 4 Internacionalización 6 5 Manejo de errores 6 6 Perfil 7 7 Curva de Aprendizaje 9 8 Madurez 8 9 Robustez adecuada 9 10 Escalabilidad 10
4. Calificación de cada Framework # Caracteristica PEAR WACT Prado Peso 1 Documentación 3 5 5 9 2 Seguridad 3 5 5 6 3 Facilidad de uso 3 4 5 10 4 Internacionalización 3 3 3 6 5 Manejo de errores 4 4 4 6 6 Perfil 4 4 5 7 7 Curva de Aprendizaje 3 4 5 9 8 Madurez 5 4 4 8 9 Robustez adecuada 3 2 5 9 10 Escalabilidad 3 3 4 10
5. Computar y Seleccionar el Mejor # Caracteristica PEAR WACT Prado Peso 1 Documentación 3 27 5 45 5 45 9 2 Seguridad 3 18 5 30 5 30 6 3 Facilidad de uso 3 30 4 40 5 50 10 4 Internacionalización 3 18 3 18 3 18 6 5 Manejo de errores 4 24 4 24 4 24 6 6 Perfil 4 28 4 28 5 35 7 7 Curva de Aprendizaje 3 27 4 36 5 45 9 8 Madurez 5 40 4 32 4 32 8 9 Robustez adecuada 3 27 2 18 5 45 9 10 Escalabilidad 3 30 3 30 4 40 10 Total 269 301 364
Preguntas y Respuestas? Muchas Gracias!