symfony-community: introducción a arquitecturas de aplicaciones web y frameworks

41
Disertante: Introducción a arquitecturas de aplicaciones web y frameworks Prácticas, patrones y factores para la elección del framework

Upload: excedesoft

Post on 12-Jun-2015

3.055 views

Category:

Technology


1 download

DESCRIPTION

Prácticas, patrones y factores para la elección del framework PHP. Material del seminario dictado por la Comunidad-Symfony, mas detalle en http://www.symfony-community.com/introduccion-a-arquitectura-web

TRANSCRIPT

Page 1: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Introducción a arquitecturas de aplicaciones web y

frameworksPrácticas, patrones y factores para la

elección del framework

Page 2: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

symfony-community.com

Colaboradores:• Excedesoft S.A.• Lic. Fabian Castillo• Ing. Emiliano Viada

presentacióncomunidad

Destinatarios:• Estudiantes• Profesionales• Empresas - Instituciones

¿Quiénes somos?

Objetivo del seminario:

Proveer al estudiante, profesional o empresa con los conceptos necesarios

para poder elegir un framework.

Page 3: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Contenido(temario)

• Concepto de aplicación web• Evolución de las aplicaciones web• Aplicaciones cada vez mas complejas.

• Concepto de arquitectura• El rol del arquitecto.• Cuestiones

• Concepto de framework• Que es un framework? • Ventajas y desventajas de utilización de un framework.

• Patrones arquitecturales• Diferencia entre patrones computacionales y arquitecturales.• Patrones arquitecturales mas populares

• Factores comerciales-técnicos para la elección del framework.• Técnico y de gestión: arquitecturales, lenguajes, frameworks, prácticas, estándares,

escalabilidad, soporte• Institución o empresa: costos, portabilidad, curva de aprendizaje, • Comercialización: puntos de venta, ventajas competitivas.

• Demostración de conceptos en práctica..

Page 4: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Concepto Aplicación Web

Usuario

PC - Browser

Internet

Servidor

Solicita Pagina

RequerimientoURL

HTML, CSS, JS,Imágenes

RenderizaContenido

WebServer - Sesión

- Negocio- BD- Recursos

Cliente Medio - HTTP

Arquitectura Cliente - Servidor

Aplicación

Una aplicación web es un programa que se ejecuta sobre la plataforma web. Es decir, el usuario maneja dicho programa desde el explorador, que por medio dela red de internet (o intranet) se comunica con el servidor para el procesamiento

del requerimiento (tarea o función).

Page 5: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Evolución de aplicaciones

PC - Browser

Internet

Solicita Pagina

Requerimientos

HTML, CSS,Imágenes

RenderizaContenido

WebServer

MúltiplesAplicaciones

Móviles

PartnerServer

App InterfaceRica – JS Driven

B2B ContentJson, SOAP, XMLs

Nuevos tipos de aplicaciones:

• Web• Móviles• Servicios Web • APIs

Core Componets

Negocio

App App

Page 6: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Nuevos tipos de aplicacionesPC - Browser

WebServer

MúltiplesAplicaciones

Móviles

B2B-

B2C

Recursos Limitados (3G, hard..)App Interface Rica

Javascript - Ajax drivenUtilización de HTML5 – CSS3

Responsive designBackend – Rest calls – Busines layer

Interface para el desarrollador:Librerías que permiten la integración de

ambas aplicaciones.Funciona en combinación de web

services.

Core Componets

Negocio

App

App

Web Services

APIs

Características

Sin limitaciones.Mayor calidad gráfica,mas ancho de banda.

En su mayoría Backend Development.

RPC, Rest Calls (json, xml), SoapMecanismo de Autentificación.

App

Arquitectura

Page 7: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Tendencias. Más complejidad.

• Interfaces ricas, animadas, Interactivas

• Más diseño de la experiencia.

• Mas simplicidad.

• B2B o B2C• Alianzas Estratégicas.• Redes sociales• APIs

• Soporte múltiples dispositivos

• Diferentes formatos y tamaños de display.

• Diferentes capacidades.

