Operaciones asícronas y paralelas



¿Qué es y Cómo funciona?

La página muestra 2 botones que redirigen, cada uno por ajax, a 2 acciones que ejecutan 3 operaciones de forma diferente.

El botón "Carga de 3 operaciones no asíncronas" ejecuta en el lado del servidor una operacion con duración 2 segundos 3 veces y de forma "lineal", es decir, no empieza una operación nueva hasta no haber acabado la anterior. Se mide la duración completa en la ejecución y se devuelve a la página.

El botón "Carga de 3 operaciones asíncronas" ejecuta en el lado del servidor una operacion con duración 2 segundos 3 veces en 3 tareas asincrónicas distintas es decir, se ejecutan las 3 al mismo tiempo. Se mide la duración completa en la ejecución y se devuelve a la página.

El resultado del botón "no asíncrono" es de 3x2=6 segundos aproximadamente, mientras que el resultado del botón asíncrono ejecutado en paralelo es de 2 segundos aproximadamente pues distribuye por los nucleos de la máquina donde se encuentra alojada.

Este ejemplo simple se ha generado siguiendo esta publicación

 

Teoría

.NET a partir de su version 4.0 y mejorado en 4.5 propone la clase Task para realizar varias operaciones en paralelo o lo que es lo mismo, de forma asincrónica (multithreading) y usando los nucleos existentes en el procesador.

Una excelente introducción a esta novedad se puede encontrar aquí

 

Configuración y Test

Se ha utilizado Visual Studio Express 2013 para Web y actualmente Visual Comunity 2015.
La programación se ha desarrollado con C#, Razor y acceso a Base de Datos por Entity Framework.

Las tablas mostradas en la aplicación se encuentran en un Microsoft® SQL Server® 2012 y actualmente en SQL de Azure

El alojamiento de las páginas se realizó en https://www.smarterasp.net con el plan .NET ADVANCE y actualmente se han movido a 2 Aplicaciones Web en Azure: una para este proyecto Web MVC y otra para un WCF usada en un ejemplo.

Se ha testeado con exito en diferentes navegadores y sistemas operativos, en pantallas de PC, tabletas y moviles.