Eventos

[.NET] ¿Cómo trabajar async con Enterprise Library?

Digamos que tienes un web service, sí, un web service. Y este, acaba de recibir una petición, si tu web service desea sobrevivir, lo que tendrá que hacer es hacer uso de algún Thread dentro de su Thread Pool. Mientras el procesamiento de cada petición no le tome demasiado a un Thread, podría no haber problema.


Pero en el caso contrario podriamos no solo dejar varias solicitudes en espera, sino también afectar el rendimiento de las demás tareas.


Antes de continuar, recordemos que la creación de un Thread es costosa en términos de memoria (1MB) y tiempo(500ms). Hay escenarios que lo justifican, pero aquellos dónde un Thread se queda bloqueado por esperar el resultado de alguna operación, simplemente no.

Lo bueno de este asunto es que desde .NET 4.5 y C# 5, la programación asíncrona nos permite fácilmente lidear con esta clase de situaciones, un claro ejemplo sería la forma en que HttpClient trabaja, pero igual nos podemos encontrar con casos que no estan listos para esto, por eso ahora veremos como trabajar asíncronamente con Enterprise Library.

En el siguiente código podemos apreciar un controllador que devuelve una lista de elementos.

Y en este otro, un método que logra establecer una conexión a una base de datos para recuperar algunos resultados.

Si una solicitud llega a nuestro servicio y nuestro Thread queda bloqueado por esperar el resultado de una gran consulta o la ejecución de una operación larga, la inmediata próxima solicitud exigirá que se tenga que usar otro Thread o se tenga que crear uno nuevo. Para este sencillo e hipotético ejemplo tendremos que realizar las siguientes modificaciones.



No hay comentarios.:

Publicar un comentario

Epicalsoft — Superheroic Software Development Blog Designed by Templateism.com Copyright © 2014

Con tecnología de Blogger.