Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 3103|Yanıt: 0

[Kaynak] .NET/C# HttpClient kaynak kodu basit analiz

[Bağlantıyı kopyala]
Yayınlandı 24.06.2023 13:05:41 | | | |
Gereksinimler: Mikroservis mimarilerinde, hizmetler arasındaki çağrılar genellikle HTTP protokolünü kullanır; genellikle HTTP istekleri yapmak veya kullanmak için HttpClient sınıfı kullanılırRefit.HttpClientFactory、WebApiClientCoreÜçüncü taraf kütüphaneler, HttpClient kapsülasyonuna dayalı olarak.

HttpClient kullanımı hakkında daha fazla bilgi için lütfen şu adrese bakınız:Bağlantı girişi görünür.

HttpClient kaynak kodu:Bağlantı girişi görünür.

HttpClient parametresiz yapıcıda, HttpClientHandler nesnesi varsayılan olarak örneklenir ve HttpClientHandler HttpMessageHandler soyut sınıfını devralır ve uygular.Varsayılan akış: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Kaynak kodu analizine göre, HttpMessageHandler'dan miras alınan nesne, HTTP isteklerini gönderen HttpClient'ın somut bir uygulamasıdır. HttpClientHttpRequestMessageNesne teslim edilir ve sonra alınırHttpResponseMessageNesne içerik döndürür.

Yeni bir TestHttpHandler sınıfı oluşturmayı deneyin, HttpMessageHandler soyutlama sınıfını devralıp SendAsync metodunu uygulayın, ardından bunu HttpClient yapıcısı'nda aşağıdaki kodla örnekleyin:

Aşağıda gösterildiği gibi:



HttpClient GET isteği göndermek için çağrılsa da, SendAsync yönteminin özel uygulaması HTTP isteği göndermez ve ağ akışı yoktur, bu yüzdenAğ kablosunu çıkarabilirsiniz ve program normal şekilde çalışır

daBir HttpClient nesnesi kullanıldığında, altta yatan soket hemen serbest bırakılmaz., bu da soket tükenme sorunlarına yol açabilir. Microsoft bu sorunun farkındadır ve HttpClient nesneleri oluşturmak için ASP.NET Core projelerinde IHttpClientFactory kullanılmasını önerir.IHttpClientFactory, fabrika tarafından oluşturulan HttpMessageHandler örneklerini kaynak tüketimini azaltmak için havuza biriktirir. Yeni bir HttpClient örneği oluşturduğunuzda, havuzda HttpMessageHandler örneğini tekrar kullanabilirsiniz(eğer hayatta kalma süresi henüz bitmediyse).

ASP.NET Core (XV), HTTP istekleri göndermek için HttpClient kullanır
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory for .NET:Bağlantı girişi görünür.

ASP.NET Core'un pipeline middleware kavramı vardır,Aslında, HttpClient ayrıca Delegating Handler yardımıyla pipeline middleware kavramına da sahiptir, aşağıdaki şekilde gösterildiği gibi:



Bu özelliği kullanarak, istek öncesi token doğrulamasını artırmak, istek ve yanıtlar için gereken süreyi kaydetmek ve yanıt verilerini sarmak gibi talepleri ve yanıtları kesebiliriz.

Sadece DelegatingHandler sınıfını devralın ve SendAsync yöntemini geçersiz kılın.



HTTP isteklerinin kaydedilmesi zaman alır ve kod şu şekildedir:

Aşağıdaki görselde gösterildiği gibi bir HttpClient oluşturmak ve bir istek göndermek için IHttpClientFactory arayın:



(Son)




Önceki:Web geliştirme için ajax-hook, tüm XMLHttpRequest taleplerini kesiyor
Önümüzdeki:.NET/C# metod parametresi NULL null
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com