Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 537|Atsakyti: 1

[Šaltinis] HttpClient .NET/C# naudoja Http/2.0 versijos protokolą

[Kopijuoti nuorodą]
Publikuota: 2025-8-31 21:16:47 | | | |
Reikalavimai: Dauguma svetainių dabar daugiausia naudoja Http/1.1 ir Http/2.0 versijų protokolus, o svetainėse, kurios palaiko tik HTTP/2 protokolo versiją, naudojant HttpClient užklausoms siųsti pagal numatytuosius nustatymus, bus pateikta System.Net.Http.Http.Http.HttpRequestException: Siunčiant užklausą įvyko klaida. ---> System.IO.IOException: Neįmanoma nuskaityti duomenų iš transportavimo ryšio: Jūsų pagrindinio kompiuterio programinė įranga nutraukė užmegztą ryšį. ---> System.Net.Sockets.SocketException (10053): pagrindinio kompiuterio programinė įranga nutraukia užmegztą ryšį. System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError klaida, Bulio logikaAsyncThrow).

HTTP protokolo istorija

Chronologija



HTTP/0.9

Pasenęs HTTP/0.9 buvo pirmoji HTTP protokolo versija, gimusi 1989 m. Tai labai paprasta, leidžianti klientui siųsti GET užklausą ir nepalaiko užklausos antraštės. Kadangi protokolo antraštės nėra, HTTP/0.9 gali palaikyti tik vieno tipo turinį - paprastą tekstą. Serveris gali atsakyti tik į HTML formato, o ne kitų formatų eilutes. Kai serveris baigia siųsti, TCP ryšys uždaromas.
HTTP/0.9 turi tipišką bebūseną, kai kiekvienas apsilankymas apdorojamas atskirai ir atjungiamas, kai apdorojimas baigtas. Jei prašomo puslapio nėra, klaidų kodai negrąžinami.

HTTP/1

HTTP/1 yra bendras HTTP 1.0 ir HTTP 1.1 terminas, reiškiantis HTTP protokolo versijas, kurios yra atitinkamai 1.0 ir 1.1.
HTTP 1.0 buvo antroji HTTP protokolo versija ir vis dar plačiai naudojama šiandien. Ji atliko keletą patobulinimų ir patobulinimų, pagrįstų HTTP/0.9, įskaitant:

Daugiau formatų, tokių kaip vaizdai, vaizdo įrašai, dvejetainiai failai, gali būti siunčiami ne tik tekstas
Viršuje ir POST užklausos metodai buvo pridėti
Pakeistas HTTP užklausų ir atsakymų formatas. Be duomenų dalies, kiekviename pranešime turi būti HTTP antraštė, apibūdinanti kai kuriuos metaduomenis, t. y. pridedama užklausos antraštės informacija
Pridėtos funkcijos, tokios kaip atsakymo būsenos kodas, kelių simbolių rinkinio palaikymas, autorizacija, talpykla ir turinio kodavimas
Nors tai vis dar yra protokolas be būsenos, ilgus ryšius galima palaikyti prie užklausos pridedant antraštę "Ryšys: išlaikyti gyvą"

HTTP 1.1

HTTP 1.1 yra standartizuotas protokolas, o HTTP 1.1 pašalina daug dviprasmybių ir pateikia keletą patobulinimų.

ypatumas

