Operazione asincrona
Il tempo necessario per accedere a una risorsa Internet da parte di un'applicazione dipende da diversi fattori, ad esempio la connessione usata, il server in cui si trova la risorsa e il numero di utenti che tentano di accedere alla risorsa. Per le applicazioni che scaricano più risorse o gestiscono più attività (inclusi uno o più download), l'attesa del completamento di ogni download prima di passare all'attività successiva può risultare estremamente inefficiente. Per ridurre il tempo di attesa di un'applicazione, molte delle funzioni WinINet possono funzionare in modo asincrono.
In modalità asincrona, un'applicazione può eseguire qualsiasi funzione che includa un valore di contesto come uno dei relativi parametri e può continuare a eseguire altri comandi o funzioni mentre l'applicazione attende il completamento dell'attività da parte della funzione. Durante il completamento dell'attività, una funzione di callback di stato fornita dall'applicazione riceve una notifica sullo stato dell'attività e al termine dell'operazione. In questo momento, la funzione di callback di stato può chiamare altre funzioni o eseguire qualsiasi altra attività necessaria che dipende dal completamento dell'attività.
Non esiste un thread di callback quando si chiama WinINet in modo asincrono: una chiamata potrebbe iniziare da un thread, ma qualsiasi altro thread può ricevere il callback.
Vantaggi
Esistono diversi vantaggi per operare in modo asincrono. Ad esempio:
Download simultaneo di più risorse Internet.
È possibile connettersi a più risorse Internet contemporaneamente e scaricarle man mano che diventano disponibili.
Aumento delle prestazioni dell'applicazione.
Un'applicazione che usa le funzioni WinINet in modo asincrono non deve attendere il completamento della richiesta, quindi l'applicazione è libera di eseguire altre attività che non dipendono dalla richiesta, migliorando così le prestazioni complessive dell'applicazione.
Monitorare lo stato di avanzamento del download.
La funzione di callback di stato riceve notifiche durante l'elaborazione di una richiesta. Se necessario, l'applicazione può usare le informazioni fornite da tale funzione di callback di stato per mantenere l'utente informato sullo stato di avanzamento dell'operazione o per interrompere le richieste che richiedono troppo tempo per il completamento.
Scenari
Si supponga che l'applicazione debba scaricare i prezzi del caffè dai siti Downfall Coffee & Tea e Fourth Coffee e confrontare i prezzi. Il sito Fourth Coffee in genere ha un tempo di risposta più lento, quindi l'applicazione deve scaricare prima le informazioni da Downfall Coffee & Tea.
Vengono sviluppate due versioni dell'applicazione. Uno funziona in modo sincrono, prima scaricando i prezzi dal sito Downfall Coffee & Tea e poi i prezzi dal sito Fourth Coffee. Il secondo funziona in modo asincrono, inviando richieste a entrambi i siti e scaricando i prezzi quando diventano disponibili.
La tabella seguente illustra cosa accadrebbe se il sito Fourth Coffee fosse più veloce in un determinato giorno.
Evento | Versione sincrona | Versione asincrona |
---|---|---|
Inizio | Invia richiesta a Downfall Coffee & Tea | Inviare richieste a Downfall Coffee & Tea e Fourth Coffee |
Richiesta dalla versione asincrona a Fourth Coffee completata | In attesa | Scarica i prezzi da Fourth Coffee |
Richiesta di Downfall Coffee & Tea completato | Scarica i prezzi da Downfall Coffee & Tea | Scarica i prezzi da Downfall Coffee & Tea |
Dopo Downfall Coffee & Tea's prezzi sono scaricati | Invia richiesta a Fourth Coffee | Confrontare i prezzi |
Confronto della versione asincrona completata | In attesa | Operazione completata |
Richiesta dalla versione sincrona a Fourth Coffee completata | Scarica i prezzi da Fourth Coffee | n/d |
Dopo il download dei prezzi di Fourth Coffee | Confrontare i prezzi | n/d |
Confronto della versione sincrona completata | Operazione completata | n/d |
Un altro esempio è un Web browser, ad esempio Microsoft Internet Explorer. Quando il browser scarica una pagina, spesso deve scaricare altre risorse, ad esempio immagini e file audio. In modalità asincrona, la pagina e le risorse associate possono essere richieste simultaneamente e scaricate man mano che diventano disponibili, anziché richiedere e scaricare la pagina e ogni risorsa alla volta.
Argomenti correlati
Di seguito sono riportati i collegamenti correlati.
Esercitazioni
Funzioni necessarie per configurare l'operazione asincrona
Funzioni che possono essere usate in modo asincrono
- FtpCreateDirectory
- FtpDeleteFile
- FtpFindFirstFile
- FtpGetCurrentDirectory
- Ftpgetfile
- FtpOpenFile
- FtpPutFile
- FtpRemoveDirectory
- FtpRenameFile
- FtpSetCurrentDirectory
- GopherFindFirstFile
- GopherOpenFile
- HttpEndRequest
- HttpOpenRequest
- HttpSendRequestEx
- Internet Connessione
- Internetopenurl
- InternetReadFileEx
Nota
Le funzioni FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile e FtpRenameFile usano il valore di contesto fornito nella chiamata alla funzione Internet Connessione.
Nota
WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni del server o i servizi utilizzano Servizi HTTP Di Microsoft Windows (WinHTTP).