SlideShare una empresa de Scribd logo
1 de 33
Link:www.slideshare.com 
Alumnos: Antonio Álvarez de la rocha 
Andrés Leonardo Guerra Portillo 
Fecha de entrega: 3/sep/2014
RESULTADOS
Web Workers - Qué son y para que 
sirven 
Con la llegada de HTML5 llegan nuevas 
funcionalidades a los navegadores web, es el 
caso del Storage (almacenamiento en el 
cliente), Geolocation (geolocalización) o los 
Web Workers (ejecución de scripts en 
procesos en segundo plano).
 Los Workers no son más que una API que permite a los 
desarrolladores web ejecutar procesos en segundo 
plano, son totalmente independientemente a los 
procesos de la interfaz de usuario. 
Esto permite que las secuencias de comandos de larga 
duración no se vean interrumpidas por secuencias de 
comandos que responden a clicks u otras interacciones 
por parte del usuario. 
Los Workers son relativamente gruesos y resistentes, y 
no están destinados a ser utilizados en grandes 
cantidades.
¿Qué es JavaScript? 
 JavaScript es un entorno de subproceso único, es decir, que 
no se pueden ejecutar varias secuencias de comandos al 
mismo tiempo 
 Por ejemplo, imagina un sitio que necesite gestionar eventos 
de interfaz de usuario, solicitar y procesar grandes 
cantidades de datos de API y manipular los DOM. Algo muy 
común, ¿verdad? Desafortunadamente, todo esto no puede 
realizarse de forma simultánea debido a las limitaciones en 
el tiempo de ejecución de los navegadores de JavaScript. La 
ejecución de secuencias de comandos se realiza en un único 
subproceso.
 Los desarrolladores imitan la "simultaneidad" utilizando 
técnicas como setTimeout(), setInterval() y 
XMLHttpRequest, así como gestores de eventos. Sí, todas 
estas funciones se ejecutan de forma asíncrona; sin 
embargo, que no se bloqueen unas a otras no significa 
necesariamente que tengan lugar de forma simultánea. Los 
eventos asíncronos se procesan después de haber generado 
la secuencia de comandos que se esté ejecutando en ese 
momento. La buena noticia es que HTML5 nos ofrece algo 
mejor que este tipo de trucos de hacker.
Compatibilidad de los navegadores 
 Los Web Workers acaban de aparecer en la versión 
preliminar de IE10 (IE10 Platform Preview). 
 También están soportados en Firefox (desde la versión 
3.6) 
 Safari (desde la 4.0) 
 Chrome 
 Opera 11 
 Las versiones de móviles de estos navegadores no los 
soportan.
Introducción a los Web Workers: 
implementar subprocesos en 
JavaScript 
 Los Web Workers te permiten realizar acciones como activar 
secuencias de comandos con tiempos de ejecución largos 
para gestionar tareas intensivas de computación, pero sin 
bloquear la interfaz de usuario u otras secuencias de 
comandos para gestionar las interacciones del usuario. 
 Nos ayudarán a acabar con esos molestos cuadros de diálogo 
que informan de que la secuencia de comandos no responde.
 Cuadro de diálogo habitual para informar de que la 
secuencia de comandos no responde 
 Los Web Workers utilizan una transferencia de mensajes 
similar a los subprocesos para alcanzar el paralelismo. Son 
perfectos para mantener tu interfaz actualizada, eficiente y 
receptiva para los usuarios.
Crear un Worker 
 Los Web Workers se ejecutan en un subproceso aislado. 
Como resultado, es necesario que el código que ejecutan se 
encuentre en un archivo independiente. 
 lo primero que tienes que hacer es crear un nuevo objeto 
Worker en tu página principal. 
 El constructor toma el nombre de la secuencia de comandos 
del Worker. 
 var worker = new Worker('task.js');
 Si el archivo especificado existe, el navegador generará un 
nuevo subproceso de Worker que lo descargará de forma 
asíncrona. 
 El Worker no empezará hasta que el archivo se haya 
descargado completamente y se haya ejecutado. 
 Si la ruta a tu Worker devuelve un error 404, el Worker 
fallará automáticamente. 
 Después de crear el Worker, comienza ejecutando el método 
postMessage(). 
 worker.postMessage(); // Start the worker.
Cómo establecer comunicación con 
un Worker mediante transferencia 
de mensajes 
 La comunicación entre un Worker y su página principal se 