• Internacionalización• Regionalización• Geo localización• Distribución

Global Portables

Experienciadel usuario

Integración estratégica

Arq

uit

ectu

ra

Page 8: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

La importancia de la arquitectura

Una arquitectura es el conjunto de decisiones significativas sobre la

organización de la aplicación web que define los principios que guían el

desarrollo, los componentes principales del sistema, sus responsabilidades y la

forma en que se interrelacionan.

Page 9: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

¿ Quién, Cuándo, y Cómo se gestionan estas complejidades arquitecturales?

Negocio

Estructura código

Acceso a datos

Escalabilidad

Performace

Integración con partnersAdaptable a los cambios

Calidad

Múltiples presentaciones

Cuál es nuestro alcance en términos técnicos?

Reutilización

Costos

CUANDO = YA !!• Análisis requerimientos

funcionales, operativos, etc.• Priorización, proyección features

y capacidades del sistema.

QUIEN = Arquitecto

COMO = Framework

• Si el framework es maduro, muchas de estas cuestiones ya vienen incorporadas y probadas.

• Queda por investigar los requerimientos tecnologicos nuevos y ponderar el riesgo.

Page 10: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

¿Qué es un framework?• Librerías, componentes y herramientas• Provee dirección y límites.• Proveer una arquitectura madura, experiencias y

conocimiento.¿ Para qué?• Para la construcción de aplicaciones complejas• De manera rápida, escalable y mantenible.• Con calidad, testeables, robustas.

Page 11: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Features de un framework webArquitecturalmente:• Application controller, Filter• Enrutamiento• MVC• ORM

Componentes:• App.Setting• Forms• Web-services• Mailing• I18n y l10n

• Ajax Integration• Tasks • Generate-admin• Unit-testing

Consideraciones:

1. Licenciamiento

2. Escalable

3. Soportado (duración?)

4. Seguro

5. Estable

6. Documentado

Page 12: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Web Design Patterns & Best practices.Patrones Arquitecturales y Frameworks

Web Design Patterns

(Patrones/Framework)

Page 13: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

¿Qué es un Patrón?Patterns

Un patrón es una solución general reutilizable para un problema que se repiteuna y otra vez dentro de un contexto dado.

- No es absoluto (sino conceptual)- Es un conjunto de buenas prácticas.

Estructura de un Patrón• Nombre. Es crucial, debe ser realmente descriptivo.• Propósito.• Esbozo del patrón. Generalmente, no siempre, un diagrama UML.

Computacionales • Resuelven problemas

algorítmicos

Arquitecturales• estructura – organización• performance de la aplicación• escalabilidad• alta disponibilidad, etc.

Tipos

Page 14: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Patrones Arquitecturales

Patterns

Los patrones arquitecturales son bien definidos en 3 grandes capas dentro de la arquitectura de software:

- Presentation layer: - Presentación de información - Gestión de interacciones.- Captura y validación entradas.

- Domain layer: - Gestión de negocio, reglas, transacciones

- Data source layer:- Gestión de la información, persistencia y

recuperación de los datos. - base de datos- messaging,- services, etc.

Domain Logic Pattern

Data source Patterns

Web Presentation Patterns

Distribution Patterns

Session State Patterns

Concurrency Patterns

Base Patterns

Page 15: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Patrones de Arquitectura más populares

Patterns

- Presentation Patterns:- Front Controller- MVC (Model-View-Controller)- Template View- Multi-step View

- Domain Logic Patterns:- Transaction script- Table Module- Domain Model

- Data Source Patterns:- Object-Relational Mapping (ORM)- Object-Document Mapping (ODM)

Page 16: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Application Controller

Presentation

Patterns

Usuario

http://www.myblog.com/• index.php?accion=contacto• index.php?accion=post-recientes• Index.php?accion=comentar-post

ApacheServer

result

Browser App. Controllerindex.php

contacto.php

request

URL

.htaccess

post-reciente.php

comentar.php

intancia

Propósito:- Única puerta de entrada

- Gestión de requests.- Enrutamiento de acción.- física del código de la URL.

