Bagikan melalui


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.

Keuntungan

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 situs Downfall Coffee & Tea dan 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.

Aktivitas Versi sinkron Versi asinkron
Mulai Kirim permintaan ke Downfall Coffee & Tea Mengirim permintaan ke Downfall Coffee & Tea dan Fourth Coffee
Permintaan dari versi asinkron ke Fourth Coffee selesai Menunggu Unduh harga dari Fourth Coffee
Permintaan ke 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.

Berikut ini adalah tautan terkait.

Tutorial

Fungsi yang diperlukan untuk menyiapkan operasi asinkron

Fungsi yang dapat digunakan secara asinkron

Catatan

Fungsi FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile, dan FtpRenameFile menggunakan nilai konteks yang disediakan dalam panggilan ke fungsi Internet Koneksi.

 

Catatan

WinINet tidak mendukung implementasi server. Selain itu, tidak boleh digunakan dari layanan. Untuk implementasi atau layanan server, gunakan Microsoft Windows HTTP Services (WinHTTP).