Kumpulan benang
Saya selalu ingin menulis ulang proyek menjadi asinkron, tetapi ASP.NETMVC3 terlalu rumit untuk ditulis, .NET 4.5 dan kode MVC ASP.NET relatif sederhana, MS tampaknya selalu suka melakukan ini, setiap hal yang matang, harus mengembangkan beberapa versi untuk cenderung menstandarisasi. ASP.NET mengapa Anda perlu menggunakan asinkron di MVC, IIS memiliki kumpulan utas untuk memproses permintaan pengguna, ketika permintaan baru datang, utas dalam kumpulan akan dijadwalkan untuk memproses permintaan, namun, tetapi ketika konkurensi tinggi, utas dalam kumpulan tidak dapat lagi memenuhi begitu banyak permintaan, dan setiap utas dalam kumpulan sibuk saat memproses permintaan, utas yang memproses permintaan akan diblokir, dan utas tidak dapat menyediakan layanan ke permintaan lain, jika antrean permintaan penuh, web Server menolak permintaan dan berada dalam status sibuk HTTP 503. Jika Anda berurusan dengan beberapa latensi tinggi, seperti operasi jaringan, sebagian besar utas ini hanya menunggu status dan tidak melakukan apa-apa sebagian besar waktu, utas semacam itu dapat menggunakan pemrograman asinkron untuk memanfaatkannya dengan lebih baik.
Pemrosesan asinkron
Misalnya, jika permintaan menghasilkan panggilan jaringan yang membutuhkan waktu dua detik untuk diselesaikan, permintaan akan dibuatDibutuhkan dua detik untuk mengeksekusi secara sinkron dan asinkron。 TapiSelama panggilan asinkron, server tidak memblokir respons terhadap permintaan lain sambil menunggu permintaan pertama selesai。 Oleh karena itu, ketika ada banyak permintaan yang memanggil operasi yang berjalan lama, permintaan asinkron dapat mencegah permintaan mengantri. Di .NET 4.5, kumpulan utas maksimum adalah 5000, dan kata kunci await dan asinkron juga telah ditambahkan di .NET 4.5 untuk menyederhanakan pemrograman asinkron.
Sinkron atau asinkron (kutipan dari MSDN)
- Biasanya, alur sinkronisasi digunakan ketika kondisi berikut terpenuhi:
- Pengoperasian sederhana atau waktu pengoperasian yang singkat.
- Kesederhanaan lebih penting daripada efisiensi.
- Operasi ini terutama merupakan operasi CPU daripada operasi yang melibatkan banyak overhead disk atau jaringan. Menggunakan metode operasi asinkron untuk operasi terikat CPU tidak memberikan manfaat apa pun dan juga menghasilkan lebih banyak overhead.
Secara umum, alur asinkron digunakan ketika kondisi berikut terpenuhi:
- Operasi terikat jaringan atau terikat I/O, bukan terikat CPU.
- Pengujian telah menunjukkan bahwa operasi pemblokiran merupakan hambatan untuk performa situs, dan dengan menggunakan metode asinkron untuk panggilan pemblokiran ini, IIS dapat melayani lebih banyak permintaan.
- Paralelisme lebih penting daripada kesederhanaan kode.
- Anda ingin menyediakan mekanisme yang memungkinkan pengguna membatalkan permintaan yang berjalan lama.
ASP.NET menggunakan pengontrol asinkron di MVC
|