Variantes:- Front-controller, Page-Controller

Page 17: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Ejemplo PHP

Presentation

Patterns

Consideraciones:

- Utilización de .htaccess para forzar la redirección al index.php

- Los archivos .php por si mismos no deberian ejecutar ninguna lógica.

Page 18: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Model-View-Controller

Presentation

Patterns

Propósito:- Organiza la aplicación en tres capas físicas-lógicas.- La primera gestionará los requerimientos (controlador)- Una capa de negocio (modelo)- Y la ultima de presentación (vista)

Model View

ControllerA demanda

Datos

REQUESThttp – cli, et

RESPONSEHtml, rss, xmlJson, etc

Browser

Page 19: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Model-View-ControllerPresentation

Patterns

Browser AC Controller Model View

Invoca acciónInvoca método

Prepara datos

Renderiza(datos)

HTML

request

GET - POST

Page 20: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Model View Controller

Presentation

Patterns

Usuario

ApacheServer

result

Browser App. Controller

Controller

Model

View

request

request response

• Controller = App. Controller + Actions• Model = Clases de negocio + Persistencia• View = Presentación

Page 21: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Model View Controller

Presentation

Patterns

Consiste de 3 niveles:

- El Modelo representa la información con la cuál la aplicación opera, es decir, su lógica de negocio.

- La Vista se encarga de presentar la información del Modelo dentro de una página web para la interacción con el usuario.

- El Controlador responde a las acciones del usuario y lleva a cabo los cambios en el Modelo o en la Vista según sea necesario.

El patrón MVC separa la lógica de negocio (model) y la presentación (view),dándonos una gran mantenabilidad de la aplicación. Por ejemplo, si una aplicaciónnecesita presentar la data en diferentes vistas (standard browsers, mobile, consola),solo se necesita una nueva vista manteniendo el controlador y el modelo.El controlador ayuda a ocultar el protocolo usado (HTTP, Consola, Emailing, etc)del modelo y de la vista; y el Modelo abstrae la lógica de negocio.

Page 22: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Propósito:- Lograr URL amigables- Independizar la ubicación

física del código de la URL.- Flexibilidad – mantenabilidad de rutas.

URL RoutingPresentation

Patterns

Usuario

ApacheServer

result

Browser

ActionController

Model

View

request

request

responseRouting

App. Controller

Mapear un requerimiento (URL) con una acción. (Caso de Uso)

Page 23: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Antes

Frameworks

Pensemos en esta url:http://www.myblog.com/publico/abms/post.php?id=123456

Desventajas:- Revelamos parte de la arquitectura de la aplicación.- No es amigablemente legible.- Si una url debe de ser cambiada (porque el nombre del script cambió), cada link que apunta a dicha url debe de ser modificado.

Page 24: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Después

Frameworks

URL amigable:http://www.myblog.com/post/symfony-framework

Beneficios:- Las urls son más amigables y fácil de recordar.- Podemos cambiar el formato de la url independientemente.- Si cambiamos el nombre de un script, podemos mantener la misma url.

Page 25: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Multi-step ViewPresentation

Patterns

Template + View Logic + Layout = Presentación

header

template

header

template

footer

+ =

footer

layout layout

templatetemplate

+ =

Contenido Estático

Contenido Dinámico

Contenido-Vista Final

Resulta de la acción especifica

- Propone organizar la vista- Separa el contenido resultante de una acción especifica del contenido

estático

Page 26: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Propósito:- Separación- Mantenabilidad – orden. - Reutilización.

Multi-Step ViewPresentation

Patterns

Usuario

ApacheServer

result

Browser

ActionController

Model

Template

request

request

responseRouting

App. Controller

Integración con MVC.

Layout

Page 27: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Transaction Script

Domain

Patterns

Usuario

ApacheServer

result

Browser

subscripcion.phprequest

URL

post-reciente.php

comentar.php

Propósito:- Negocio se piensa en términos de

transacciones- Colección de scripts- Cada script se corresponde con la petición

del usuario

<> Transaction script

<< Transaction script

>> Transaction script

