¿Cómo implementar el procesamiento asincrónico del sitio web .NET?
En el campo de la arquitectura, a menudo escuchamos a otros decir "asíncrono" y, a menudo, encontramos este problema en las entrevistas.
¿Qué es asíncrono?
Hablando de .NET asíncrono, primero hablemos de algunos conceptos que se confunden fácilmente:
1. Multiproceso: generalmente se refiere a la operación cooperativa de varios subprocesos en el mismo. proceso. En una computadora de múltiples núcleos, varios subprocesos tendrán la oportunidad de ejecutarse en varios núcleos al mismo tiempo. Si los subprocesos realizan cálculos, se calcularán en paralelo.
2. Paralelo: generalmente se refiere a la computación paralela, lo que significa que se ejecutan varias instrucciones al mismo tiempo. Estas instrucciones se pueden ejecutar en varios núcleos de la misma CPU, o en varias CPU, o en varias. hosts físicos, incluso a través de múltiples redes.
3. Asíncrono: Correspondiente a la sincronización, significa que después de llamar a otra operación, no espera su resultado y continúa realizando la operación posterior, si no hay otra operación después de eso, el hilo actual. entrará en estado de suspensión y el tiempo de CPU tendrá la oportunidad de cambiar a otros subprocesos. Una vez completada la operación asincrónica, la notificación y los resultados se obtienen a través de la función de devolución de llamada.
¿Por qué utilizar asíncrono en la Web?
En aplicaciones web que ven una gran cantidad de solicitudes simultáneas al inicio o tienen cargas en ráfagas (donde la concurrencia aumenta repentinamente), realizar llamadas asincrónicas a servicios web aumentará la capacidad de respuesta de su aplicación. Las solicitudes asincrónicas tardan la misma cantidad de tiempo en procesarse que las solicitudes sincrónicas.
Por ejemplo, si una solicitud genera una llamada de servicio web que tarda dos segundos en completarse, si la solicitud se ejecuta de forma sincrónica o asincrónica en dos segundos. Sin embargo, en una llamada asincrónica, el hilo no tiene que esperar a que se complete la primera solicitud antes de responder a otras solicitudes. Por lo tanto, las solicitudes asincrónicas evitan la cola de solicitudes y el crecimiento del grupo de subprocesos cuando hay muchas solicitudes simultáneas que llaman a operaciones de larga duración.
Métodos de implementación asincrónica
Hay muchas formas de lograr una implementación asincrónica, como el subproceso múltiple. El subproceso múltiple coloca operaciones asincrónicas en otro subproceso para ejecutar y se notifica su finalización mediante métodos de sondeo o devolución de llamada.
Las llamadas asincrónicas multiproceso se pueden implementar utilizando la clase Thread tradicional, Task y la palabra clave async/await.
Para Thread, cuando varios métodos asincrónicos requieren ayuda, el código se volverá muy complicado. Por esta razón, necesitamos un mejor modelo asincrónico. A partir de .NET4, se introdujo un nuevo modelo asincrónico. Veamos un fragmento de código:
Ya no nos importa cómo comienza la tarea y cuándo terminará. Todo se convierte en tareas relacionadas o no relacionadas.
Para encapsular un método asincrónico compuesto por múltiples métodos asincrónicos, después de llamar al método asincrónico combinado, llame al primer método asincrónico en secuencia y luego regrese después de generar el resultado requerido Tarea. Cuando se completa el método asincrónico, se vuelve a llamar al método especificado y las llamadas continúan en secuencia. Una vez completados todos los métodos, el resultado final de la operación se establece en el resultado Tarea y luego se completa toda la tarea. Si el método asincrónico tiene un valor de retorno, el método asincrónico combinado parece un poco más complicado. Similar a la imagen siguiente:
Para resolver este problema, Microsoft proporciona un azúcar sintáctico muy fácil de usar: la palabra clave async/await. Echemos un vistazo a un fragmento de código:
Está escrito casi de la misma manera que el método sincrónico, la cantidad de código es relativamente pequeña y la lógica del programa también es muy clara. Por supuesto que es más legible.
Resumen
Aquí compartimos el procesamiento asincrónico del sitio web .NET. Aquí hay un resumen:
1. El procesamiento asincrónico del sitio web .NET se puede implementar en 3. formas: Thread, Task, async/await;
2. Task parece compensar las deficiencias de Thread, y async/await también parece compensar las deficiencias de Task. ¿Has notado que esta relación es como una línea? De hecho, en el análisis final, todas estas son tecnologías de subprocesos múltiples, y la capa inferior es la implementación de subprocesos. Sin embargo, Microsoft ha creado azúcar sintáctico para la legibilidad del código y la claridad de la lógica, lo que lo hace más conveniente para los desarrolladores. para usar.
3. En C#5, se agrega la palabra clave async/await, que resuelve los problemas restantes anteriores, y el punto es que es muy simple de usar.
4. NETFramework4 introdujo el concepto de programación asincrónica. ASP.NET4.5 admite tareas, por lo que async/await está disponible. Lo anterior es mi punto de vista. ¿Qué opinas de este tema? Bienvenido a comunicarse en el área de comentarios a continuación ~ Soy un creador en el campo de la ciencia y la tecnología, con diez años de experiencia en la industria de Internet. ¡Bienvenido a seguirme para aprender más sobre ciencia y tecnología!