Operasi Asinkron
Jumlah waktu yang dibutuhkan aplikasi untuk mengakses sumber daya Internet tergantung pada sejumlah faktor, seperti koneksi yang digunakan, server tempat sumber daya berada, dan jumlah pengguna yang mencoba mengakses sumber daya. Untuk aplikasi yang mengunduh beberapa sumber daya atau menangani beberapa tugas (termasuk satu atau beberapa unduhan), menunggu setiap unduhan selesai sebelum melanjutkan ke tugas berikutnya bisa sangat tidak efisien. Untuk mengurangi jumlah waktu aplikasi harus menunggu, banyak fungsi WinINet dapat beroperasi secara asinkron.
Dalam mode asinkron, aplikasi dapat menjalankan fungsi apa pun yang mencakup nilai konteks sebagai salah satu parameternya dan dapat terus menjalankan perintah atau fungsi lain saat aplikasi menunggu fungsi menyelesaikan tugasnya. Saat tugas selesai, fungsi panggilan balik status yang disediakan oleh aplikasi diberi tahu tentang kemajuan tugas dan ketika telah selesai. Saat ini, fungsi panggilan balik status dapat memanggil fungsi lain atau melakukan tugas lain yang diperlukan yang bergantung pada penyelesaian tugas.
Tidak ada afinitas utas panggilan balik saat Anda memanggil WinINet secara asinkron: panggilan mungkin dimulai dari satu utas, tetapi utas lain dapat menerima panggilan balik.
Manfaat
Ada beberapa manfaat untuk beroperasi secara asinkron. Misalnya:
Mengunduh beberapa sumber daya Internet secara bersamaan.
Anda dapat terhubung ke beberapa sumber daya Internet secara bersamaan dan mengunduhnya saat tersedia.
Meningkatkan performa aplikasi Anda.
Aplikasi yang menggunakan fungsi WinINet secara asinkron tidak harus menunggu sampai permintaan selesai, sehingga aplikasi bebas untuk melakukan tugas lain yang tidak tergantung pada permintaan, sehingga meningkatkan performa aplikasi secara keseluruhan.
Pantau kemajuan unduhan.
Fungsi panggilan balik status menerima pemberitahuan saat memproses permintaan. Jika diperlukan, aplikasi Anda dapat menggunakan informasi yang disediakan oleh fungsi panggilan balik status tersebut untuk memberi tahu pengguna tentang kemajuan operasi atau untuk mengganggu permintaan yang membutuhkan waktu terlalu lama untuk diselesaikan.
Skenario
Katakanlah aplikasi Anda perlu mengunduh harga kopi dari Downfall Coffee & Tea dan situs Fourth Coffee dan membandingkan harga. Situs Fourth Coffee biasanya memiliki waktu respons yang lebih lambat, sehingga aplikasi Anda harus mengunduh informasi dari Downfall Coffee & Tea terlebih dahulu.
Dua versi aplikasi dikembangkan. Satu bekerja secara sinkron, pertama-tama mengunduh harga dari situs Downfall Coffee & Tea dan kemudian harga dari situs Fourth Coffee. Yang kedua bekerja secara asinkron, mengirim permintaan ke kedua situs dan mengunduh harga ketika tersedia.
Tabel berikut menggambarkan apa yang akan terjadi jika situs Fourth Coffee lebih cepat pada hari tertentu.
Peristiwa | Versi sinkron | Versi asinkron |
---|---|---|
Mulai | Kirim permintaan ke Downfall Coffee & Tea | Kirim permintaan ke Downfall Coffee & Tea dan Fourth Coffee |
Permintaan dari versi asinkron ke Fourth Coffee selesai | Menunggu | Unduh harga dari Fourth Coffee |
Permintaan untuk Downfall Coffee & Tea selesai | Unduh harga dari Downfall Coffee & Tea | Unduh harga dari Downfall Coffee & Tea |
Setelah Downfall Coffee & Harga Teh diunduh | Kirim permintaan ke Fourth Coffee | Bandingkan harga |
Perbandingan versi asinkron selesai | Menunggu | Operasi selesai |
Permintaan dari versi sinkron ke Fourth Coffee selesai | Unduh harga dari Fourth Coffee | N/a |
Setelah harga Fourth Coffee diunduh | Bandingkan harga | N/a |
Perbandingan versi sinkron selesai | Operasi selesai | N/a |
Contoh lain adalah browser web seperti Microsoft Internet Explorer. Ketika browser mengunduh halaman, sering kali perlu mengunduh sumber daya lain, seperti gambar dan file suara. Dalam mode asinkron, halaman dan sumber daya terkait dapat diminta secara bersamaan dan diunduh saat tersedia, alih-alih meminta dan mengunduh halaman dan setiap sumber daya satu per satu.
Topik Terkait
Berikut ini adalah tautan terkait.
Tutorial
- Membuat Fungsi Panggilan Balik Status
Fungsi yang diperlukan untuk menyiapkan operasi asinkron
- InternetBuka
- InternetSetStatusCallback
Fungsi yang dapat digunakan secara asinkron
- FtpCreateDirectory
- FtpDeleteFile
- FtpFindFirstFile
- FtpGetCurrentDirectory
- FtpGetFile
- FtpOpenFile
- FtpPutFile
- FtpRemoveDirectory
- FtpRenameFile
- FtpSetCurrentDirectory
- GopherFindFirstFile
- GopherOpenFile
- HttpEndRequest
- httpOpenRequest
- httpSendRequestEx
- InternetConnect
- InternetOpenUrl
- InternetReadFileEx
Nota
FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurr fungsi, FtpDeleteFile, dan FtpRenameFi le menggunakan nilai konteks yang disediakan dalam panggilan ke fungsi InternetConnect.
Nota
WinINet tidak mendukung implementasi server. Selain itu, tidak boleh digunakan dari layanan. Untuk implementasi atau layanan server, gunakan Microsoft Windows HTTP Services (WinHTTP).