Single Page Applications

Diego Cardozo
Diego CardozoPrincipal Performance Engineer at Oracle
Single	Page
Applications
Diego	Cardozo
github.com/diegocard/SPA-Presentation
Temas
1.	 Motivación
2.	 Introducción
3.	 Ejemplos
4.	 Arquitectura
5.	 Ventajas	y	desventajas
6.	 Herramientas
7.	 Demo
Motivación	(1)
Uno	de	los	factores	principales	para	la	experiencia
de	usuario	es	el	tiempo	de	carga.
Para	mejorarlo,	conocemos	varias	técnicas:
Minimizar	scripts	y	CSS
Combinar	imágenes	en	un	único	sprite
Retardar	la	ejecución	de	JavaScript
Manejo	especial	de	archivos	estáticos	(CDN)
Caché	de	recursos
Motivación	(2)
Sin	embargo,	aún	con	caché	el	browser	debe:
Volver	a	parsear	y	ejecutar	el	código	CSS	y	JavaScript.
Descargar	y	parsear	todo	el	código	HTML.
Aún	cuando	sólo	haya	cambiado	un	pequeña	parte.
Reconstruir	el	árbol	DOM.
Renderizar	la	interfaz.
El	usuario	ve	como	la	página	se	construye	mientras	espera.
Motivación	(3)
En	resumen,	SPA	surge	como	una	respuesta	a	las	preguntas:
¿Como	podemos	lograr	un	manejo	mas	eficiente?
¿Podemos	cargar	solamente	lo	nuevo	o	necesario?
¿Como	podemos	mejorar	la	experiencia	del	usuario?
Introducción	(1)
¿Que	es	una	SPA?
Es	un	nuevo	enfoque	para	construir	aplicaciones	web.
Todo	el	código	se	carga	en	la	primera	llamada	o
posteriormente	de	forma	dinámica,	sin	recargar	la	página.
La	navegación	se	resuelve	en	el	cliente.
Las	llamadas	al	servidor	se	hacen	de	forma	asincrónica.
La	interfaz	se	construye	en	el	cliente.
Introducción	(2)
Que	NO	es	una	SPA
Unir	todas	las	páginas	del	sitio	en	una	sola	y	cargarla
estáticamente.
Blanco	o	negro,	existen	enfoques	híbridos.
Una	bala	de	plata:	puede	no	servir	para	todos	los	casos	o
proyectos.
Introducción	(3)
¿Que	puede	hacer	una	SPA?
Cambios	de	URL	y	navegación	hacia	atrás	y	adelante.
Manipulación	de	DOM	del	lado	del	cliente.
Esperar	a	que	la	vista	se	cargue	antes	de	mostrarla.
Almacenar	páginas	ya	cargadas	en	el	cliente.
Ejemplos
GMail
Esta	presentación
Stashy
Nogginator
Arquitectura
Ventajas	y	desventajas	(1)
Ventajas
Interfaz	mas	rápida.
Mantenimiento	más	sencillo.
Distribución	de	carga.
Comienzo	del	desarrollo	más	ágil.
La	interfaz	es	simplemente	otro	cliente.
Se	presta	muy	bien	para	testing.
Perfecto	para	combinar	con	aplicaciones	móviles.
Ventajas	y	desventajas	(2)
Desventajas
La	primera	carga	puede	ser	lenta.
SEO	se	vuelve	complejo.
Require	JavaScript	habilitado.
Requiere	conocimiento	adicional	de	JavaScript.
Rompe	con	las	convenciones	de	analytics,	ads	y	widgets.
Ventajas	y	desventajas	(3)
Otros	aspectos
Trasladamos	la	lógica	de	negocio	no	crítica	al	cliente.
Antes	nuestro	código	era	90%	C#/VB	y	10%	JS.
Ahora	para	a	ser	a	50	y	50.
No	es	una	ventaja	o	desventaja,	pero	vamos	a	precisar	un
juego	distinto	de	herramientas	para	mantener	buenas
prácticas.
Herramientas	(1)
Desarrollo	del	cliente
Herramientas	(2)
Knockout.js
Knockout	creado	por	Steve	Anderson
PM	de	ASP.NET	en	Microsoft.
Utiliza	MVVM,	patrón	de	diseño	creado	por	John	Smith
MVP	en	Microsoft	por	su	trabajo	en	WPF.
Se	puede	utilizar	aún	cuando	no	desarrollamos	SPA.
Incluído	por	defecto	junto	con	los	templates	de	MVC4.
Herramientas	(3)
Desarrollo	del	servidor
En	MVC,	nuestros	controladores	pasan	a	ser	ApiControllers
para	definir	un	API	RESTful.
Implementamos	una	sola	vista	(layout).
No	vamos	a	utilizar	Razor	para	renderizar	las	vistas.
Vamos	a	ver	un	template	para	Visual	Studio	que	trae	un
proyecto	pre-configurado	para	SPA	(Hot	Towel	SPA).
Demo	(1)
Partimos	del	template	Hot	Towel	SPA	de	John	Papa
Vamos	a	ver	los	principales	componenetes	de	Durandal
Ver	cada	componente	a	fondo	llevaría	demasiado.
En	el	servidor	recorremos	el	API	RESTful	
Expone	los	datos	de	los	usuarios.
Agregamos	una	funcionalidad	(sesiones).
Recorremos	el	código	del	cliente.
Analizamos	las	librerías	mas	importantes.
Demogithub.com/diegocard/SPA-Demo
Recursos
learn.knockout.com
singlepageappbook.com
todomvc.com
johnpapa.net
slideshare.net/dcslides/spa-25806613
Para	saber	más
¿Preguntas?
1 of 21

