1. Nonblocking I / O
Bagaimana sebuah program yang mempunyai
tugas lain untuk melakukan tugasnya sambil menunggu panggilan selesai (Misalnya,
memperbarui kursor "sibuk"atau
menanggapi permintaan pengguna)? Program-program ini mungkin tidak memiliki
waktu untuk menunggu pada pemanggilan metode yang diblokir. Untungnya, beberapa
mekanisme yang tersedia untuk menghindari perilaku yang tidak diinginkan
memblokir. Kita punya tiga masalah di sini: (1) I / O prechecking status, (2)
memblokir panggilan timeout, dan (3) Nonblocking soket.
2. Multiplexing
Setiap versi echo server berurusan
dengan hanya satu koneksi klien pada suatu waktu. Namun, sering terjadi
aplikasi membutuhkan kemampuan untuk melakukan I/O pada saluran secara
bersamaan. Misalnya,kita ingin menyediakan layanan pada beberapa port echo sekaligus. Masalah ini menjadi jelas segera
setelah Anda mempertimbangkan apa yang terjadi setelah server menciptakan dan mengikat
soket ke port masing-masing.
3. Threads
Pada bagian sebelumnya kita menunjukkan
bagaimana menggunakan Nonblocking I/O fitur .NET untuk menjalankan kode lain
sambil menunggu operasi socket. Ada dua kelemahan utama pendekatan ini Nonblocking. Pertama,
pemungutan suara untuk menyelesaikan metode socket cukup tidak efisien. Jika
Anda tidak cukup segera jajak pendapat, waktu yang hilang setelah operasi soket
selesai. Jika Anda terlalu cepat jajak pendapat, operasi tidak akan siap dan
Anda juga harus memeriksa blok atau kembali lagi nanti. Kedua, jumlah koneksi
yang dapat ditangani secara bersamaan terbatas. Jika menghubungkan klien
sementara yang lain sudah sedang dilayani, server tidak akan echo baru data client
sampai selesai dengan klien saat ini, meskipun klien baru akan mampu mengirim
data secepat ini menghubungkan. Jenis server dikenal sebagai server iteratif. Iterative
server menangani klien secara berurutan, finishing dengan satu klien sebelum
melayani berikutnya. Mereka bekerja terbaik untuk aplikasi dimana setiap klien
membutuhkan sedikit jumlah terbatas waktu koneksi server, namun jika waktu
untuk menangani klien bisa panjang, tunggu dialami oleh klien berikutnya
mungkin tidak bisa diterima.
4. Asynchronous I/O
Setelah Anda memahami perbedaan antara
sinkron dan asinkron asynchronous API. Secara ringkas, meliputi:
1.
Mulai Metode: panggilan mulai mengambil
(di samping argumen di sinkron versi metode) turunan AsyncCallback menentukan
callback yang metode dan sebuah objek yang mengandung semua negara yang
ditetapkan pengguna. Mulai kembali memanggil IAsyncResult yang dapat digunakan
untuk jajak pendapat atau memblokir di mengembalikan call.
2.
Negara callback: callback Metode
dilewatkan negara (mulai objek call argumen) yang tersimpan dalam properti
AsyncState dari contoh IAsyncResult.
3.
Akhir Metode: memanggil metode akhir
sebagai sebuah argumen mengambil contoh IAsyncResult dikembalikan oleh
permintaan panggilan balik, dan mengembalikan nilai yang sinkron versi
panggilan akan kembali.
Tidak ada komentar:
Posting Komentar