.NET Core (C#) İleri Seviye Ağ & Performans

IHttpClientFactory & Socket Exhaustion (Soket Tükenmesi)

Her istekte "new HttpClient()" yazarak sunucunun tüm TCP soketlerini tüketip çökertme hatasıdır.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Her telefon görüşmesi için gidip yeni bir telefon hattı ve SIM kart alıp konuşma bitince SIM kartı atmaya benzer. Bir süre sonra operatörde hat kalmaz (TIME_WAIT soketleri dolar).

Teknik & Mimari Tanım

HttpClient IDisposable uygulasa da dispose edildiğinde altındaki TCP soketi hemen serbest kalmaz, TIME_WAIT durumunda 2-4 dakika bekler. Yoğun trafikte tüm portlar tükenir (Socket Exhaustion). IHttpClientFactory HttpMessageHandler havuzunu yöneterek soketleri güvenle yeniden kullanır.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“HttpClient doğrudan new ile üretilirse soket tükenmesine (socket exhaustion), Singleton yapılırsa DNS değişikliklerini algılayamamaya yol açar. Çözüm, ASP.NET Core IHttpClientFactory kullanmaktır. Factory, alttaki handler havuzunu rotasyonla yönetir.”

.NET Core (C#) Örnek Uygulaması
// Program.cs
builder.Services.AddHttpClient<IWeatherService, WeatherService>(client => {
    client.BaseAddress = new Uri("https://api.weather.com");
    client.Timeout = TimeSpan.FromSeconds(5);
});
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Her istek içinde "using var client = new HttpClient();" yazmak!