Bir http işleyicisi / modülü yazarken, - bool IsReusable adında bir arabirim üyesi vardır .
Bu üyenin önemi nedir? Yanlış (veya doğru) olarak ayarlarsam bu, web uygulamasının geri kalanı için ne anlama gelir?
Bir http işleyicisi / modülü yazarken, - bool IsReusable adında bir arabirim üyesi vardır .
Bu üyenin önemi nedir? Yanlış (veya doğru) olarak ayarlarsam bu, web uygulamasının geri kalanı için ne anlama gelir?
Yanıtlar:
Bir işleyici için normal giriş noktası ProcessRequest yöntemidir. Bununla birlikte, sınıf yapıcısında, oluşturulması pahalı olan bazı örnek değerlerini bir araya getiren kodunuz olabilir.
Yeniden Kullanılabilir'i doğru olarak belirtirseniz, uygulama örneği önbelleğe alabilir ve ProcessRequest yöntemini her seferinde yeniden yapılandırmak zorunda kalmadan tekrar tekrar çağırarak başka bir istekte yeniden kullanabilir.
Uygulama, mevcut yükü idare etmesi gereken bu işleyicilerin çoğunu somutlaştıracaktır.
Dezavantajı, gerekli örnek sayısı şu anda mevcut olan örneklerden daha büyükse, daha fazla belleğin kullanılmasına neden olmalarıdır. Tersine, örnek değerleri GC döngülerinde hayatta kalacağından ve sık sık yeniden tahsis edilmelerine gerek kalmayacağından, görünür bellek kullanımlarını da azaltabilirler.
Başka bir uyarı, ProcessRequest yürütmesinin sonunda nesne durumunun, nesneyi yeniden kullanması için başka bir istek için istediğiniz gibi olduğundan emin olmanız gerektiğidir.
Ayrıca AnthonyWJones cevabı, HTTP işleyicisi getiri eğer true
içinIsReusable
o zaman tamamen iş parçacığı için güvenli olduğundan emin olmalıdır.
Belgelerde, yeniden kullanılabilir işleyicilerin aynı anda yeniden kullanılamayacağını gösteren hiçbir şey yoktur, ancak mevcut Microsoft uygulamaları bunları yalnızca art arda yeniden kullanıyor gibi görünmektedir. Ancak, en azından teoride, tek bir işleyici örneği birden çok istek tarafından aynı anda yeniden kullanılabilir, bu nedenle diğer eşzamanlı iş parçacıkları tarafından değiştirilebilecek hiçbir veriye güvenmemelisiniz.
IsReusable
parçacığı güvenliğini zorunlu kılma konusundaki bu ifade , AnthonyWJones cevabıyla çelişiyor gibi görünüyor. Üçüncü paragrafını anladığım kadarıyla (Uygulama ... kadar çok sayıda örnek oluşturacaktır), yeniden kullanılabilir bir işleyici örneği eşzamanlı olarak yeniden kullanılmayacak, yalnızca mevcut işlemeyi tamamladıktan sonra yeniden kullanılacaktır. Bu doğruysa, iş parçacığı açısından güvenli olmaya gerek yoktur.
Bu örnekte herhangi bir durumu saklamıyorsanız (yani: herhangi bir alanınız yoksa ("sınıf değişkenleri" olarak da bilinir)), onu yeniden kullanırken güvenli olmalısınız.
Güvenli tarafta olmak varsayılan olarak yanlıştır.