Talpyklos apdorojimas, HTTP 1.1 pristato daugiau talpyklos valdymo strategijų, tokių kaip Entity tag, If-Unmodified-Since, If-Match, If-None-Match ir kt., ir daugiau pasirenkamų talpyklos antraščių, skirtų valdyti talpyklos politiką.
Pralaidumo optimizavimas ir tinklo ryšių naudojimas užklausos antraštėje įveda diapazoną, kuris leidžia prašyti tik vienos išteklių dalies, tai yra, grąžinti 206 būsenos kodą, kuris leidžia kūrėjams lengviau laisvai pasirinkti visiškai išnaudoti pralaidumą ir nuorodas, ir gali naudoti diapazoną ir turinio diapazoną, kad sukurtų lūžio taško atnaujinimo funkciją.
Pranešimų apie klaidas valdymas, į HTTP 1.1 pridėti 24 nauji klaidų būsenos kodai.
Pridėjus pagrindinio kompiuterio antraštę, serveriuose su tuo pačiu IP adresu galima sukonfigūruoti skirtingus domenų vardus.
Palaikykite ilgus ryšius, HTTP 1.1 palaiko ilgus ryšius, TCP ryšiu galima perduoti kelias HTTP užklausas ir atsakymus, sumažinant ryšių užmezgimo ir uždarymo sąnaudas ir vėlavimą, o Connection:keep-alive yra įjungtas pagal numatytuosius nustatymus HTTP 1.1, o bendrosios naršyklės leidžia vienu metu sukurti 6 ilgas nuorodas tam pačiam domeno vardui.
Pridėta vamzdžių technologija, leidžianti išsiųsti antrą užklausą prieš visiškai išsiunčiant pirmąjį atsakymą, siekiant pagerinti eilių blokavimą, tačiau atsakymų tvarka vis tiek bus grąžinta užklausų tvarka.
Palaikykite atsakymo skaidymą, nustatydami perdavimo kodavimą: fragmentuotas atsakymui, leidžiantis atsakymo duomenis padalyti į kelias dalis, o serveris gali kuo greičiau išleisti buferį, kad gautų didesnį atsakymo greitį.

HTTP 2.0

HTTP 2.0 pasižymi geresniu našumu, o dabar tinklalapiai tampa vis sudėtingesni ir netgi išsivysto į unikalias programas, medijos atkūrimo kiekis, scenarijų dydis, siekiant pagerinti sąveiką, taip pat labai padidėjo, o daugiau duomenų perduodama per HTTP užklausas, todėl HTTP 2.0 padarė daug optimizacijų tinklo efektyvumui.

ypatumas

Dvejetainis kadrų padalijimas, HTTP 2.0 yra dvejetainis protokolas, o ne tekstinis protokolas, kuris padalija visą perduodamą informaciją į mažesnius pranešimus ir rėmelius ir koduoja juos dvejetainiu formatu.
Multipleksavimas, lygiagrečios užklausos gali būti apdorojamos toje pačioje nuorodoje, visos prieigos tuo pačiu domeno vardu yra iš to paties TCP ryšio, HTTP pranešimai suskaidomi į nepriklausomus rėmus, o serveris iš naujo surenka pranešimus pagal identifikatorius ir antraštes, pašalindamas HTTP 1.1 tvarką ir blokavimo apribojimus.
Suglaudinus antraštes, kurios dažnai yra panašios į užklausų seriją, pašalinamos dubliavimo ir pasikartojančių duomenų perdavimo išlaidos.
Serverio pusės stūmimas, serveris gali aktyviai perkelti išteklius klientui be aiškaus kliento prašymo.

HTTP 3.0

HTTP 3.0 šiuo metu yra formulavimo ir testavimo etape, ateityje yra naujas HTTP protokolas, HTTP 3.0 protokolas veikia ant QUIC protokolo, yra pagrįstas UDP, kad būtų pasiektas patikimas perdavimas, kompromisinis perdavimo greitis ir perdavimo patikimumas bei optimizuotas, naudojant UDP bus išvengta TCP eilės blokavimo problemos ir pagreitintas tinklo perdavimo greitis, tačiau taip pat reikia pasiekti patikimą perdavimo mechanizmą, HTTP 3.0 nėra HTTP 2.0, HTTP plėtinys 3.0 bus visiškai naujas protokolas.

HttpClientHandler VS SocketsHttpHandler

Numatytoji pranešimų apdorojimo programa, kurią "HttpClient" naudoja ".NET Framework" ir ".NET Core 2.0" ir ankstesnėse versijose, yra "HttpClientHandler".

Pradedant nuo .NET Core 2.1, klasėsSocketsHttpHandler teikia aukštesnio lygio HTTP tinklo klasę(pvz., "HttpClient"). "SocketsHttpHandler" naudojimas turi daug privalumų:

