Controlador de búsquedas
En la primera parte de este tutorial vimos conceptos muy importantes de la programación de aplicaciones asíncronas, adicionalmente pudimos dar un vistazo a las convenciones que debemos seguir para poder construir un controlador con estas características.
Si bien la teoría nos da una visión muy importante de lo que implica este tipo de desarrollo en ASP.NET MVC, la práctica nos dará la visión necesaria para lograr nuestros objetivos.
En esta segunda parte vamos a construir un controlador de búsquedas donde aplicaremos los conocimientos que adquirimos en la primera parte, además de ver algunos conceptos un poco más avanzados que nos ayudaran a desarrollar una lógica más acertada para la construcción de aplicaciones asíncronas.
Construir un controlador de búsquedas
Supongamos que necesitamos hacer una búsqueda un poco compleja, si esperamos que el servidor termine de procesar antes de atender otras peticiones probablemente terminemos con una aplicación muy lenta y que muere muy a menudo.
Para ello vamos a construir el controlador, veamos en la siguiente imagen el primer método o acción a construir:
Aquí empezamos con la construcción del método Async, este va a iniciar el proceso worker que manejará los hilos correspondientes, como vemos y siguiendo la convención no retorna nada. Luego vamos a construir la acción principal que es la que va a ejecutar los procesos que necesitamos de nuestra lógica:
Notamos que tampoco retornamos nada, ya que quien va a hacer el retorno de los resultados, es el último método que se ejecuta cuando se completa la petición:
Vemos entonces como aquí si ya podemos retornar el JSON correspondientes con los resultados obtenidos.
¿Cuándo debemos utilizar controladores asíncronos?
Es muy importante tener una guía de uso para los controladores asíncronos, ya que a pesar que mejoran muchas cosas, no todas las situaciones son favorables para esta forma de desarrollar aplicaciones.
Los momentos en los que no debemos utilizar controladores asíncronos los podemos ver en la siguiente lista:
- Cuando se deben realizar operaciones simples y muy cortas.
- Casos en los que necesitamos tener baja complejidad y no debemos pensar mucho en la eficiencia.
- Operaciones que requieren mucho uso del CPU, ya que los procesos asíncronos pueden aumentar el consumo en vez de ayudar a reducirlo.
- Cuando tenemos operaciones largas y que están causando un cuello de botella en la aplicación.
- Cuando tenemos operaciones que utilizan de forma intensiva la red y los dispositivos de entrada y salida.
- Cuando nuestra aplicación requiere que le demos la posibilidad al usuario de cancelar operaciones que ya están en curso.
Como pudimos ver el concepto de aplicaciones asíncronas se ve más complejo de lo que realmente es, con la ayuda de ASP.NET y sus herramientas podemos lograr construir aplicaciones verdaderamente modernas y evitar en gran medida los problemas de la arquitectura cliente servidor.