Partager via


Opération asynchrone

Le temps nécessaire à une application pour accéder à une ressource Internet dépend d’un certain nombre de facteurs, tels que la connexion utilisée, le serveur sur lequel se trouve la ressource et le nombre d’utilisateurs qui tentent d’accéder à la ressource. Pour les applications qui téléchargent plusieurs ressources ou gèrent plusieurs tâches (y compris un ou plusieurs téléchargements), l’attente de la fin de chaque téléchargement avant de passer à la tâche suivante peut être extrêmement inefficace. Pour réduire le temps d’attente d’une application, la plupart des fonctions WinINet peuvent fonctionner de manière asynchrone.

En mode asynchrone, une application peut exécuter n’importe quelle fonction qui inclut une valeur de contexte comme l’un de ses paramètres et peut continuer à exécuter d’autres commandes ou fonctions pendant que l’application attend que la fonction termine sa tâche. Une fois la tâche terminée, une fonction de rappel status fournie par l’application est avertie de la progression de la tâche et de sa fin. À ce stade, la fonction de rappel status peut appeler d’autres fonctions ou effectuer d’autres tâches requises qui dépendaient de l’achèvement de la tâche.

Il n’existe aucune cohérence de thread de rappel lorsque vous appelez WinINet de manière asynchrone : un appel peut commencer à partir d’un thread, mais n’importe quel autre thread peut recevoir le rappel.

Avantages

Le fonctionnement asynchrone présente plusieurs avantages. Par exemple :

  • Téléchargement simultané de plusieurs ressources Internet.

    Vous pouvez vous connecter à plusieurs ressources Internet en même temps et les télécharger dès qu’elles deviennent disponibles.

  • Amélioration des performances de votre application.

    Une application utilisant les fonctions WinINet de façon asynchrone n’a pas besoin d’attendre que la demande soit terminée, de sorte que l’application est libre d’effectuer d’autres tâches qui ne dépendent pas de la demande, améliorant ainsi les performances globales de l’application.

  • Surveillez la progression du téléchargement.

    La fonction de rappel status reçoit des notifications pendant le traitement d’une demande. Si nécessaire, votre application peut utiliser les informations fournies par cette fonction de rappel status pour tenir l’utilisateur informé de la progression de l’opération ou pour interrompre les demandes qui prennent trop de temps.

Scénarios

Supposons que votre application doit télécharger les prix du café à partir des sites Downfall Coffee & Tea et Fourth Coffee et comparer les prix. Le site Fourth Coffee a généralement un temps de réponse plus lent, donc votre application doit d’abord télécharger les informations de Downfall Coffee & Tea.

Deux versions de l’application sont développées. On travaille de façon synchrone, en téléchargeant d’abord les prix à partir du site Downfall Coffee & Tea, puis les prix du site Fourth Coffee. Le second fonctionne de manière asynchrone, en envoyant des demandes aux deux sites et en téléchargeant les prix lorsqu’ils deviennent disponibles.

Le tableau suivant illustre ce qui se passerait si le site fourth Coffee était plus rapide un jour donné.

Événement Version synchrone Version asynchrone
Démarrer Envoyer une demande à Downfall Coffee & Tea Envoyer des demandes à Downfall Coffee & Tea et Fourth Coffee
Demande de la version asynchrone à Fourth Coffee terminée En attente Télécharger les prix de Fourth Coffee
Demande à Downfall Coffee & Tea terminée Télécharger les prix de Downfall Coffee & Tea Télécharger les prix de Downfall Coffee & Tea
Après Downfall Coffee & Tea les prix sont téléchargés Envoyer une demande à Fourth Coffee Comparer les prix
Comparaison de la version asynchrone terminée En attente Opération terminée
Demande de la version synchrone à Fourth Coffee terminée Télécharger les prix de Fourth Coffee n/a
Après les prix de Fourth Coffee sont téléchargés Comparer les prix n/a
Comparaison de la version synchrone terminée Opération terminée n/a

 

Un autre exemple est un navigateur web tel que Microsoft Internet Explorer. Lorsque le navigateur télécharge une page, il doit souvent télécharger d’autres ressources, telles que des images et des fichiers audio. En mode asynchrone, la page et ses ressources associées peuvent être demandées simultanément et téléchargées à mesure qu’elles deviennent disponibles, au lieu de demander et télécharger la page et chaque ressource une par une.

Voici des liens connexes.

Tutoriels

Fonctions nécessaires pour configurer l’opération asynchrone

Fonctions qui peuvent être utilisées de manière asynchrone

Notes

Les fonctions FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile et FtpRenameFile utilisent la valeur de contexte fournie dans l’appel à la fonction InternetConnect .

 

Notes

WinINet ne prend pas en charge les implémentations de serveur. En outre, il ne doit pas être utilisé à partir d’un service. Pour les implémentations de serveur ou les services, utilisez Microsoft Windows HTTP Services (WinHTTP).