Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 3103|Jawab: 0

[Sumber] .NET/C# HttpClient kode sumber analisis sederhana

[Salin tautan]
Diposting pada 24/06/2023 13.05.41 | | | |
Persyaratan: Dalam arsitektur layanan mikro, panggilan antar layanan sering menggunakan protokol HTTP, biasanya menggunakan kelas HttpClient untuk membuat permintaan HTTP, atau menggunakannyaRefit.HttpClientFactory、WebApiClientCorePustaka pihak ketiga berdasarkan enkapsulasi HttpClient.

Untuk informasi selengkapnya tentang menggunakan HttpClient, silakan lihat:Login hyperlink terlihat.

Kode sumber HttpClient:Login hyperlink terlihat.

Dalam konstruktor tanpa parameter HttpClient, objek HttpClientHandler dibuat secara default, dan HttpClientHandler mewarisi dan mengimplementasikan kelas abstrak HttpMessageHandler.Alur default: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Menurut analisis kode sumber, objek yang diwarisi dari HttpMessageHandler adalah implementasi konkret dari HttpClient yang mengirim permintaan HTTP. HttpClient akanPesan Permintaan HttpObjek diteruskan dan kemudian diterimaPesan Tanggapan HttpObjek mengembalikan konten.

Coba buat kelas TestHttpHandler baru, mewarisi kelas abstraksi HttpMessageHandler dan menerapkan metode SendAsync, lalu membuat instance di konstruktor HttpClient, dengan kode berikut:

Seperti yang ditunjukkan di bawah ini:



Meskipun memanggil HttpClient untuk mengirim permintaan GET, implementasi spesifik dari metode SendAsync tidak mengirim permintaan HTTP, dan tidak ada alur jaringan, jadiAnda dapat mencabut kabel jaringan dan program akan bekerja normal

diSaat menggunakan objek HttpClient, soket yang mendasarinya tidak segera dilepaskan, yang dapat menyebabkan masalah kelelahan soket. Microsoft menyadari masalah ini dan merekomendasikan penggunaan IHttpClientFactory dalam proyek Inti ASP.NET untuk membuat objek HttpClient.IHttpClientFactory mengumpulkan instans HttpMessageHandler yang dibuat pabrik ke dalam kumpulan untuk mengurangi konsumsi sumber daya. Saat Anda membuat instans HttpClient baru, Anda dapat menggunakan kembali instans HttpMessageHandler di kumpulan(jika masa kelangsungan hidup belum berakhir).

ASP.NET Core (XV) menggunakan HttpClient untuk mengirim permintaan HTTP
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory untuk .NET:Login hyperlink terlihat.

ASP.NET Core memiliki konsep middleware pipeline,Faktanya, HttpClient juga memiliki konsep middleware pipeline dengan bantuan Delegating Handler, seperti yang ditunjukkan pada gambar di bawah ini:



Dengan menggunakan fitur ini, kita dapat mencegat permintaan dan respons, seperti meningkatkan otentikasi token sebelum permintaan, mencatat waktu yang diperlukan untuk permintaan dan respons, dan membungkus data respons.

Cukup warisi kelas DelegatingHandler dan ganti metode SendAsync.



Merekam permintaan HTTP membutuhkan waktu, dan kodenya adalah sebagai berikut:

Panggil IHttpClientFactory untuk membuat HttpClient dan mengirim permintaan, seperti yang ditunjukkan pada gambar berikut:



(Akhir)




Mantan:Ajax-hook untuk pengembangan web mencegat semua permintaan XMLHttpRequest
Depan:Parameter metode .NET/C# NULL null
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com