Un Framework Para El Desarrollo De Aplicaciones Complejas Basadas En Web Autores

Un Framework Para El Desarrollo De Aplicaciones Complejas Basadas En Web Autores

Título: Un framework para el desarrollo de aplicaciones complejas basadas en Web Autores: Alejandro Siri y Mariano Montone Director: Alicia Diaz Codirector: Alejandro Fernandez Carrera: Licenciatura en Informática La introducción de la Web como plataforma para el desarrollo de aplicaciones complejas rompió con los moldes y prácticas existentes e introdujo nuevos problemas y complicaciones. Existen muchos Frameworks y Librerías que abarcan estos problemas desde diversos ángulos, y proveen soluciones para algunos ellos. El desarrollador se ve obligado entonces a elegir un conjunto de estos Frameworks y Librerías, intentar solucionar la mayor cantidad de problemas posibles, e integrarlos para que funcionen en conjunto. Esta tesis describe tales problemas, separándolos en las 3 partes de la arquitectura MVC y luego, basándose en dos conceptos principales, que son la Composicionalidad y la Programación Declarativa, define un Framework que provee una solución a todos estos problemas al mismo tiempo, de manera integrada. El Framework es luego implementado en PHP, junto con las múltiples librerías que utiliza, y utilizado para resolver un problema del mundo real. Framework, Desarrollo, Web, Ajax, Comet, Componentes, La programación declarativa y la composición fueron ejes Templates, MVC, MVP, Composicionalidad, Programación fundamentales en el diseño de un Framework integrado y Declarativa completo. El Framework diseñado e implementado es usable y performante. Los problemas del desarrollo web pueden ser solucionados y abstraídos, permitiendo al desarollador enfocarse en el problema real a resolver. Investigación de los problemas recurrentes de las Algunas de las mejoras que se pueden hacer sobre el aplicaciones web. framework son: Investigación del estado del arte. Diseño de un Framework para resolver estos problemas. • Agregar “Value Expressions” Implementación del Framework y de librerías • Realizar un Testing Automático completo complementarias. • Permitir Múltiples Bases de Datos Implementación de una aplicación basada en el • Implementar Integración con Librerías existentes Framework para una tercera parte. • Implementar un mecanismo de Continuaciones • Diseñar y Desarrollar Plantillas avanzadas • Migrar el código a PHP 5.3 Febrero de 2012 Un framework para el desarrollo de aplicaciones complejas basadas en Web Alejandro Siri Mariano Montone ´Indice general ´Indice de figuras 3 ´Indice de cuadros 4 ´Indice de snippets 5 1. Introducci´on 9 2. Los problemas de las Aplicaciones Web 11 2.1. MVC en la Web ............................ 11 2.2. El Ejemplo: eMarket ......................... 12 2.3. Los problemas ............................. 14 3. Enfoques Metodol´ogicos 21 3.1. Acerca de la composicionalidad ................... 21 3.2. Programaci´ondeclarativa ...................... 22 4. Estado del arte 28 4.1. Smalltalk: Seaside + GLORP .................... 28 4.2. Ruby on Rails ............................. 31 4.3. Php: Symfony ............................. 36 4.4. Java: Hibernate + JSF + Seam ................... 40 5. Un framework para enfrentarlos a todos 47 5.1. Modelo ................................ 47 5.2. Controlador .............................. 56 5.3. Vista .................................. 63 6. PHP como lenguaje de implementaci´on 77 6.1. Multiple Dispatching ......................... 78 6.2. Referencias D´ebiles .......................... 80 6.3. PHPCC ................................ 82 6.4. Chequeo de Tipos .......................... 83 6.5. Macros ................................. 86 6.6. Mixins ................................. 87 6.7. Compilaci´on .............................. 89 6.8. COMET ................................ 90 6.9. Variables Din´amicas ......................... 91 6.10. Configuraci´on ............................. 95 7. Caso de ´exito:Intranet 97 7.1. Modelo ................................ 98 7.2. Controlador ..............................101 7.3. Vista ..................................107 2 ´INDICE GENERAL ´INDICE GENERAL 7.4. Conclusi´on . .............................108 8. Conclusi´ony Trabajo a Futuro 109 8.1. Conclusi´on ..............................109 8.2. Trabajo a Futuro . 110 Glosario 113 Bibliograf´ıa 113 ´Indice alfab´etico 116 3 3 ´Indice de figuras 2.1. Arquitectura Modelo-Vista-Controlador . 11 2.2. El MVC en la Web .......................... 13 2.3. Diagrama UML del ejemplo de eMarket . 14 3.1. Estado del men´u\Cortar" bajo el paradigma imperativo . 23 3.2. Estado del men´u\Cortar" bajo el paradigma declarativo . 24 3.3. Dependencias entre objetos con estados . 25 3.4. Actualizaci´onimperativa ....................... 25 3.5. Actualizaci´ondeclarativa ...................... 26 3.6. Composici´onde estados ....................... 26 3.7. Composici´onde estados imperativa . 27 3.8. Composici´onde estados declarativa . 27 5.1. Kusala - Pantalla de administraci´ondel sistema . 54 5.2. Kusala - Pantalla de diferencias de la base de datos . 55 5.3. Arquitectura Modelo-Vista-Presentador . 61 5.4. Diferencias entre MVC y MVP ................... 61 5.5. Hilo de componentes ......................... 63 5.6. Motor de plantillas \pull" ...................... 66 5.7. Motor de plantillas \push" ...................... 67 6.1. Representaci´ongr´aficade un registro de activaci´on . 91 6.2. Extensi´onde variables de lenguajes de programaci´on . 91 6.3. Extensi´onde variables din´amicas . 92 6.4. B´usquedadel valor de una variable din´amica . 93 6.5. B´usquedauna variable de hilo de componente . 94 7.1. Pantalla de Login ........................... 98 7.2. UML del modelo de Agenda ..................... 98 7.3. Listado de Agenda . 101 7.4. Transacci´onactiva . 104 4 ´Indice de cuadros 5.1. Comparaci´onde soluciones a la administraci´onde objetos . 56 5.2. Comparaci´onde soluciones al problema de edici´on . 63 5.3. Comparaci´onde soluciones al problema de la presentaci´on . 67 6.1. Tipos de variables .......................... 92 5 Snippets 4.1. Mapping en Glorp .......................... 29 4.2. Query en Glorp ............................ 29 4.3. Vista en Seaside ........................... 30 4.4. Rails - Clases Author y Product . 31 4.5. Rails - Tablas author y product ................... 32 4.6. Rails - Actualizaci´onde datos .................... 32 4.7. Rails - Consulta ............................ 32 4.8. Rails - Archivos del Scaffolding ................... 33 4.9. Rails - Controller de listado ..................... 33 4.10. Rails - Controller de actualizaci´on . 34 4.11. Rails - Vista de listado de productos . 35 4.12. Symfony - Definici´ondel modelo . 37 4.13. Symfony - Tablas generadas ..................... 37 4.14. Symfony - Clases generadas ..................... 37 4.15. Symfony - Consulta en DQL ..................... 38 4.16. Symfony - Controller para listado . 38 4.17. Java - Definici´ondel modelo - Author . 41 4.18. Java - Definici´ondel modelo - Product . 42 4.19. Java - Actualizaci´ondel modelo ................... 43 4.20. Java - Consulta en HQL ....................... 43 4.21. Java - Bean de Author ........................ 44 4.22. Java - Interface de AuthorManager . 45 4.23. Java - Bean de lista de Author ................... 45 4.24. Java - Vista de Lista de Autores . 46 5.1. Kusala- Declaraci´onde la clase Author . 47 5.2. Kusala - Guardado y recuperaci´onde objetos . 48 5.3. Kusala - Persistencia por Alcance . 49 5.4. Kusala - Ejemplo de OQL ..................... 49 5.5. Kusala - Uso de OQL dentro del programa . 49 5.6. Kusala - Gram´aticade OQL .................... 50 5.7. Kusala - Recuperaci´onde un error de transacci´on . 52 5.8. Kusala - Consulta a una colecci´onmodificada . 53 5.9. Kusala - Llamada desde controlador . 57 5.10. Kusala - Composici´onde componentes . 58 5.11. Kusala -Actualizaci´onde datos de un controlador . 59 5.12. Vista en Seaside ........................... 68 5.13. Kusala - Configuraci´onde la aplicaci´on- AJAX . 70 5.14. Kusala - Template .......................... 70 5.15. Kusala - Template .......................... 71 5.16. Kusala - Subtemplate para un hijo . 71 5.17. Kusala - Subtemplate para una clase . 72 5.18. Kusala - Elementos de una lista . 72 5.19. Kusala - Template con Template Method . 73 5.20. Kusala - Template para un Producto . 73 6 SNIPPETS SNIPPETS 5.21. Kusala - Template para un Autor y sus productos . 74 5.22. Kusala - Template para un Producto y Autor . 75 6.1. Declaraci´onde M´ultipleDispatching . 78 6.2. Declaraci´onde Context Dispatching . 79 6.3. Llamado de Context Dispatching . 79 6.4. Overriding por Context Dispatching . 80 6.5. Uso de WeakReferences ....................... 81 6.6. Consulta en OQL ........................... 82 6.7. Resultado de consulta en OQL ................... 82 6.8. Invocaci´onde PHPCC ........................ 83 6.9. Uso de Typechecking y assertions . 85 6.10. Definici´onde una macro ....................... 86 6.11. Definici´onde la macro defmdf .................... 87 6.12. Definici´onde un mixin ........................ 88 6.13. Ejemplo de configuraci´ondel sistema . 96 7.1. Definici´onde la clase ExternalPerson . 99 7.2. ExternalPerson visibles por un User . 100 7.3. Uso de File ..............................100 7.4. Context dispatching en Empresas . 102 7.5. Context dispatching en Empresas - Continuaci´on . 103 7.6. Editor para Empresas . 105 7.7. Permisos del Men´usuperior . 106 8.1. Sintaxis de ValueExpressions . 111 8.2. Sintaxis de ValueExpressions . 112 7 7 Abstract La introducci´onde la Web como plataforma para el desarrollo de aplicaciones complejas rompi´ocon los moldes y pr´acticasexisten- tes e introdujo

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    118 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us