Your SlideShare is downloading. ×
Búsqueda del framework ideal de php
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Búsqueda del framework ideal de php

1,194
views

Published on

Published in: Technology, Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,194
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Saludos mi nombre es Yonel Meza Avila
    Tengo cierta experiencia en el campo de desarrollo de aplicaciones
    La idea de esta presentación es dale al público una visión de que puede esperar de los frameworks para desarrolllo y en caso de querer evaluar otros como realizar dicha evaluación
    Los frameworks que evaluaremos son 3, cakePHP, Symfony y Zend Framework, se eligieron esos 3 por su versatilidad y por su popularidad.
  • Lo primero:
    ¿Qué estamos buscando?
    Para el desarrollo de aplicaciones hay dos niveles muy importantes:
    El desarrollador: es importante que el desarrollador se sienta comodo, teniendo una arquitectura adecuada la cual le permite dos cosas: 1 aplicar sus conocimientos en una sola area y organizar de mejor forma su trabajo (el código), además de esto la posibilidad para realizar cambios de forma rapida (ya sea en los módulos como en el look&feel de la aplicación), que le sea rápido realizar la aplicación (o algún modulo de ella) que tenga herramientas ya desarrolladas (no es necesario inventar la rueda) y por último en caso de terner errores que disponga de algo más de las herramientas del propio lenguaje (PHP)
    El otro nivel es el redimiento de la aplicación: uno como desarrollador tienen que buscar que las soluciones sean rapidas y además que no pidan excesivo hardware para que funcionen
  • Antes de comenzar la evaluación veamos un poco de la historia de lo que vamos a evaluar:
    Los 3 framworks son MVC, bueno salvo el Zend framework que permite realizar aplicaciones con otro tipo de estructura
    Los 3 sacaron en su primera versión en fechas cercanas, allí podemos ver los creadores originales de los proyectos, salvo el ZF del cual no se encuentra mucha información de su historia
    Sobre las licencias encontramos dos MIT y el otro BSD, son licencias equivalentes en la mayoria de sus aspectos
    Adicionalmente podemos ver la evolución de las versiones, ZF, SF, CPHP
  • De que disponemos en los framworks
    Librerias y frameworks de Javascrip para AJAX
    Objeros para manipular conexiones a base de datos
    Módulos para realizar pruebas
    Manejo de Cache propio, aunque tambien los 3 soportan manejo de cache externo como el Xcache que da muy buenos resultados
    El unico en el que se puede trabajar en PHP 4 es en cakePHP (aunque eso es obsoleto), en los 3 podemos trabajar en PHP 5 incluyendo la ultima versión 5.3
    Y los 3 manejan intenacionalización y localización
  • Hasta ahora las caracteristicas que hemos vistos son similares en los 3 frameworks
    En los extras es que empioeza a existir diferenciación:
    En CakePHP:
    En Symfony:
    En ZF:
    Ahora bien empezemos con la evaluación
  • Que podemos hacer para tener un código bien organizado:
    Elegir una arquitectura que posea separación por utilidad, una de las más versatiles y utilizadas es MVC
    EXPLICACIÓN de la lamina
    Esta arquitectura permite separa a los desarrolladores por su experticia, Diseñadores, experto en lógica y manipulación de información y por último expertos en Bases de datos
  • En estos 3 frameworks de que disponemos:
    Modelos: DESCRIPCIÓN
    Vista: DESCRIPCIÓN
    Controlador: DESCRIPCIÓN
  • En los 3 disponemos de layouts:
    En el cual ponemos una plantilla madre la cual contiene una zona donde se va a renderizar la vista particular de una acción
    Este debe contener el contenido constante en la rederización de todas las vistas
    Los 3 permiten tener diferentes layout no solo uno
  • Los 3 adicionalmente posen
    Templates: vistas particulares de las acciones
    Helpers: funciones o clases que ayudan a renderizar objetos o cosas por el estilo
    Y los 3 permiten tener partes constantes de cóndigos que se pueden agregar en los templates partes para las cuales no se necesitan lógica para realizarlas (normalmente constantes) y que son comunes en algunas vistas, la idea de esto es no repetir código, solo se realiza una vez y se coloca en las vistas necesarias
  • En SF y ZF tenemos una posibilidad de colocar partes en las renderizaciones que son comunes entre las vistas pero que dependen de cierta lógica para su renderización y son comunes en distinas acciones
  • Por último SF y ZF dan la posibilidad de colocar en el layout ciertos lugares donde los templates pueden renderizar ciertos bloques particulares, es como lo que se hace en aplicaciones CMS con los bloques
  • Ahora pasemos a otra parte importante para el desarrollador,
    Que necesitamos para podernos conectar a una base de datos
  • Hay una parte inportante de muchas aplicaciones, el backend o parte adminsitrativa, esta en su mayoria esta conformada por interfaces de tipo CRUD
    Create, read, update y detele
  • Y si tenemos errores que herramientas tenemos adicionales a las de PHP:
    Los 3 disponen de un traceador de las corridas donde especifican que por cuales archivos se pasaron y en que lineas fueron las llamadas a las diferentes funciones, pero además de esto disponemos de:
  • Para la evaluación de rendimiento se realizaron las siguientes pruebas:
  • Para la evaluación de rendimiento se realizaron las siguientes pruebas:
  • Para la evaluación de rendimiento se realizaron las siguientes pruebas:
  • Para poder obtener un tiempo aproximado de ejecución, se tomo el controlador principal de cada framework y se le agrego una función para guardar el tiempo en la memoria y con ello se realizaron dos lecturas, una al principio y otra final para poder con la diferencia obtener el valor deseado
  • En estas pruebas obtuvimos que en promedío la diferencia entre los 3 frameworks no hubo mucha diferencia. Siendo el más rapido simpre el cakePHP
  • Para realizar otras pruebas de tiempo y corroborar lo que se había medido hasta el momento se utilizo el Apache Jmeter, que es una aplicación open source desarrollada en Java para realizar pruebas funcionales y de rendimiento a diferentes tipos de aplicaciones.
    Se realizaron pruebas de un usuario a la vez consecutivamente
    Y unas pruebas de carga utilizando 10 usuarios a la misma vez consecutivamente
  • Como pueden observar las pruebas concuerdan con las que se realizaron con el otro método y se mantiene el promedio de las 3
  • Con la aplicación Apache Jmeter tambien se puede obtener un valor que representa el rendimiento de la aplicacion que se esta probando, como puende ver en promedio los 3 siguen siendo similares
  • En las pruebas de carga se puede notar que el tiempo de respuesta es mayor y se conservan al igual que las anteriores los resultados
  • Para saber cuanto de memoria consumian las aplicaciones se reazo lo siguiente:
    Con el uso de una función de PHP llamada memory_get_peak_usage que obtiene el máximo de memoria utilizada en toda la corrida, se realizó una única llamada al final del controlador principal, no se realizó utilizando una herramienta externa porque hay una tema de cacheo de memoria que no nos permitiría saber exactamente cuanto era el consumo
  • Los resultados de memoria se asemejan mucho a los de tiempo en promedio el consumo es similar y el cakePHP tiene mejor rendimiento de memoria
  • Transcript

    • 1. Búsqueda del frameworkBúsqueda del framework ideal de PHPideal de PHP 1er Encuentro de Software Libre del Ecuador Yonel Meza Avila y@doknos.com
    • 2. • Para el desarrollador: • Arquitectura adecuada • Facilidad para realizar cambios (módulos y look&feel) • Velocidad de desarrollo • Fácil depuración • Para el rendimiento del sistema: • Bajo tiempo de ejecución • Baja cantidad de memoria utilizada ¿Qué estamos buscando? DD RR AA VV CC DD TT MM
    • 3. Historia CakePHP Symfony Zend Framework Patrón de diseño MVC MVC MVC (por elección) 1era versión 2005 (Michal Tatarynowicz) 2005 (Fabien Potencier) 2006 (Zend ?) Origen USA Francia USA Licencia MIT MIT BSD Estable actual 1.3.5 1.4.8 1.10.8
    • 4. ¿De qué disponemos? CakePHP Symfony Zend Framework Manejo AJAX Prototype y Script.aculo.us JQuery Dojo ORM Propio (Patrón Data Mapper) Doctrine(*) y Propel No (Table and Row data gateway) Pruebas Sí Sí Sí Cache Sí Sí Sí Versión del PHP 5 y 4 5 5 i18n y L10n Sí Sí Sí
    • 5. ¿Qué más tenemos? ● CakePHP: ● Pocas funcionalidades integradas en el core ● Pocos plugins en la comunidad ● Symfony: ● Cantidad media de funcionalidades en el core (por encima de lo mínimo necesario) ● Gran cantidad de plugins en la comunidad ● Zend: ● Gran cantidad de funcionalidades en el core (a veces más de las deseadas) ● Poca cantidad de plugins en la comunidad
    • 6. ¿Cómo organizamos nuestro código? ControladorControlador VistaVista ModeloModelo Cliente Petición Resultado Lectura Escritura Lectura Envío de información Directa Indirecta (Patrón observador) DD AA
    • 7. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions ¿Qué posibilidades tenemos? DD AA CC
    • 8. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Layouts Layout + template template Layout Página Final = DD AA CC
    • 9. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions DD AA CC ¿Qué posibilidades tenemos?
    • 10. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Parte inteligente en las vistas Template Sf: Components Zf: Actions Lógica Presentación (Partials) DD AA CC
    • 11. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions DD AA CC ¿Qué posibilidades tenemos?
    • 12. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Posición de los bloques variables Template + Layout =Slot 1 (PH) Slot 2 (PH) Template Slot 2 Slot1 Layout Template Slot 2 Slot1 DD AA CC
    • 13. ¿Qué necesitamos para crear un modelo? ● CakePHP: Poco ● Creación de archivos,configuración de los los modelos, relaciones. ● Symfony: Nada ● Solo comando en una terminal, configuraciones pequeñas ● Zend Framework: Mucho ● Creación de archivos, configuración de los los modelos, relaciones, implementación de métodos de escritura, lectura, actualizaciones, etc. DD VV
    • 14. ● CakePHP: Scaffolds ● Fáciles de crear, poco personalizables ● Symfony: Admin ● Fáciles de crear, completamente personalizables, incluyen filtros de datos ● Zend Framework: Ninguna ¿Necesitamos interfaces de administración? DD VV
    • 15. ● CakePHP: Poco ● Solo sentencias SQL ejecutadas a través de los modelos ● Symfony: Completo ● posee un barra de información completa: configuración de la aplicación, módulos de la vista ejecutados, sentencias SQL ejecutadas a través de los modelos y logs, memoria y tiempo utilizados en la corrida ● Zend Framework: Mínimo ● solo modificación al formato de var_dump Y si tenemos errores DD DD
    • 16. ● Tiempo de ejecución ● Internas ● Externas (Apache JMeter) ● Memoria utilizada ● Internas ¿Qué pruebas se realizaron? RR TT MM
    • 17. ● Máquina host: ● Intel i5 M430 2.27 Ghz ● Memoria 4GB DDR3 1067MHz ● HD SATA II 5400 rpm ● Maquina virtual – 2 CPUs – Memoria 1GB – Debian Lenny ¿En qué se realizaron? RR TT MM
    • 18. ● 3 módulos: ● Principal: minimo procesamiento ● Módulo albumss: busqueda en una sola tabla e impresión paginada ● Módulo songs: busqueda en dos tablas relacionadas e impresión paginada ¿De qué se trata la aplicación? RR TT MM
    • 19. ¿Podemos medir tiempo de proceso? RR TT Cargar configuracionesCargar configuraciones DespachadorDespachador Censo de tiempoCenso de tiempo Censo de tiempoCenso de tiempo Controlador principal (index.php en raíz de la app) Impresión de diferenciaImpresión de diferencia Cliente (Petición)Cliente (Petición) Cliente (Respuesta)Cliente (Respuesta)
    • 20. Home page Albums Songs TOTAL 0 50 100 150 200 250 Tiempo de proceso cf sf zf ms ¿Qué obtuvimos en las pruebas internas? RR TT
    • 21. ¿De qué otra forma se podría medir el tiempo? Apache JMeter es una aplicación Open Source, desarrollada en Java y diseñada para realizar pruebas funcionales y de rendimiento a diferentes tipos de aplicaciones. Pruebas realizadas: ● 1 usuario, múltiples peticiones consecutivas ● 10 usuarios simultáneos, múltiples peticiones consecutivas RR TT
    • 22. Home Albums Songs Total 0 50 100 150 200 250 Tiempo de respuesta cf sf zf ms RR TT ¿Qué obtuvimos en las pruebas externas? (1 usuario)
    • 23. Home Albums Songs Total 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 Rendimiento (peticiones por segundo) cf sf zf r/s RR TT ¿Qué obtuvimos en las pruebas externas? (1 usuario)
    • 24. Home Albums Songs Total 0 200 400 600 800 1000 1200 Tiempo de respuesta cf sf zf ms RR TT ¿Qué obtuvimos en las pruebas externas? (10 usuarios)
    • 25. Home Albums Songs Total 0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 Rendimiento (peticiones por segundo) cf sf zf r/s RR TT ¿Qué obtuvimos en las pruebas externas? (10 usuario)
    • 26. ¿Cuánto consume mi aplicación? RR MM Cargar configuracionesCargar configuraciones DespachadorDespachador Controlador principal (index.php en raíz de la app) Impresión del máximoImpresión del máximo Cliente (Petición)Cliente (Petición) Cliente (Respuesta)Cliente (Respuesta) Censo de memoriaCenso de memoria
    • 27. ¿Qué obtuvimos? Home page Albums Songs 0 2000 4000 6000 8000 10000 12000 Consumo de memoria (memory_get_peak_usage) cf sf zf kB RR MM
    • 28. ¿Quién ganó? • Para el desarrollador: • Arquitectura adecuada • Facilidad para realizar cambios (módulos y look&feel) • Velocidad de desarrollo • Fácil depuración • Para el rendimiento del sistema: • Bajo tiempo de ejecución • Baja cantidad de memoria utilizada
    • 29. ¿Dónde podemos encontrar información? ● CakePHP: ● www.cakephp.org ● www.cakedc.com ● Symfony: ● www.symfony-project.org ● Zend Framework: ● framework.zend.com
    • 30. Búsqueda del frameworkBúsqueda del framework ideal de PHPideal de PHP ¡Gracias por su atención! 1er Encuentro de Software Libre del Ecuador Yonel Meza Avila y@doknos.com www.doknos.com