İplik havuzu
Projeyi her zaman asenkron olarak yeniden yazmak istemişimdir, ama ASP.NETMVC3 yazması çok zahmetli, .NET 4.5 ve ASP.NET MVC kodu nispeten basit, MS bunu her zaman sevmiş gibi görünüyor, her olgun şey, standartlaştırmak için birkaç versiyonu evrimleştirmek zorunda. ASP.NET neden MVC'de asenkron kullanmanız gerekiyor, IIS'in kullanıcı taleplerini işlemek için bir iş parçacığı havuzu var, yeni bir istek geldiğinde havuzdaki iş parçacıkları isteği işlemek üzere planlanacak, ancak eşzamanlılık yüksek olduğunda havuzdaki iş parçacıkları artık bu kadar çok isteği karşılayamaz ve havuzdaki her iş parçacığı isteği işlerken meşgul olur, isteği işleyen iş parçacığı engellenir ve iş parçacığı başka bir talebe hizmet sağlayamıyor, istek kuyruğu doluysa, web Sunucu isteği reddeder ve HTTP 503 yoğun bir durumdadır. Eğer yüksek gecikmeyle karşılaşıyorsanız, örneğin ağ işlemleri, bu iş parçacıklarının çoğu sadece durumu bekliyor ve çoğu zaman hiçbir şey yapmaz, bu tür iş parçacıkları daha iyi kullanmak için asenkron programlama kullanabilir.
Asenkron işleme
Örneğin, bir istek tamamlanması iki saniye süren bir ağ çağrısı oluşturursa, istek yapılırHem eşzamanlı hem de asenkron olarak çalıştırılması iki saniye sürer。 AmaAsenkron bir çağrı sırasında, sunucu ilk isteğin tamamlanmasını beklerken diğer isteklere yanıtı engellemez。 Bu nedenle, uzun süreli işlemleri çağıran birçok istek olduğunda, asenkron istekler sıraya girmesini engelleyebilir. .NET 4.5'te maksimum iş parçacığı havuzu 5000'dir ve await ve async anahtar kelimeler de .NET 4.5'te asenkron programlamayı kolaylaştırmak için eklenmiştir.
Senkron veya asenkron (MSDN'den alıntı)
- Genellikle, senkronizasyon boru hatları aşağıdaki koşullar sağlandığında kullanılır:
- Basit işlem veya kısa çalışma süresi.
- Sadelik, verimlilikten daha önemlidir.
- Bu işlem, çok fazla disk veya ağ yükü gerektiren işlemlerden ziyade öncelikle CPU işlemleridir. CPU bağlantılı işlemler için asenkron bir çalışma yöntemi kullanmak hiçbir fayda sağlamaz ve ayrıca daha fazla yük yaratır.
Genel olarak, asenkron boru hatları aşağıdaki koşullar karşılandığında kullanılır:
- İşlemler CPU bağımlısı yerine ağ veya G/Çıkış bağlantılıdır.
- Testler, engelleme işlemlerinin site performansında bir darboğaz olduğunu göstermiştir ve bu engelleme çağrıları için asenkron yöntemler kullanılarak IIS daha fazla isteğe hizmet verebilir.
- Paralellik, kodun basitliğinden daha önemlidir.
- Kullanıcıların uzun süreli istekleri iptal etmesini sağlayan bir mekanizma sağlamak istiyorsunuz.
ASP.NET MVC'de asenkron kontrolörler kullanır
|