.NET’te HttpClient ve IHttpClientFactory

Çağlar Can SARIKAYA
1 min readOct 27, 2023

--

.NET uygulamalarında HTTP isteklerini göndermek için genellikle HttpClient veya IHttpClientFactory kullanılır. Ancak, hangi durumda hangisini kullanacağınızı bilmek önemlidir. Bu yazıda, her iki seçeneğin avantajlarını, dezavantajlarını ve ne zaman kullanılacağını inceleyeceğiz.

HttpClient ve IHttpClientFactory Nedir?

HttpClient, .NET'te HTTP isteklerini göndermek ve almak için kullanılan temel bir sınıftır. Diğer taraftan, IHttpClientFactory, HttpClient örneklerini oluşturmak ve yönetmek için bir fabrika deseni sunar.

Hangisini Hangi Durumda Kullanmalıyız?

Basit Uygulamalar ve Scriptler:

Eğer basit bir script yazıyor veya tek seferlik bir uygulama geliştiriyorsanız, HttpClient'in doğrudan kullanımı genellikle daha uygun olabilir.

using System.Net.Http;
//...
using (var client = new HttpClient())
{
var response = await client.GetAsync("https://api.example.com");
// ...
}

Büyük ve/veya Uzun Süreli Uygulamalar:

Büyük veya uzun süreli uygulamalarda, IHttpClientFactory kullanmanız önerilir, çünkü bu, HttpClient örneklerinin yaşam döngüsünü yönetir ve soket sızıntılarını önler.

public class MyService
{
private readonly IHttpClientFactory _httpClientFactory;
//...
public async Task DoSomethingAsync()
{
var client = _httpClientFactory.CreateClient();
var response = await client.GetAsync("https://api.example.com");
// ...
}
}

Hangi Durumda Hangisini Kullanırsak Ne Sorunları Çıkartıyor?

HttpClient Kullanımı:

Her istek için yeni bir HttpClient örneği oluşturmak, soket kaynaklarının tükenmesine ve uygulamanızın performansının düşmesine neden olabilir.

IHttpClientFactory Kullanımı:

IHttpClientFactory, soket kaynaklarının daha etkili bir şekilde yönetilmesini sağlar ve bu tür kaynak sızıntılarını önler.

using Bloğu Neden Yeterli Olmuyor?

HttpClient'in using bloğu içinde kullanılması, altta yatan TCP/IP bağlantılarının hemen kapanmasını garantilemez. Bu, zaman içinde kaynak sızıntılarına neden olabilir.

--

--