realiza mediante un modelo de evento y el método 
postMessage(). 
 En función del navegador o de la versión, postMessage() 
puede aceptar una cadena o un objeto JSON como argumento 
único. 
 Las últimas versiones de los navegadores modernos son 
compatibles con la transferencia de objetos JSON.
 A continuación, se muestra un ejemplo sobre cómo utilizar 
una cadena para transferir "HelloWorld" a un Worker en 
doWork.js. 
 El Worker simplemente devuelve el mensaje que se le 
transfiere. 
 Secuencia de comandos principal: 
 var worker = new Worker('doWork.js'); 
worker.addEventListener('message', function(e) { 
console.log('Worker said: ', e.data); }, false); 
worker.postMessage('HelloWorld'); // Send data to our 
worker.
 doWork.js (el Worker): 
 self.addEventListener('message', function(e) { 
self.postMessage(e.data); }, false);
 Cuando se ejecuta postMessage() desde la página principal, 
nuestro Worker gestiona este mensaje definiendo un gestor 
onmessage para el evento message. 
 Se puede acceder a la carga del mensaje (en este caso "Hello 
World") en Event.data. 
 Aunque este ejemplo concreto no es demasiado 
emocionante, demuestra que postMessage() también sirve 
para transferir datos de vuelta al subproceso principal. Algo 
que resulta conveniente. 
 Los mensajes que se transfieren entre la página principal y 
los Workers se copian, no se comparten.
Subworkers 
 Los Workers tienen la capacidad de generar Workers 
secundarios. Esto es algo fantástico para dividir aún más las 
tareas intensivas en el tiempo de ejecución. Sin embargo, a la 
hora de utilizar los Subworkers es necesario tener en cuenta 
los siguientes aspectos: 
 Los Subworkers deben estar alojados en el mismo origen que 
la página principal. 
 La resolución de las URI de los Subworkers está relacionada 
con la ubicación de su Worker principal (en oposición a la 
página principal).
 La mayoría de los navegadores generan procesos 
independientes para cada Worker. 
 Una de las razones de esta advertencia se debe a que los 
mensajes transferidos entre las páginas principales y los 
Workers se copian, no se comparten.
Casos prácticos 
 Entonces, ¿qué tipo de aplicación deben utilizar los 
Web Workers? Desafortunadamente, los Web Workers 
aún son tecnologías relativamente nuevas y la mayoría 
de los ejemplos y tutoriales que existen están 
relacionados con la computación de números primos. 
Aunque no resulta demasiado interesante, es útil para 
entender los conceptos básicos de los Web Workers.
Aumenta el rendimiento de 
JavaScript con Web Worker 
 JavaScript nunca había sido un lenguaje donde se 
procesan grandes cantidades de datos, peroHTML5 ha 
incorporado la API deWeb Worker, que permite 
paralelizar procesos de JavaScript, ejecutándolos en 
segundo plano. 
La principal ventaja deWeb Worker es que nos 
permite crear subprocesos de nuestro hilo de ejecución 
principal, para poder procesar lo que queramos sin 
necesidad de bloquear el navegador y de una forma 
muy simple.
Ejemplos de código
 //ejemplo 1 de worker y sin worker con prueba de paralelismo 
<html> 
<head> 
<title>Campos de texto</title> 
</head> 
<style type="text/css"> 
#caja { width: 60%; float:right; border: 1px solid black; } 
</style> 
<script type="text/javascript"> 
var t = 0; 
function con() { 
var war = new Worker('worker.js'); 
war.onmessage = function(event) { 
document.getElementById('result').textContent = "con workers: " + 
event.data; 
};} 
function sin() { 
escribir = document.getElementById("caja"); 
for (var t = 0; t <= 8000000; t++) { 
document.getElementById('result').textContent = "sin workers: " + t;} 
document.getElementById('result').textContent = "Termino agotando los 
recursos de este equipo con " + t + " ciclos";}
 function comp() { 
 escribir = document.getElementById("caja") 
 escribir.innerHTML = 
 "Dato escrito es: " + document.rellenar.a1.value;} 
 function stop() { 
 document.getElementById('result').textContent = "Worker Detendio "; 
 war.terminate(); 
 war.close();} 
 window.onload = function() { 
 document.rellenar.enviar1.onclick = con; 
 document.rellenar.enviar2.onclick = sin; 
 document.rellenar.enviar3.onclick = comp; 
 document.rellenar.enviar4.onclick = stop; 
 } 
 </script> 
 <body> 
 <div id="caja" > 
 <p>Pulsa comprobar para ver si existe paralelismo</p> 
 </div>
 <form name="rellenar" action="#" > 
 <h2>Web Workers</h2> 
 <h4>Preciona un boton para ver los numeros</h4> 
 <p><input name="enviar1" id="ver" type="button" value="Con Workers" /> 
 <p><input name="enviar2" id="ver" type="button" value="Sin Workers" /> 
 <p><input name="enviar4" id="ver" type="button" value="DetenerWorker" /> 
 <h4>Para comprobar que esto funciona:</h4> 
 <h4>Escribe cualquier cosa que quieras</h4> 
 <input name="a1" type="text"/> <br> 
 <p><input name="enviar3" id="ver" type="button" value="Comporbar" /> 
 <p><h2><b>Resultado:</b> </h2><output id="result"> 
 <output id="result"> 
 </form> 
 </body> 
 </html>
 Worker.js
 //ejemplo 2.-varios workers en paralelo 
 <html> 
 <head> 
 <title>TODO supply a title</title> 
 <meta charset="UTF-8"> 
 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 <script> 
 // Primer proceso 
 varworkerUno = new Worker('w1.js'); 
 workerUno.addEventListener('message', function(e) { 
 document.getElementById('r1').textContent = "Primer worker a 500ms: " + e.data; 
 }, false); 
 // Segundo proceso 
 varworkerDos = new Worker('w2.js'); 
 workerDos.addEventListener('message', function(e) { 
 document.getElementById('r2').textContent = "Segundo worker a 100ms" + e.data; 
 }, false); 
 </script> 
 </head> 
 <body> 
 <form> 
 <h2>Resultados:</h2> 
 <output id="r1">dato1</output><br> 
 <output id="r2">dato2</output> 
 </form> 
 </body> 
 </html>
 W1.js 
 W12.js
 //ejemplo 3.- realiza cancelación de worker. 
 <html> 
 <body> 
 <p>Count numbers: <output id="result"></output></p> 
 <button onclick="startWorker()">StartWorker</button> 
 <button onclick="stopWorker()">Stop Worker</button> 
 <br><br> 
 <script> 
 var w; 
 function startWorker() { 
 if(typeof(Worker) !== "undefined") { 
 if(typeof(w) == "undefined") { 
 w = new Worker("ejemplo3.js"); 
 } 
 w.onmessage = function(event) { 
 document.getElementById("result").innerHTML = event.data;}; 
 } else { 
 document.getElementById("result").innerHTML = "no se soportan los workers en en este navegador";}} 
 function stopWorker() { 
 w.terminate();} 
 </script> 
 </body> 
 </html>
Ejemplo3.js
conclusiónes: 
 Los Web workers: esta herramienta es una de las mas 
importantes para la ejecución de scripts para ejecutar 
procesos en segundo plano, ya que antes se utilizaban 
herramientas que solo simulaban este proceso, 
consumiendo muchos recursos lo cual ocasionaba que 
se tuviera que detener el proceso actual para poder 
continuar con la carga de la información, en el caso de 
que el script estuviera bien hecho ya que de lo 
contrario ni siquiera se pudiera detener el proceso 
simplemente se congelaría el equipo .
contratiempos 
 Encontramos mucha información repetida 
 Tardamos para entender el código 
 Internet lento 
 La computadora se trababa al ejecutar los procesos sin 
worker
opinión 
 En lo personal pensamos que esta herramienta es muy 
útil por que así podemos realizar varios procesos al 
cargar nuestra pagina y no tenemos que esperar tanto 
tiempo para que cargue, tomando en cuenta que esto 
requiere de muchos recursos y no se nos debe de 
olvidar detenerlos para no provocar un fallo en la 
memoria, hay que ser muy cuidadoso con eso pero sin 
embargo las tareas en segundo plano con worker serán 
de muy gran ayuda para realizar muchos procesos que 
necesitemos sin que se trabe la maquina.
Tiempo de Realizacion 
 Viernes 29 de agosto 2014 2:00 hr buscando información 
 Sábado 30 de agosto 2014 4:00 hr recolectando información 
 Sábado 30 de agosto 2014 4:00 hr comprendiendo el código 
 Domingo 31 de agosto 2014 6:00 hr programando y haciendo nuestros 
propios ejemplos 
 Lunes 1 de septiembre 2014 3:00 hr organizando información 
 Martes 2 de septiembre 2014 2:00 hr concluyendo el proyecto 
 Miércoles 3 de septiembre 2014 00:10 minutos subiendo el proyecto
Referencias  Eric Bidelman. julio 26th, 2010 Introducción a los Web 
Workers. Recuperado el 30 de agosto del 2014. de: 
http://www.html5rocks.com/es/tutorials/workers/basics/ 
 David Rousset. 13 de febrero de 2012. Web Worker en 
HTML5. Recuperado el 30 de agosto del 2014. de: 
http://www.desarrolloweb.com/articulos/web-worker-html5. 
html 
 David Rousset. 13 de febrero de 2012. Web Worker en 
HTML5. Recuperado el 30 de agosto del 2014. de: 
http://msdn.microsoft.com/es-es/ 
library/ie/hh673568%28v=vs.85%29.aspx

Más contenido relacionado

La actualidad más candente

Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPablo Aguilera
 
Programacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETProgramacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETJavier Roig
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jspdtbadboy0
 
C# conexión sql server2012-visualstudio2012-mantenimientos
C#   conexión sql server2012-visualstudio2012-mantenimientosC#   conexión sql server2012-visualstudio2012-mantenimientos
C# conexión sql server2012-visualstudio2012-mantenimientosJomar Burgos Palacios
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...Marcelino Ortiz
 
Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetEsteban Soraire
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkitpabloesp
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 

La actualidad más candente (19)

Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Ajax
AjaxAjax
Ajax
 
Asp.net
Asp.netAsp.net
Asp.net
 
Volt taller
Volt tallerVolt taller
Volt taller
 
Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Asp.net
Asp.netAsp.net
Asp.net
 
Cabde tutorial
Cabde tutorialCabde tutorial
Cabde tutorial
 
Java script
Java scriptJava script
Java script
 
Dce2 ejercicios asp.net
Dce2 ejercicios asp.netDce2 ejercicios asp.net
Dce2 ejercicios asp.net
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Programacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETProgramacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NET
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
C# conexión sql server2012-visualstudio2012-mantenimientos
C#   conexión sql server2012-visualstudio2012-mantenimientosC#   conexión sql server2012-visualstudio2012-mantenimientos
C# conexión sql server2012-visualstudio2012-mantenimientos
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
 
Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.Net
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Controles aspnet.
Controles aspnet.Controles aspnet.
Controles aspnet.
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 

Destacado

Delo 400 multigrade performance cummins isx engines
Delo 400 multigrade performance cummins isx enginesDelo 400 multigrade performance cummins isx engines
Delo 400 multigrade performance cummins isx enginesAVDMM
 
Ergonomia
ErgonomiaErgonomia
Ergonomiaeliasgp
 
Thompson trucking work sheet
Thompson trucking work sheetThompson trucking work sheet
Thompson trucking work sheetfueltec
 
Masas por ejes de camión
Masas por ejes de camiónMasas por ejes de camión
Masas por ejes de camiónademanguan
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascriptJavier Constain
 
Tractor Trailer Drag Reduction Study
Tractor Trailer Drag Reduction StudyTractor Trailer Drag Reduction Study
Tractor Trailer Drag Reduction StudyChristopher Frasson
 
2010 Auto Show Catalog brought to you by Maryland Ford dealer
2010 Auto Show Catalog brought to you by Maryland Ford dealer2010 Auto Show Catalog brought to you by Maryland Ford dealer
2010 Auto Show Catalog brought to you by Maryland Ford dealerleonardtownford
 
MEDIOS DE TRANSPORTE
MEDIOS DE TRANSPORTEMEDIOS DE TRANSPORTE
MEDIOS DE TRANSPORTEmigescnav
 
Apache Storm: Introduccion
Apache Storm: IntroduccionApache Storm: Introduccion
Apache Storm: IntroduccionStratebi
 
2014 fall far horizon future truck revised
2014 fall far horizon future truck revised2014 fall far horizon future truck revised
2014 fall far horizon future truck revisedPaul Menig
 
Diferencia entre un psicólogo clínico y un psquiatra
Diferencia entre un psicólogo  clínico y un psquiatraDiferencia entre un psicólogo  clínico y un psquiatra
Diferencia entre un psicólogo clínico y un psquiatraNay Calderon
 
Cb 2014 d +21 palmares
Cb 2014 d +21 palmares Cb 2014 d +21 palmares
Cb 2014 d +21 palmares lavenir
 

Destacado (20)

Delo 400 multigrade performance cummins isx engines
Delo 400 multigrade performance cummins isx enginesDelo 400 multigrade performance cummins isx engines
Delo 400 multigrade performance cummins isx engines
 
Ergonomia
ErgonomiaErgonomia
Ergonomia
 
Thompson trucking work sheet
Thompson trucking work sheetThompson trucking work sheet
Thompson trucking work sheet
 
Web Workers
Web WorkersWeb Workers
Web Workers
 
Prueba En Kansas
Prueba En KansasPrueba En Kansas
Prueba En Kansas
 
Masas por ejes de camión
Masas por ejes de camiónMasas por ejes de camión
Masas por ejes de camión
 
Iron workers y javascript
Iron workers y javascriptIron workers y javascript
Iron workers y javascript
 
khodorlaw2016
khodorlaw2016khodorlaw2016
khodorlaw2016
 
Despacho
DespachoDespacho
Despacho
 
Navistar - Fuel Factors for Fleets
Navistar - Fuel Factors for FleetsNavistar - Fuel Factors for Fleets
Navistar - Fuel Factors for Fleets
 
Tractor Trailer Drag Reduction Study
Tractor Trailer Drag Reduction StudyTractor Trailer Drag Reduction Study
Tractor Trailer Drag Reduction Study
 
CVD strokes
CVD strokesCVD strokes
CVD strokes
 
El yagé
El yagéEl yagé
El yagé
 
2010 Auto Show Catalog brought to you by Maryland Ford dealer
2010 Auto Show Catalog brought to you by Maryland Ford dealer2010 Auto Show Catalog brought to you by Maryland Ford dealer
2010 Auto Show Catalog brought to you by Maryland Ford dealer
 
Past simple or continuous
Past simple or continuousPast simple or continuous
Past simple or continuous
 
MEDIOS DE TRANSPORTE
MEDIOS DE TRANSPORTEMEDIOS DE TRANSPORTE
MEDIOS DE TRANSPORTE
 
Apache Storm: Introduccion
Apache Storm: IntroduccionApache Storm: Introduccion
Apache Storm: Introduccion
 
2014 fall far horizon future truck revised
2014 fall far horizon future truck revised2014 fall far horizon future truck revised
2014 fall far horizon future truck revised
 
Diferencia entre un psicólogo clínico y un psquiatra
Diferencia entre un psicólogo  clínico y un psquiatraDiferencia entre un psicólogo  clínico y un psquiatra
Diferencia entre un psicólogo clínico y un psquiatra
 
Cb 2014 d +21 palmares
Cb 2014 d +21 palmares Cb 2014 d +21 palmares
Cb 2014 d +21 palmares
 

Similar a expo (20)

AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Web workers
Web workersWeb workers
Web workers
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
HTML5 Web Workers
HTML5 Web WorkersHTML5 Web Workers
HTML5 Web Workers
 
Ajax
AjaxAjax
Ajax
 
Asp
AspAsp
Asp
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Web service
Web serviceWeb service
Web service
 
Web service
Web serviceWeb service
Web service
 
Ajax
AjaxAjax
Ajax
 
Inicios Ajax
Inicios AjaxInicios Ajax
Inicios Ajax
 
Ajax
AjaxAjax
Ajax
 
12integracion de tomcat con apache
12integracion de tomcat con apache12integracion de tomcat con apache
12integracion de tomcat con apache
 
Curso ajax
Curso ajaxCurso ajax
Curso ajax
 
cursoTutorialBPEL.pdf
cursoTutorialBPEL.pdfcursoTutorialBPEL.pdf
cursoTutorialBPEL.pdf
 
Creando endpoint http
Creando endpoint httpCreando endpoint http
Creando endpoint http
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
Curso HTML 5 & jQuery - Leccion 11
 Curso HTML 5 & jQuery - Leccion 11 Curso HTML 5 & jQuery - Leccion 11
Curso HTML 5 & jQuery - Leccion 11
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
 

Último

plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPANEP - DETP
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 

Último (20)

Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Marketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETPMarketing y servicios 2ºBTP Cocina DGETP
Marketing y servicios 2ºBTP Cocina DGETP
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 

expo

  • 1. Link:www.slideshare.com Alumnos: Antonio Álvarez de la rocha Andrés Leonardo Guerra Portillo Fecha de entrega: 3/sep/2014
  • 3. Web Workers - Qué son y para que sirven Con la llegada de HTML5 llegan nuevas funcionalidades a los navegadores web, es el caso del Storage (almacenamiento en el cliente), Geolocation (geolocalización) o los Web Workers (ejecución de scripts en procesos en segundo plano).
  • 4.  Los Workers no son más que una API que permite a los desarrolladores web ejecutar procesos en segundo plano, son totalmente independientemente a los procesos de la interfaz de usuario. Esto permite que las secuencias de comandos de larga duración no se vean interrumpidas por secuencias de comandos que responden a clicks u otras interacciones por parte del usuario. Los Workers son relativamente gruesos y resistentes, y no están destinados a ser utilizados en grandes cantidades.
  • 5. ¿Qué es JavaScript?  JavaScript es un entorno de subproceso único, es decir, que no se pueden ejecutar varias secuencias de comandos al mismo tiempo  Por ejemplo, imagina un sitio que necesite gestionar eventos de interfaz de usuario, solicitar y procesar grandes cantidades de datos de API y manipular los DOM. Algo muy común, ¿verdad? Desafortunadamente, todo esto no puede realizarse de forma simultánea debido a las limitaciones en el tiempo de ejecución de los navegadores de JavaScript. La ejecución de secuencias de comandos se realiza en un único subproceso.
  • 6.  Los desarrolladores imitan la "simultaneidad" utilizando técnicas como setTimeout(), setInterval() y XMLHttpRequest, así como gestores de eventos. Sí, todas estas funciones se ejecutan de forma asíncrona; sin embargo, que no se bloqueen unas a otras no significa necesariamente que tengan lugar de forma simultánea. Los eventos asíncronos se procesan después de haber generado la secuencia de comandos que se esté ejecutando en ese momento. La buena noticia es que HTML5 nos ofrece algo mejor que este tipo de trucos de hacker.
  • 7. Compatibilidad de los navegadores  Los Web Workers acaban de aparecer en la versión preliminar de IE10 (IE10 Platform Preview).  También están soportados en Firefox (desde la versión 3.6)  Safari (desde la 4.0)  Chrome  Opera 11  Las versiones de móviles de estos navegadores no los soportan.
  • 8. Introducción a los Web Workers: implementar subprocesos en JavaScript  Los Web Workers te permiten realizar acciones como activar secuencias de comandos con tiempos de ejecución largos para gestionar tareas intensivas de computación, pero sin bloquear la interfaz de usuario u otras secuencias de comandos para gestionar las interacciones del usuario.  Nos ayudarán a acabar con esos molestos cuadros de diálogo que informan de que la secuencia de comandos no responde.
  • 9.  Cuadro de diálogo habitual para informar de que la secuencia de comandos no responde  Los Web Workers utilizan una transferencia de mensajes similar a los subprocesos para alcanzar el paralelismo. Son perfectos para mantener tu interfaz actualizada, eficiente y receptiva para los usuarios.
  • 10. Crear un Worker  Los Web Workers se ejecutan en un subproceso aislado. Como resultado, es necesario que el código que ejecutan se encuentre en un archivo independiente.  lo primero que tienes que hacer es crear un nuevo objeto Worker en tu página principal.  El constructor toma el nombre de la secuencia de comandos del Worker.  var worker = new Worker('task.js');
  • 11.  Si el archivo especificado existe, el navegador generará un nuevo subproceso de Worker que lo descargará de forma asíncrona.  El Worker no empezará hasta que el archivo se haya descargado completamente y se haya ejecutado.  Si la ruta a tu Worker devuelve un error 404, el Worker fallará automáticamente.  Después de crear el Worker, comienza ejecutando el método postMessage().  worker.postMessage(); // Start the worker.
  • 12. Cómo establecer comunicación con un Worker mediante transferencia de mensajes  La comunicación entre un Worker y su página principal se realiza mediante un modelo de evento y el método postMessage().  En función del navegador o de la versión, postMessage() puede aceptar una cadena o un objeto JSON como argumento único.  Las últimas versiones de los navegadores modernos son compatibles con la transferencia de objetos JSON.
  • 13.  A continuación, se muestra un ejemplo sobre cómo utilizar una cadena para transferir "HelloWorld" a un Worker en doWork.js.  El Worker simplemente devuelve el mensaje que se le transfiere.  Secuencia de comandos principal:  var worker = new Worker('doWork.js'); worker.addEventListener('message', function(e) { console.log('Worker said: ', e.data); }, false); worker.postMessage('HelloWorld'); // Send data to our worker.
  • 14.  doWork.js (el Worker):  self.addEventListener('message', function(e) { self.postMessage(e.data); }, false);
  • 15.  Cuando se ejecuta postMessage() desde la página principal, nuestro Worker gestiona este mensaje definiendo un gestor onmessage para el evento message.  Se puede acceder a la carga del mensaje (en este caso "Hello World") en Event.data.  Aunque este ejemplo concreto no es demasiado emocionante, demuestra que postMessage() también sirve para transferir datos de vuelta al subproceso principal. Algo que resulta conveniente.  Los mensajes que se transfieren entre la página principal y los Workers se copian, no se comparten.
  • 16. Subworkers  Los Workers tienen la capacidad de generar Workers secundarios. Esto es algo fantástico para dividir aún más las tareas intensivas en el tiempo de ejecución. Sin embargo, a la hora de utilizar los Subworkers es necesario tener en cuenta los siguientes aspectos:  Los Subworkers deben estar alojados en el mismo origen que la página principal.  La resolución de las URI de los Subworkers está relacionada con la ubicación de su Worker principal (en oposición a la página principal).
  • 17.  La mayoría de los navegadores generan procesos independientes para cada Worker.  Una de las razones de esta advertencia se debe a que los mensajes transferidos entre las páginas principales y los Workers se copian, no se comparten.
  • 18. Casos prácticos  Entonces, ¿qué tipo de aplicación deben utilizar los Web Workers? Desafortunadamente, los Web Workers aún son tecnologías relativamente nuevas y la mayoría de los ejemplos y tutoriales que existen están relacionados con la computación de números primos. Aunque no resulta demasiado interesante, es útil para entender los conceptos básicos de los Web Workers.
  • 19. Aumenta el rendimiento de JavaScript con Web Worker  JavaScript nunca había sido un lenguaje donde se procesan grandes cantidades de datos, peroHTML5 ha incorporado la API deWeb Worker, que permite paralelizar procesos de JavaScript, ejecutándolos en segundo plano. La principal ventaja deWeb Worker es que nos permite crear subprocesos de nuestro hilo de ejecución principal, para poder procesar lo que queramos sin necesidad de bloquear el navegador y de una forma muy simple.
  • 21.  //ejemplo 1 de worker y sin worker con prueba de paralelismo <html> <head> <title>Campos de texto</title> </head> <style type="text/css"> #caja { width: 60%; float:right; border: 1px solid black; } </style> <script type="text/javascript"> var t = 0; function con() { var war = new Worker('worker.js'); war.onmessage = function(event) { document.getElementById('result').textContent = "con workers: " + event.data; };} function sin() { escribir = document.getElementById("caja"); for (var t = 0; t <= 8000000; t++) { document.getElementById('result').textContent = "sin workers: " + t;} document.getElementById('result').textContent = "Termino agotando los recursos de este equipo con " + t + " ciclos";}
  • 22.  function comp() {  escribir = document.getElementById("caja")  escribir.innerHTML =  "Dato escrito es: " + document.rellenar.a1.value;}  function stop() {  document.getElementById('result').textContent = "Worker Detendio ";  war.terminate();  war.close();}  window.onload = function() {  document.rellenar.enviar1.onclick = con;  document.rellenar.enviar2.onclick = sin;  document.rellenar.enviar3.onclick = comp;  document.rellenar.enviar4.onclick = stop;  }  </script>  <body>  <div id="caja" >  <p>Pulsa comprobar para ver si existe paralelismo</p>  </div>
  • 23.  <form name="rellenar" action="#" >  <h2>Web Workers</h2>  <h4>Preciona un boton para ver los numeros</h4>  <p><input name="enviar1" id="ver" type="button" value="Con Workers" />  <p><input name="enviar2" id="ver" type="button" value="Sin Workers" />  <p><input name="enviar4" id="ver" type="button" value="DetenerWorker" />  <h4>Para comprobar que esto funciona:</h4>  <h4>Escribe cualquier cosa que quieras</h4>  <input name="a1" type="text"/> <br>  <p><input name="enviar3" id="ver" type="button" value="Comporbar" />  <p><h2><b>Resultado:</b> </h2><output id="result">  <output id="result">  </form>  </body>  </html>
  • 25.  //ejemplo 2.-varios workers en paralelo  <html>  <head>  <title>TODO supply a title</title>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <script>  // Primer proceso  varworkerUno = new Worker('w1.js');  workerUno.addEventListener('message', function(e) {  document.getElementById('r1').textContent = "Primer worker a 500ms: " + e.data;  }, false);  // Segundo proceso  varworkerDos = new Worker('w2.js');  workerDos.addEventListener('message', function(e) {  document.getElementById('r2').textContent = "Segundo worker a 100ms" + e.data;  }, false);  </script>  </head>  <body>  <form>  <h2>Resultados:</h2>  <output id="r1">dato1</output><br>  <output id="r2">dato2</output>  </form>  </body>  </html>
  • 26.  W1.js  W12.js
  • 27.  //ejemplo 3.- realiza cancelación de worker.  <html>  <body>  <p>Count numbers: <output id="result"></output></p>  <button onclick="startWorker()">StartWorker</button>  <button onclick="stopWorker()">Stop Worker</button>  <br><br>  <script>  var w;  function startWorker() {  if(typeof(Worker) !== "undefined") {  if(typeof(w) == "undefined") {  w = new Worker("ejemplo3.js");  }  w.onmessage = function(event) {  document.getElementById("result").innerHTML = event.data;};  } else {  document.getElementById("result").innerHTML = "no se soportan los workers en en este navegador";}}  function stopWorker() {  w.terminate();}  </script>  </body>  </html>
  • 29. conclusiónes:  Los Web workers: esta herramienta es una de las mas importantes para la ejecución de scripts para ejecutar procesos en segundo plano, ya que antes se utilizaban herramientas que solo simulaban este proceso, consumiendo muchos recursos lo cual ocasionaba que se tuviera que detener el proceso actual para poder continuar con la carga de la información, en el caso de que el script estuviera bien hecho ya que de lo contrario ni siquiera se pudiera detener el proceso simplemente se congelaría el equipo .
  • 30. contratiempos  Encontramos mucha información repetida  Tardamos para entender el código  Internet lento  La computadora se trababa al ejecutar los procesos sin worker
  • 31. opinión  En lo personal pensamos que esta herramienta es muy útil por que así podemos realizar varios procesos al cargar nuestra pagina y no tenemos que esperar tanto tiempo para que cargue, tomando en cuenta que esto requiere de muchos recursos y no se nos debe de olvidar detenerlos para no provocar un fallo en la memoria, hay que ser muy cuidadoso con eso pero sin embargo las tareas en segundo plano con worker serán de muy gran ayuda para realizar muchos procesos que necesitemos sin que se trabe la maquina.
  • 32. Tiempo de Realizacion  Viernes 29 de agosto 2014 2:00 hr buscando información  Sábado 30 de agosto 2014 4:00 hr recolectando información  Sábado 30 de agosto 2014 4:00 hr comprendiendo el código  Domingo 31 de agosto 2014 6:00 hr programando y haciendo nuestros propios ejemplos  Lunes 1 de septiembre 2014 3:00 hr organizando información  Martes 2 de septiembre 2014 2:00 hr concluyendo el proyecto  Miércoles 3 de septiembre 2014 00:10 minutos subiendo el proyecto
  • 33. Referencias  Eric Bidelman. julio 26th, 2010 Introducción a los Web Workers. Recuperado el 30 de agosto del 2014. de: http://www.html5rocks.com/es/tutorials/workers/basics/  David Rousset. 13 de febrero de 2012. Web Worker en HTML5. Recuperado el 30 de agosto del 2014. de: http://www.desarrolloweb.com/articulos/web-worker-html5. html  David Rousset. 13 de febrero de 2012. Web Worker en HTML5. Recuperado el 30 de agosto del 2014. de: http://msdn.microsoft.com/es-es/ library/ie/hh673568%28v=vs.85%29.aspx