Recommended

Firewall by
FirewallFirewall
Firewallnachosport
9.4K views13 slides
Programacion web by
Programacion webProgramacion web
Programacion webAbraham Morales
2.4K views13 slides
Metodologias web by
Metodologias webMetodologias web
Metodologias webGabriel Mondragón
2.4K views18 slides
Proyecto de compiladores Sentencia While con Java CUP y JFLEX by
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXIvan Luis Jimenez
2K views13 slides
Gestion de procesos Android by
Gestion de procesos AndroidGestion de procesos Android
Gestion de procesos AndroidCarlos Francisco Ojeda Ureña
7.8K views9 slides
Definición y función de lenguaje java script by
Definición y  función de lenguaje java scriptDefinición y  función de lenguaje java script
Definición y función de lenguaje java scriptAndres Rodriguez
529 views9 slides

More Related Content

What's hot

Desarrollo basado en patrones by
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patronesMarvin Zumbado
4.8K views32 slides
Servidor web by
Servidor webServidor web
Servidor webjosegregoriob
54.2K views30 slides
1-Unidad 1. Arquitectura de Diseño by
1-Unidad 1. Arquitectura de Diseño1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de DiseñoLuis Fernando Aguas Bucheli
944 views26 slides
Sistema distribuido by
Sistema distribuidoSistema distribuido
Sistema distribuidoBonita Vm
1.7K views11 slides
Proceso de diseño by
Proceso de diseñoProceso de diseño
Proceso de diseñoJuan Pablo Bustos Thames
10.9K views30 slides
Sistemas operativos threads by
Sistemas operativos   threadsSistemas operativos   threads
Sistemas operativos threadsLiNo Candelario
2.1K views17 slides

What's hot(20)

Desarrollo basado en patrones by Marvin Zumbado
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
Marvin Zumbado4.8K views
Sistema distribuido by Bonita Vm
Sistema distribuidoSistema distribuido
Sistema distribuido
Bonita Vm1.7K views
Pruebas de aplicaciones web by paulinaaillon
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
paulinaaillon21.7K views
Routers cisco. Listas de control de acceso by Josu Orbe
Routers cisco. Listas de control de accesoRouters cisco. Listas de control de acceso
Routers cisco. Listas de control de acceso
Josu Orbe3.8K views
Novedades Windows Server 2016 TP5 by Ivan Martinez
Novedades Windows Server 2016 TP5Novedades Windows Server 2016 TP5
Novedades Windows Server 2016 TP5
Ivan Martinez1.4K views
Herramientas de Desarrollo de Software by Te Amo Gabriel
Herramientas de Desarrollo de SoftwareHerramientas de Desarrollo de Software
Herramientas de Desarrollo de Software
Te Amo Gabriel8.4K views
Manejo de los procesos en los sistemas operativos by Carolina Cols
Manejo de los procesos en los sistemas operativosManejo de los procesos en los sistemas operativos
Manejo de los procesos en los sistemas operativos
Carolina Cols18.7K views
Web container and Apache Tomcat by Auwal Amshi
Web container and Apache TomcatWeb container and Apache Tomcat
Web container and Apache Tomcat
Auwal Amshi1.5K views

