Kami sedang menghadapi masalah yang menarik di StackOverflow.
Kami punya banyak tugas kecil "yang harus segera dikerjakan". Contohnya adalah memperbarui daftar "Pertanyaan Terkait". Apa yang telah kami lakukan di masa lalu adalah untuk membuntuti tugas-tugas tersebut ke beberapa halaman pengguna.
Ini tidak pernah ideal, tetapi itu tidak terlalu terlihat. Sekarang SO telah melewati tanda tanya 1.000.000, para pengguna yang sial mulai merasakannya.
Solusi alami adalah benar-benar mendorong tugas-tugas ini ke latar belakang. Ada dua cara luas untuk melakukan ini, saya sedang mempertimbangkan.
1. Di IIS sebagai Thread-Pool / Work-Queue khusus
Pada dasarnya, kami memutar beberapa (non- ThreadPool , agar tidak mengganggu IIS) dan meminta mereka melayani beberapa koleksi yang kami dorong ke dalam Funcs .
Pro besar di sini adalah kesederhanaan. Kami tidak perlu khawatir tentang mengatur apa pun, kami juga tidak harus memastikan beberapa layanan eksternal siap dan merespons.
Kami juga mendapatkan akses ke semua kode umum kami.
Kontra adalah, yah, bahwa kita seharusnya tidak menggunakan utas latar belakang. Keberatan yang saya tahu semuanya berpusat di sekitar kelaparan IIS (jika Anda menggunakan ThreadPool) dan utas mati secara acak (karena daur ulang AppPool).
Kami memiliki infrastruktur yang ada untuk menjadikan kematian utas acak sebagai non-masalah (kemungkinan untuk mendeteksi tugas telah ditinggalkan, pada dasarnya), dan membatasi jumlah utas (dan menggunakan utas non-ThreadPool) juga tidak sulit.
Pindah ke StackOverflow , karena tidak benar-benar dibahas di sini.
2. Sebagai Layanan
Baik solusi pihak ketiga, atau solusi kustom.
Pada dasarnya, kami akan menjalankan tugas melintasi batas proses untuk beberapa layanan dan lupakan saja. Agaknya kita menautkan beberapa kode, atau terbatas pada SQL + string koneksi mentah.
Pro adalah bahwa itu adalah "cara yang tepat" untuk melakukan ini.
Kontra adalah bahwa kita sangat terbatas dalam apa yang dapat kita lakukan, atau kita harus mengerjakan beberapa sistem untuk menjaga layanan ini sinkron dengan basis kode kita. Kita juga harus menghubungkan semua pemantauan dan kesalahan saat masuk, yang kita dapatkan secara gratis dengan opsi "In IIS".
Apakah ada manfaat atau masalah lain dengan pendekatan layanan?
Singkatnya, apakah ada masalah yang tak terduga dan tidak dapat diatasi yang membuat pendekatan # 1 tidak bisa diterapkan dan jika demikian, apakah ada layanan pihak ketiga yang baik yang harus kita perhatikan untuk pendekatan # 2?