.Net Uygulamalarında Kod İncelemesi (Code-Review)- Gün:3
Kurumumuz bünyesinde geliştirdiğimiz uygulamalardaki tecrübelerimiz ve ilgili uygulamalar üzerindeki best practise örneklerinin derlendiği .Net uygulamalarında kod incelemeleri yazı serimize devam ediyoruz.
HttpClient
Web Api işlemleri ile uğraşıyorsanız, .Net tarafından sıklıkla kullandığımız sınıftır HttpClient. HttpClient; genellikle tek bir requesten(istek) daha fazlasıyla kullanılmak üzere tasarlanmıştır.
Bu sınıfın, Default Headers’in ayarlanması ve tüm isteklerde uygulanmasını sağlamak gibi avantajı vardır. IDisposable arayüzünü implement edebildiği için, işi bittiği zaman oluşturulan örneğin(instance) dispose edilmesi sağlanır.
Disposable yapılarda, tanımlanan instance genellikle using ifadesi ile dispose edilir. Bu anlaşılabilir bir durumdur eğer disposable bir nesne varsa neden dispose etmeyelim ki.
Ama sorun bu noktadan sonra başlıyor.
using (var client = new HttpClient())
{
//kod içeriği
}
Yukarıdaki kullanımda gördüğünüz üzere, her request için bir HttpClient instance(örnek) oluşturuluyor. HttpClient örneğini dispose etseniz bile, temel soket bağlantısı hemen dispose edilmeyecektir.
Windows işletim sistemi kullanılan yapılarda yaklaşık 240 sn canlı kalacaktır, yani port hala kullanılıyor gözükecektir. Her bir yeni instance tanımlaması, yeni bir port oluşturacağından, soket portlarının tüketilme ihtimali olacaktır.
Bu tür kullanımlarda, her istek için yeni bir request tanımlamaktansa, singleton yaklaşımı ile, tek bir instance üzerinden kullanımını tercih ediyoruz.
Yeni yazımızda görüşmek üzere ..