SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
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
• 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?
D
R
A
V
C
D
T
M
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
¿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í
¿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
¿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)
D A
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?
D A C
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
=
D A C
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
D A C
¿Qué posibilidades tenemos?
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)
D A C
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
D A C
¿Qué posibilidades tenemos?
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
D A C
¿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.
D V
● 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?
D V
● 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
D D
● Tiempo de ejecución
● Internas
● Externas (Apache JMeter)
● Memoria utilizada
● Internas
¿Qué pruebas se realizaron?
R T M
● 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?
R T M
● 3 módulos:
● Principal: mínimo procesamiento
● Módulo albums: búsqueda en una sola tabla e
impresión paginada
● Módulo songs: búsqueda en dos tablas
relacionadas e impresión paginada
¿De qué se trata la aplicación?
R T M
¿Podemos medir tiempo de proceso?
R T
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 (Respuesta)
Home page Albums Songs TOTAL
0
50
100
150
200
250
Tiempo de proceso
cf
sf
zf
ms
¿Qué obtuvimos en las pruebas internas?
R T
¿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
R T
Home Albums Songs Total
0
50
100
150
200
250
Tiempo de respuesta
cf
sf
zf
ms
R T
¿Qué obtuvimos en las pruebas externas?
(1 usuario)
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
R T
¿Qué obtuvimos en las pruebas externas?
(1 usuario)
Home Albums Songs Total
0
200
400
600
800
1000
1200
Tiempo de respuesta
cf
sf
zf
ms
R T
¿Qué obtuvimos en las pruebas externas?
(10 usuarios)
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
R T
¿Qué obtuvimos en las pruebas externas?
(10 usuario)
¿Cuánto consume mi aplicación?
R M
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 (Respuesta)
Censo de memoriaCenso de memoria
¿Qué obtuvimos?
Home page Albums Songs
0
2000
4000
6000
8000
10000
12000
Consumo de memoria (memory_get_peak_usage)
cf
sf
zf
kB
R M
¿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
¿Dónde podemos encontrar información?
● CakePHP:
● www.cakephp.org
● www.cakedc.com
● Symfony:
● www.symfony-project.org
● Zend Framework:
● framework.zend.com
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

Mais conteúdo relacionado

Destaque

Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...
Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...
Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...Encarna Lago
 
Presentación infancia Hospitalización y Derechos
Presentación infancia Hospitalización y DerechosPresentación infancia Hospitalización y Derechos
Presentación infancia Hospitalización y DerechosPolitica Infancia
 
Manejo de tablas.
Manejo de tablas.Manejo de tablas.
Manejo de tablas.MPGaby
 
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...csermeg
 
Accesibilidad Laura
Accesibilidad LauraAccesibilidad Laura
Accesibilidad Laurainformatica4
 
recursos para el blog
recursos para el blogrecursos para el blog
recursos para el bloguv.ambiental
 
Mapa conceptual blogs & wikis
Mapa conceptual blogs & wikisMapa conceptual blogs & wikis
Mapa conceptual blogs & wikisMarvin Calderon
 
Act1.uni2.valeria.soto.mendoza
Act1.uni2.valeria.soto.mendozaAct1.uni2.valeria.soto.mendoza
Act1.uni2.valeria.soto.mendozaValë Sötö
 
Publicidad en internet
Publicidad en internetPublicidad en internet
Publicidad en internetCeleste Anleu
 
Catalogo productos y servicios
Catalogo productos y serviciosCatalogo productos y servicios
Catalogo productos y serviciosMaca Ortúzar
 
Ejercicios unidad 10
Ejercicios unidad 10Ejercicios unidad 10
Ejercicios unidad 10Ivan Leon
 

Destaque (20)

Mapa de Investigadores 2
Mapa de Investigadores 2Mapa de Investigadores 2
Mapa de Investigadores 2
 
оршил
оршилоршил
оршил
 
Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...
Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...
Madres plaza mayo_dipticoa5 (1) (1) CULTURAS EN DIALOGO MUSEOLOXIA SOCIAL RED...
 
Presentación infancia Hospitalización y Derechos
Presentación infancia Hospitalización y DerechosPresentación infancia Hospitalización y Derechos
Presentación infancia Hospitalización y Derechos
 