Similar to Single Page Applications

Optimizar performance sin morir en el intento by
Optimizar performance sin morir en el intentoOptimizar performance sin morir en el intento
Optimizar performance sin morir en el intentoDiego Cardozo
386 views16 slides
Puntos clave para optimizar Wordpress by Raiola Networks by
Puntos clave para optimizar Wordpress by Raiola NetworksPuntos clave para optimizar Wordpress by Raiola Networks
Puntos clave para optimizar Wordpress by Raiola NetworksRaiola Networks
11.5K views27 slides
Code camp 2011 - Creando aplicaciones a la velocidad de la luz by
Code camp 2011 - Creando aplicaciones a la velocidad de la luzCode camp 2011 - Creando aplicaciones a la velocidad de la luz
Code camp 2011 - Creando aplicaciones a la velocidad de la luzDiego Ferreyra
291 views23 slides
5-Unidad 2: Diseños de Vista-2.2 Para Web by
5-Unidad 2: Diseños de Vista-2.2 Para Web5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para WebLuis Fernando Aguas Bucheli
286 views29 slides
Performance en Drupal 7 by
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7Karim Boudjema Schombourg
3.6K views37 slides
High performance Web Sites by
High performance Web SitesHigh performance Web Sites
High performance Web SitesopenfinanceDev
806 views65 slides

Similar to Single Page Applications(20)

Optimizar performance sin morir en el intento by Diego Cardozo
Optimizar performance sin morir en el intentoOptimizar performance sin morir en el intento
Optimizar performance sin morir en el intento
Diego Cardozo386 views
Puntos clave para optimizar Wordpress by Raiola Networks by Raiola Networks
Puntos clave para optimizar Wordpress by Raiola NetworksPuntos clave para optimizar Wordpress by Raiola Networks
Puntos clave para optimizar Wordpress by Raiola Networks
Raiola Networks11.5K views
Code camp 2011 - Creando aplicaciones a la velocidad de la luz by Diego Ferreyra
Code camp 2011 - Creando aplicaciones a la velocidad de la luzCode camp 2011 - Creando aplicaciones a la velocidad de la luz
Code camp 2011 - Creando aplicaciones a la velocidad de la luz
Diego Ferreyra291 views
Programación Reactiva, Javascript Isomorfo y Meteorjs ! by ouuyeah
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !
ouuyeah5.1K views
Proyectos escalables con Drupal by Pablo Cerda
Proyectos escalables con DrupalProyectos escalables con Drupal
Proyectos escalables con Drupal
Pablo Cerda753 views
Programacion Basica by Yoconditap
Programacion Basica Programacion Basica
Programacion Basica
Yoconditap246 views
Presentación de programacion by lajokito
Presentación  de programacionPresentación  de programacion
Presentación de programacion
lajokito231 views
UDA-Desarrollo RUP. Consejos y buenas prácticas by Ander Martinez
UDA-Desarrollo RUP. Consejos y buenas prácticasUDA-Desarrollo RUP. Consejos y buenas prácticas
UDA-Desarrollo RUP. Consejos y buenas prácticas
Ander Martinez1.9K views
Instalacion adobe dream weaver by Luis Viteri
Instalacion adobe dream weaverInstalacion adobe dream weaver
Instalacion adobe dream weaver
Luis Viteri204 views
Responsive Web Design by Juan Morales
Responsive Web DesignResponsive Web Design
Responsive Web Design
Juan Morales991 views
Jsf Java Server Faces by cok12v
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
cok12v647 views

