Sdílet prostřednictvím


Asynchronní operace

Doba, po kterou aplikace potřebuje přístup k internetovému prostředku, závisí na řadě faktorů, například na používaném připojení, na serveru, na kterém se prostředek nachází, a na počtu uživatelů, kteří se pokoušejí získat přístup k prostředku. U aplikací, které stahují více prostředků nebo zpracovávají více úkolů (včetně jednoho nebo více stahování), může být čekání na dokončení každého stažení před přechodem na další úlohu extrémně neefektivní. Aby se snížila doba, po kterou aplikace musí čekat, může mnoho funkcí WinINet pracovat asynchronně.

V asynchronním režimu může aplikace spustit libovolnou funkci, která obsahuje kontextovou hodnotu jako jeden ze svých parametrů, a může pokračovat v provádění jiných příkazů nebo funkcí, zatímco aplikace čeká na dokončení úlohy funkce. Během dokončení úkolu je funkce zpětného volání stavu poskytovaná aplikací upozorněna na průběh úkolu a po jeho dokončení. V tuto chvíli může funkce zpětného volání stavu volat jiné funkce nebo provádět jiné požadované úlohy, které byly závislé na dokončení úkolu.

Při asynchronním volání WinINet neexistuje žádná afinita zpětného volání: Volání může začínat z jednoho vlákna, ale jakékoli jiné vlákno může přijmout zpětné volání.

Výhody

Asynchronní provoz má několik výhod. Například:

  • Stahování více internetových prostředků současně.

    Můžete se připojit k více internetovým prostředkům najednou a stáhnout je, jakmile budou dostupné.

  • Zvýšení výkonu aplikace

    Aplikace používající funkce WinINet asynchronně nemusí čekat na dokončení požadavku, takže aplikace může provádět další úlohy, které nejsou závislé na požadavku, a tím zlepšit celkový výkon aplikace.

  • Sledujte průběh stahování.

    Funkce zpětného volání stavu obdrží oznámení, když zpracovává požadavek. V případě potřeby může vaše aplikace používat informace poskytované funkcí zpětného volání stavu k tomu, aby byl uživatel informován o průběhu operace nebo aby přerušil požadavky, které trvá příliš dlouho.

Scénáře

Řekněme, že vaše aplikace potřebuje stáhnout ceny kávy z downfall Coffee & Čaj a čtvrté kávové stránky a porovnat ceny. Web Fourth Coffee obvykle má pomalejší dobu odezvy, takže aplikace by měla nejprve stáhnout informace z Downfall Coffee & Čaj.

Vyvíjí se dvě verze aplikace. Jeden funguje synchronně, nejprve stahuje ceny z downfall Coffee & čaj a pak ceny z webu Fourth Coffee. Druhý funguje asynchronně, odesílá požadavky na weby a stahuje ceny, jakmile budou dostupné.

Následující tabulka ukazuje, co by se stalo, kdyby byl web Fourth Coffee v určitém dni rychlejší.

Událost Synchronní verze Asynchronní verze
Začínat Odeslat požadavek na downfall Coffee & čaj Odeslání požadavků na downfall Coffee & čaj a čtvrtá káva
Požadavek z asynchronní verze na dokončenou čtvrtou kávu Čekání Stáhnout ceny od Fourth Coffee
Žádost o ukončení kávy & čaj byl dokončen Stáhnout ceny z Downfall Coffee & Čaj Stáhnout ceny z Downfall Coffee & Čaj
Po downfall Coffee & Čaj ceny se stáhnou Odeslání požadavku na čtvrtou kávu Porovnání cen
Porovnání asynchronní verze bylo dokončeno. Čekání Operace byla dokončena.
Žádost z synchronní verze na dokončenou čtvrtou kávu Stáhnout ceny od Fourth Coffee není k dispozici
Po stažení cen čtvrté kávy Porovnání cen není k dispozici
Dokončené porovnání synchronní verze Operace byla dokončena. není k dispozici

 

Dalším příkladem by byl webový prohlížeč, například Microsoft Internet Explorer. Když prohlížeč stáhne stránku, často potřebuje stáhnout další prostředky, jako jsou obrázky a zvukové soubory. V asynchronním režimu může být stránka a související prostředky požadovány současně a stahovány, jakmile budou k dispozici, místo vyžádání a stažení stránky a jednotlivých prostředků po jednom.

Tady jsou související odkazy.

Cvičení

Funkce potřebné k nastavení asynchronní operace

Funkce, které je možné použít asynchronně

Poznámka

FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFilea FtpRenameFile používají kontextovou hodnotu zadanou ve volání funkce InternetConnect.

 

Poznámka

WinINet nepodporuje implementace serveru. Kromě toho by se nemělo používat ze služby. Pro implementace serverů nebo služby použijte microsoft Windows HTTP Services (WinHTTP).