Objetivos (fines)
Objetivos (fines)Objetivos (fines)
Objetivos (fines)
 
Cspanish
CspanishCspanish
Cspanish
 
Manejo de tablas.
Manejo de tablas.Manejo de tablas.
Manejo de tablas.
 
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...
Gioventu' e Maturita' della medicina generale generazioni a confronto (Massim...
 
Revistas
RevistasRevistas
Revistas
 
Anexos
AnexosAnexos
Anexos
 
Derechos de autor
Derechos de autorDerechos de autor
Derechos de autor
 
Accesibilidad Laura
Accesibilidad LauraAccesibilidad Laura
Accesibilidad Laura
 
Derechos de autor
Derechos de autorDerechos de autor
Derechos de autor
 
recursos para el blog
recursos para el blogrecursos para el blog
recursos para el blog
 
Mapa conceptual blogs & wikis
Mapa conceptual blogs & wikisMapa conceptual blogs & wikis
Mapa conceptual blogs & wikis
 
Ejercicio 2
Ejercicio 2Ejercicio 2
Ejercicio 2
 
Act1.uni2.valeria.soto.mendoza
Act1.uni2.valeria.soto.mendozaAct1.uni2.valeria.soto.mendoza
Act1.uni2.valeria.soto.mendoza
 
Publicidad en internet
Publicidad en internetPublicidad en internet
Publicidad en internet
 
Catalogo productos y servicios
Catalogo productos y serviciosCatalogo productos y servicios
Catalogo productos y servicios
 
Ejercicios unidad 10
Ejercicios unidad 10Ejercicios unidad 10
Ejercicios unidad 10
 

Semelhante a Búsqueda del framework ideal de framework

Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNextJulito Avellaneda
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoRaul Fraile
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
Mi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App EngineMi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App Engineykro
 
Symfony2 Introducción
Symfony2 IntroducciónSymfony2 Introducción
Symfony2 Introducciónstrate
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Andrés Iturralde
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php AdwaAndres Karp
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaGrupo PHP Argentina
 
Framework Laravel
Framework LaravelFramework Laravel
Framework LaravelRafael Lobo
 
AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)Mayer Horna
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 

Semelhante a Búsqueda del framework ideal de framework (20)

Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Mi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App EngineMi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App Engine
 
Symfony2 Introducción
Symfony2 IntroducciónSymfony2 Introducción
Symfony2 Introducción
 
Manual de php
Manual de phpManual de php
Manual de php
 
Manual de php
Manual de phpManual de php
Manual de php
 
sesion_01-JAVA.pdf
sesion_01-JAVA.pdfsesion_01-JAVA.pdf
sesion_01-JAVA.pdf
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Manual php
Manual phpManual php
Manual php
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
 
Primera sesion
Primera sesionPrimera sesion
Primera sesion
 
Clase2
Clase2Clase2
Clase2
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piña
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Dev c++
Dev c++Dev c++
Dev c++
 
AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 

Último

Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Búsqueda del framework ideal de framework

  • 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? D R A V C D T M
  • 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) D A
  • 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? D A C
  • 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 = D A C
  • 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 D A C ¿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) D A C
  • 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 D A C ¿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 D A C
  • 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. D V
  • 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? D V
  • 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 D D
  • 16. ● Tiempo de ejecución ● Internas ● Externas (Apache JMeter) ● Memoria utilizada ● Internas ¿Qué pruebas se realizaron? R T M
  • 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? R T M
  • 18. ● 3 módulos: ● Principal: mínimo procesamiento ● Módulo albums: búsqueda en una sola tabla e impresión paginada ● Módulo songs: búsqueda en dos tablas relacionadas e impresión paginada ¿De qué se trata la aplicación? R T M
  • 19. ¿Podemos medir tiempo de proceso? R T 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 (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? R T
  • 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 R T
  • 22. Home Albums Songs Total 0 50 100 150 200 250 Tiempo de respuesta cf sf zf ms R T ¿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 R T ¿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 R T ¿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 R T ¿Qué obtuvimos en las pruebas externas? (10 usuario)
  • 26. ¿Cuánto consume mi aplicación? R M 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 (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 R M
  • 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