More from Diego Cardozo

El proximo billon de usuarios by
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuariosDiego Cardozo
143 views19 slides
The next billion users by
The next billion usersThe next billion users
The next billion usersDiego Cardozo
237 views19 slides
Troubleshooting Ecommerce Performance by
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce PerformanceDiego Cardozo
174 views72 slides
Cranking It Up - SuiteWorld 2017 by
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017Diego Cardozo
149 views72 slides
Speed Thrills - Suiteworld 2016 by
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016Diego Cardozo
117 views43 slides
Performance in the cloud by
Performance in the cloudPerformance in the cloud
Performance in the cloudDiego Cardozo
302 views12 slides

More from Diego Cardozo(15)

El proximo billon de usuarios by Diego Cardozo
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuarios
Diego Cardozo143 views
Troubleshooting Ecommerce Performance by Diego Cardozo
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce Performance
Diego Cardozo174 views
Cranking It Up - SuiteWorld 2017 by Diego Cardozo
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017
Diego Cardozo149 views
Speed Thrills - Suiteworld 2016 by Diego Cardozo
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016
Diego Cardozo117 views
Performance in the cloud by Diego Cardozo
Performance in the cloudPerformance in the cloud
Performance in the cloud
Diego Cardozo302 views
Cómo testear performance sin morir en el intento by Diego Cardozo
Cómo testear performance sin morir en el intentoCómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intento
Diego Cardozo409 views
Optimize performance and not die trying by Diego Cardozo
Optimize performance and not die tryingOptimize performance and not die trying
Optimize performance and not die trying
Diego Cardozo1.2K views
How to test performance and not die trying by Diego Cardozo
How to test performance and not die tryingHow to test performance and not die trying
How to test performance and not die trying
Diego Cardozo721 views
Testeando performance sin morir en el intento by Diego Cardozo
Testeando performance sin morir en el intentoTesteando performance sin morir en el intento
Testeando performance sin morir en el intento
Diego Cardozo458 views
Organización de aplicaciones web con Backbone.js by Diego Cardozo
Organización de aplicaciones web con Backbone.jsOrganización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.js
Diego Cardozo1.5K views
Structuring web applications with Backbone.js by Diego Cardozo
Structuring web applications with Backbone.jsStructuring web applications with Backbone.js
Structuring web applications with Backbone.js
Diego Cardozo1.2K views
Component Based Software Development by Diego Cardozo
Component Based Software DevelopmentComponent Based Software Development
Component Based Software Development
Diego Cardozo2.9K views
Desarrollo de Software Basado en Componentes by Diego Cardozo
Desarrollo de Software Basado en ComponentesDesarrollo de Software Basado en Componentes
Desarrollo de Software Basado en Componentes
Diego Cardozo1.9K views
Single page applications by Diego Cardozo
Single page applicationsSingle page applications
Single page applications
Diego Cardozo2.4K views

Recently uploaded

Virtual Box by
Virtual BoxVirtual Box
Virtual Boxanayandun2023
6 views6 slides
trabajotecnologiatemperatura-231005005635-53760f2d.pdf by
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdfSamuelRamirez83524
5 views2 slides
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx by
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxDEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxKarenlisethGuioAlbin
6 views8 slides
Operations & Data Graph by
Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
24 views25 slides
Plone 6 Themes by
Plone 6 ThemesPlone 6 Themes
Plone 6 ThemesLeonardo J. Caballero G.
7 views49 slides
Kubernetes: Más Allá de la Orquestación de Contenedores by
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de ContenedoresOpenDireito
8 views12 slides

Recently uploaded(7)

trabajotecnologiatemperatura-231005005635-53760f2d.pdf by SamuelRamirez83524
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdf
Operations & Data Graph by Neo4j
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
Neo4j24 views
Kubernetes: Más Allá de la Orquestación de Contenedores by OpenDireito
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de Contenedores
OpenDireito8 views
Aws Community Day Guatemala Criptografia con AWS KMS by Mario IC
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
Mario IC25 views

Single Page Applications