Share via


Operación asincrónica

La cantidad de tiempo que tarda una aplicación en acceder a un recurso de Internet depende de varios factores, como la conexión que se usa, el servidor en el que se encuentra el recurso y el número de usuarios que intentan acceder al recurso. En el caso de las aplicaciones que descargan varios recursos o controlan varias tareas (incluidas una o varias descargas), esperar a que cada descarga se complete antes de pasar a la siguiente tarea puede ser extremadamente ineficaz. Para reducir la cantidad de tiempo que una aplicación tiene que esperar, muchas de las funciones de WinINet pueden funcionar de forma asincrónica.

En modo asincrónico, una aplicación puede ejecutar cualquier función que incluya un valor de contexto como uno de sus parámetros y puede seguir ejecutando otros comandos o funciones mientras la aplicación espera a que la función complete su tarea. Mientras se completa la tarea, se notifica a la aplicación una función de devolución de llamada de estado proporcionada por la aplicación sobre el progreso de la tarea y cuando se ha completado. En este momento, la función de devolución de llamada de estado puede llamar a otras funciones o realizar cualquier otra tarea necesaria que dependa de la finalización de la tarea.

No hay ninguna afinidad de subproceso de devolución de llamada al llamar a WinINet de forma asincrónica: una llamada podría iniciarse desde un subproceso, pero cualquier otro subproceso puede recibir la devolución de llamada.

Ventajas

Hay varias ventajas para operar de forma asincrónica. Por ejemplo:

  • Descargar varios recursos de Internet simultáneamente.

    Puede conectarse a varios recursos de Internet al mismo tiempo y descargarlos a medida que estén disponibles.

  • Aumento del rendimiento de la aplicación.

    Una aplicación que usa las funciones WinINet de forma asincrónica no tiene que esperar hasta que se complete la solicitud, por lo que la aplicación es libre de realizar otras tareas que no dependen de la solicitud, lo que mejora el rendimiento general de la aplicación.

  • Supervise el progreso de la descarga.

    La función de devolución de llamada de estado recibe notificaciones mientras procesa una solicitud. Si es necesario, la aplicación puede usar la información proporcionada por esa función de devolución de llamada de estado para mantener al usuario informado sobre el progreso de la operación o interrumpir las solicitudes que tardan demasiado tiempo en completarse.

Escenarios

Supongamos que su aplicación necesita descargar los precios del café del té de café & inactivo y los sitios de cuarto café y comparar los precios. El sitio de Fourth Coffee suele tener un tiempo de respuesta más lento, por lo que la aplicación debe descargar primero la información de Downfall Coffee & Tea.

Se desarrollan dos versiones de la aplicación. Uno funciona de forma sincrónica, descargando primero los precios del sitio de té de café & inactivo y luego los precios del cuarto sitio de café. El segundo funciona de forma asincrónica, enviando solicitudes a ambos sitios y descargando los precios cuando estén disponibles.

En la tabla siguiente se muestra lo que sucedería si el sitio de Fourth Coffee fuera más rápido en un día determinado.

Evento Versión sincrónica Versión asincrónica
Inicio Enviar solicitud a Downfall Coffee & Tea Envío de solicitudes a Downfall Coffee & Tea y Fourth Coffee
Solicitud de la versión asincrónica a Fourth Coffee completada En espera Precios de descarga de Fourth Coffee
Solicitud al té de café & inactivo completado Precios de descarga del té de café & inactivo Precios de descarga del té de café & inactivo
Después de los precios de Downfall Coffee & Tea se descargan Enviar solicitud a Fourth Coffee Comparación de precios
Comparación de la versión asincrónica completada En espera Operación completada
Solicitud de la versión sincrónica a Fourth Coffee completada Precios de descarga de Fourth Coffee N/D
Después de descargar los precios de Fourth Coffee Comparación de precios N/D
Se completó la comparación de la versión sincrónica Operación completada N/D

 

Otro ejemplo sería un explorador web como Microsoft Internet Explorer. Cuando el explorador descarga una página, a menudo necesita descargar otros recursos, como imágenes y archivos de sonido. En modo asincrónico, la página y sus recursos asociados se pueden solicitar simultáneamente y descargar a medida que están disponibles, en lugar de solicitar y descargar la página y cada recurso de uno en uno.

A continuación se muestran vínculos relacionados.

Tutoriales

Funciones necesarias para configurar la operación asincrónica

Funciones que se pueden usar de forma asincrónica

Nota

Las funciones FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile y FtpRenameFile usan el valor de contexto proporcionado en la llamada a la función InternetConnect .

 

Nota

WinINet no admite implementaciones de servidor. Además, no se debe usar desde un servicio. En el caso de las implementaciones de servidor o los servicios, use los servicios HTTP de Microsoft Windows (WinHTTP).