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.
Temas relacionados
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
- FtpCreateDirectory
- FtpDeleteFile
- FtpFindFirstFile
- FtpGetCurrentDirectory
- FtpGetFile
- FtpOpenFile
- FtpPutFile
- FtpRemoveDirectory
- FtpRenameFile
- FtpSetCurrentDirectory
- GopherFindFirstFile
- GopherOpenFile
- HttpEndRequest
- HttpOpenRequest
- HttpSendRequestEx
- InternetConnect
- InternetOpenUrl
- InternetReadFileEx
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).