Page 28: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Domain Model

Domain

Patterns

Propósito:- Negocio se piensa en términos de entidades de negocio y sus

relaciones- Cada entidad maneja su propia lógica de negocio.- Orientación a objetos.

Usuario Post

Comment

1 *1

*

1

*

Page 29: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Domain ModelDomain

Patterns

Page 30: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Persistencia

Propósito:- Simplicidad, escritura código en

términos de negocio.- Independencia de plataforma

Implementaciones:- Java: Hibernate Ebean - PHP: Doctrine, Propel , PdoMap

Object Relat. MappingPresentation

Patterns

Usuario

ApacheServer

result

Browser

ActionController

Template

request

request

responseRouting

App. Controller

Capa de abstracción. Permite mapear las clases de dominio con la base de datos relacional.

Layout

Mapping

Domain Model

MySql,Oracle, etc

Page 31: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

ORM - DoctrinePresentation

Patterns

Conexión

Utilización

Mapeo

Page 32: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

ORM

Data Source

Patterns

El patrón Object-Relational Mapping nos permite acceder a base de datosrelacionales en una manera orientada a objetos, proveyendo una interfaz que nospermite traducir lógica de los objetos en lógica relacional y viceversa.

Un ORM nos facilita un conjunto de objetos que nos dan acceso a la dataalmacenada en una base de datos, manteniendo las reglas del negocio en ellos.

Uno de los mayores beneficios al utilizar un ORM es la capa de abstracción dedatos, la cual previene utilizar una sintáxis específica a un motor de base de datosdado. Automáticamente, traduce las acciones realizadas por objetos a la queryoptimizada para la base de datos.

La capa de abstracción encapsula la lógica de la data. El resto de la aplicación nonecesita saber de las consultas SQL que se llevan a cabo.

Page 33: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Routing

Propósito:- Forzar la ejecución y orden de

tareas comunes a cada request.- Extensión del funcionalidad

común.

Implementaciones:- Chain or responsibility- Security, Routing, Loging,

Caching, Rendering

FilterPresentation

Patterns

Usuario

ApacheServer

result

Browser

ActionController

Template

request

request

response

Filtros

App. Controller

Ejecución de múltiples tareas, previo y post la ejecución de la acción.

Layout

Model

Page 34: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

FiltrosFrameworks

Los filtros implementan el patrón de diseño Chain of Responsability, el cual le permite a un objeto enviar una petición sin conocer el objeto que lo recibirá y manejará. La petición es enviada desde un objeto a otro, formando ambos partes de la cadena, en la cuál cada objeto de esta cadena puede manejar la petición, enviarla a otro objeto o hacer ambas.

Routing

ActionController

Template

request

response

Filtros

App. Controller

Layout

Model

SecurityCatching

LoggingCustom

Page 35: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Factores comerciales y técnicosVentajas competitivas

ComercialY técnico

Page 36: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Ventajas comerciales

Puntos de venta

• Mantenible y escalable• Independencia del equipo de

desarrollo. • Codificación bajo estándares y

mejores practicas de la industria.

• Soporte

Gestión y producción

• Paradigma de convención• Escalar un equipo• Minimiza la curva de

aprendizaje.• Setup del entorno.

• Productividad• Scarfolding – Generación de

código• Menos errores• Menos costos

• Calidad

Page 37: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Bibliografíay referencias.

BibliografíaY referencias

Page 38: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Bibliografía

Libros: URL Referencia:

• Patterns of Enterprise Application Architecture. Martin Fowler. ISBN 0-321-12742-0.

• Pattern-Oriented Software Architecture.

Wiley, 2000.

• http://martinfowler.com/eaaCatalog/• http://www.symfony-project.org• http://www.phpframeworks.com/

Page 39: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Antes de finalizar.

Gracias

Page 40: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Colaboración Muchas Gracias

www.symfony-community.com

Page 41: Symfony-Community: Introducción a arquitecturas de aplicaciones web y frameworks

Disertante:

Conclusion?Which will be your primary focus?

© your company name. All rights reserved.

Title of your presentation