Našumas žymiai pagerėjo, palyginti su ankstesniais diegimais.
Pašalinkite platformos priklausomybes, kad supaprastintumėte diegimą ir aptarnavimą. Pavyzdžiui, "libcurl" nebepriklauso nuo ".NET Core", skirtos "MacOS", ir ".NET Core", skirtos "Linux".
Nuoseklus elgesys visose .NET platformose.

.NET 9 "HttpClientFactory" naudoja "SocketsHttpHandler" kaip pagrindinę apdorojimo programą

HttpClientFactory leidžia konfigūruoti HttpClient vamzdynus pavadintiems ir įvestiems HttpMessageHandler objektams. Vidinė apdorojimo programa arba apdorojimo programa, kuri iš tikrųjų siunčia užklausas tinkle, vadinama pagrindine apdorojimo programa. Jei nesukonfigūruota, ši apdorojimo programa anksčiau visada buvo HttpClientHandler. Nors numatytoji pagrindinė apdorojimo programa yra diegimo informacija, yra vartotojų, kurie ja pasikliauja. Pavyzdžiui, kai kurie vartotojai perduoda pagrindinę apdorojimo programą į HttpClientHandler parametrų ypatybes, pvz., ClientCertificates, UseCookies ir UseProxy.

Saitas:Hipersaito prisijungimas matomas.

Visuotinė konfigūracija reikalauja HTTP protokolo versijos

Kodas yra toks:

DefaultRequestVersionNumatytasis parametras yra HttpVersion.Version11

Ypatybė DefaultRequestVersion nurodo numatytąją HTTP versiją, kuri bus naudojama užklausoms, siunčiamoms naudojant šį HttpClient egzempliorių, kai ji sukuria siunčiamą HttpRequestMessage, ypač iškviečiant 、、、GetStreamAsyncGetAsyncGetByteArrayAsync, PatchAsyncGetStringAsync, "PostAsync" ir "PutAsync".

Ypatybė DefaultRequestVersionNetaikoma "SendAsync" metodui。 Parametras HttpRequestMessage, perduotas metodui SendAsync kaip parametras, turi savo ypatybę Version, kuri valdo užklausai naudojamą HTTP versiją.

Saitas:Hipersaito prisijungimas matomas.

HttpVersionPolicy derybų strategija

RequestVersionOrLower: naudokite pageidaujamą versiją arba atnaujinkite versiją į žemesnę versiją (bet ne naujesnę nei prašoma). Tai numatytasis veikimas. Paprasčiau tariant, daugiausiai naudojama protokolo versija yra dabartinė versija, o jei dabartinė protokolo versija nepalaikoma, ji bus sumažinta.
RequestVersionArbaHigher: naudokite aukščiausią serverio palaikomą versiją, bet ne žemesnę už prašomą versiją. Tai reiškia, kad atnaujinimai leidžiami, o žemesnės nei pageidaujamos versijos versijos sumažinimai neleidžiami. Paprasčiau tariant, kai tik įmanoma, bendravimui naudokite aukštesnės versijos protokolus.
Užklausos versijaTiksli: Griežtai naudokite prašomą versiją, neleidžiama atnaujinti ar sumažinti.

HttpClient naudoja Http/2.0 versijos protokolą

Bandymo kodas yra toks:

Užklausoje naudojama 1.1 versija, o galutinis klientas ir serveris derasi dėl 2.0 protokolo naudojimui ryšiui, todėl galutinis atsakymas yra 2.0 versija, kaip parodyta paveikslėlyje žemiau:



Nuoroda:

Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.




Ankstesnis:MinIO saugykla (iii) Kopijuoti ir įkelti (perkelti) vietinius failus į minio kibirą
Kitą:.NET/C# konvertuoja PDF failus į vaizdus, pagrįstus ImageMagick, GhostScript
 Savininkas| Publikuota: 2025-8-31 21:46:27 |
Užklausa nutraukta: nepavyko sukurti SSL/TLS saugaus kanalo sprendimo
https://www.itsvse.com/thread-7612-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com