See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 537|Vastuse: 1

[Allikas] HttpClient .NET/C# versioonis kasutab Http/2.0 versiooniprotokolli

[Kopeeri link]
Postitatud 2025-8-31 21:16:47 | | | |
Nõuded: Enamik veebilehti kasutab nüüd peamiselt Http/1.1 ja Http/2.0 versiooniprotokolle; veebilehtedel, mis toetavad ainult HTTP/2 protokolli versiooni, kasutades vaikimisi HttpClientit päringute saatmiseks, kuvatakse System.Net.Http.Http.Http.RequestException: Taotluse saatmisel tekkis viga. ---> System.IO.IOException: Ei suuda andmeid transpordiühenduselt lugeda: Sinu hosti tarkvara on katkestanud loodud ühenduse. ---> System.Net.Sockets.SocketException (10053): Sinu hostis olev tarkvara katkestab loodud ühenduse. aadressil System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow).

HTTP protokolli ajalugu

Ajajoon



HTTP/0.9

Aegunud HTTP/0.9 oli HTTP protokolli esimene versioon, mis sündis 1989. aastal. See on äärmiselt lihtne, võimaldades kliendil saata GET-päringu ega toeta päringu päist. Kuna protokolli päist ei ole, toetab HTTP/0.9 ainult ühte tüüpi sisu – lihtteksti. Server saab vastata ainult HTML-formaadis olevatele stringidele, mitte teistele formaatidele. Kui server on saatmise lõpetanud, suletakse TCP ühendus.
HTTP/0.9-l on tüüpiline seisunditus, kus iga külastus töödeldakse iseseisvalt ja katkestatakse, kui töötlemine on lõppenud. Kui soovitud lehte ei eksisteeri, ei tagastata veakoode.

HTTP/1

HTTP/1 on kollektiivne termin HTTP 1.0 ja HTTP 1.1 kohta, mis viitab HTTP protokolli versioonidele, mis on vastavalt 1.0 ja 1.1.
HTTP 1.0 oli HTTP protokolli teine versioon ja on laialdaselt kasutusel tänaseni. See on teinud mitmeid täiustusi ja täiustusi, mis põhinevad HTTP/0.9-l, sealhulgas:

Rohkem formaate nagu pildid, videod ja binaarsed failid saab saata ka rohkem kui pelgalt teksti
Lisaks on lisatud ja POST-päringu meetodid
Muutsin HTTP-päringute ja vastuste formaati. Lisaks andmeosale peab iga suhtlus sisaldama HTTP-päist, mis kirjeldab mõningaid metaandmeid, st lisatakse päringupäise info
Lisatud funktsioonid nagu vastuse olekukood, mitme tähemärgi tugi, autoriseerimine, vahemälu ja sisukodeerimine
Kuigi see on endiselt olekuta protokoll, saab pikki ühendusi toetada, lisades päringule päise "Connection: keep-alive"

HTTP 1.1

HTTP 1.1 on standardiseeritud protokoll ning HTTP 1.1 kõrvaldab palju ebaselgust ja toob kaasa mitmeid täiustusi.

Omapära

Vahemälu töötlemine, HTTP 1.1 toob sisse rohkem vahemälu kontrolli poliitikaid, nagu Entity silt, If-Unmodified-Since, If-Match, If-None-Match jne, ning rohkem valikulisi vahemälu päisi vahemälu poliitika juhtimiseks.
Ribalaiuse optimeerimine ja võrguühenduste kasutamine toovad päringu päisesse vahemiku, mis võimaldab taotleda ainult ühte osa ressursist, st tagastada 206 olekukoodi, mis teeb arendajatel lihtsamaks vabalt valida ribalaiuse ja linkide täieliku kasutamise ning võimaldab kasutada Range ja Content-Range katkestuspunkti jätkamise funktsiooni loomiseks.
Veateadete haldus, HTTP 1.1-s on lisatud 24 uut veaoleku koodi.
Hosti päise lisamine võimaldab konfigureerida erinevaid domeeninimesid serverites, millel on sama IP-aadress.
Toetab pikki ühendusi, HTTP 1.1 toetab pikki ühendusi, TCP-ühendusel saab edastada mitmeid HTTP päringuid ja vastuseid, vähendades ühenduse loomise ja sulgemise viivitust, ning Connection:keep-alive on HTTP 1.1-s vaikimisi lubatud ning üldised brauserid võimaldavad samaaegselt luua 6 pikka linki sama domeeninime jaoks.
Lisatud torujuhtme tehnoloogia, mis võimaldab teise päringu saatmist enne esimese vastuse täielikku saatmist, et parandada järjekorra blokeerimist, kuid vastuste järjekord tagastatakse endiselt päringute järjekorras.
Toeta vastuse tükeldamist, seades Transfer-Encoding: chunked for chunked response, võimaldades vastuseandmeid jagada mitmeks osaks ning server saab puhvri võimalikult kiiresti vabastada, et saavutada kiirem reageerimiskiirus.

HTTP 2.0

HTTP 2.0-l on parem jõudlus ning nüüd muutuvad veebilehed järjest keerukamaks ja arenevad isegi unikaalseteks rakendusteks, on meedia taasesituse hulk, skriptide suurus interaktsiooni parandamiseks oluliselt kasvanud ning HTTP päringute kaudu edastatakse rohkem andmeid, mistõttu on HTTP 2.0 teinud palju optimeerimisi võrgu efektiivsuse osas.

Omapära

Binaarkaadrite jagamine, HTTP 2.0 on binaarprotokoll, mitte tekstipõhine protokoll, mis jagab kogu edastatud info väiksemateks sõnumiteks ja raamideks ning kodeerib need binaarses vormis.
Multipleximist, paralleelseid päringuid saab töödelda samas lingis, kõik ligipääsud sama domeeninime all tulevad samast TCP-ühendusest, HTTP-sõnumid jagatakse sõltumatuteks raamideks ning server koondab sõnumid uuesti identifikaatorite ja päiste järgi, eemaldades HTTP 1.1 järjekorra ja blokeerimispiirangud.
Päiste tihendamine, mis on sageli sarnased päringute seerias, eemaldab duplikaatandmete duplikeerimise ja edastamise kulud.
Serveripoolse push'i puhul saab server proaktiivselt ressursse kliendile suruda ilma kliendi otsese taotluseta.

HTTP 3.0

HTTP 3.0 on praegu formuleerimis- ja testimisfaasis, on tulevikus uus HTTP protokoll, HTTP 3.0 protokoll töötab QUIC protokolli peal, põhineb UDP-l, et saavutada usaldusväärne edastus, kompromissi edastuskiirus ja usaldusväärsus ning optimeerida, UDP kasutamine aitab vältida TCP järjekorra blokeerimise probleemi ja kiirendada võrgu edastuskiirust, kuid vajab ka usaldusväärset edastusmehhanismi, HTTP 3.0 ei ole HTTP 2.0 laiendus, HTTP 3.0 saab olema täiesti uus protokoll.

HttpClientHandler VS SocketsHttpHandler

Vaikimisi sõnumikäitleja, mida HttpClient kasutab .NET Frameworkis ja .NET Core 2.0 ning varasemates versioonides, on HttpClientHandler.

Alustades .NET Core 2.1-st, klassidSocketsHttpHandler pakub kõrgema taseme HTTP võrguklassi(nt HttpClient). SocketsHttpHandler pakub mitmeid eeliseid:

Jõudlus on võrreldes varasemate lahendustega märkimisväärselt paranenud.
Likvideeri platvormi sõltuvused, et lihtsustada juurutamist ja teenust. Näiteks libcurl ei sõltu enam macOS-i .NET Core'ist ja Linuxi jaoks .NET Core'ist.
Järjepidev käitumine kõigil .NET platvormidel.

.NET 9-s kasutab HttpClientFactory peamise haldajana SocketsHttpHandlerit

HttpClientFactory võimaldab konfigureerida HttpClient torujuhtmeid nimetatud ja tüübitud HttpMessageHandler objektide jaoks. Kõige sisemine haldur ehk haldur, kes tegelikult saadab päringuid võrgus, nimetatakse master handleriks. Kui pole seadistatud, oli see haldur alati varem HttpClientHandler. Kuigi vaikimisi peakäsitleja on rakenduse detailid, on kasutajaid, kes sellele toetuvad. Näiteks mõned kasutajad suunavad peamise haldaja HttpClientHandleri seadete omadustele nagu ClientCertificates, UseCookies ja UseProxy.

Link:Hüperlingi sisselogimine on nähtav.

Globaalne konfiguratsioon taotleb HTTP protokolli versiooni

Kood on järgmine:

DefaultRequestVersionVaikimisi seadistus on HttpVersion.Version11

DefaultRequestVersion omadus määrab vaikimisi HTTP-versiooni, mida kasutatakse päringute saatmiseks selle HttpClient instantsi kaudu, kui see koostab saatmiseks HttpRequestMessage, kutsudes 、、、GetStreamAsyncGetAsyncGetByteArrayAsync, PatchAsyncGetStringAsync, PostAsync ja PutAsync.

DefaultRequestVersion omadusEi kehti SendAsync meetodile。 HttpRequestMessage parameeter, mis edastatakse SendAsync meetodile parameetrina, omab oma versiooni omadust, mis kontrollib HTTP versiooni, mida päringuks kasutatakse.

Link:Hüperlingi sisselogimine on nähtav.

HttpVersionPolicy läbirääkimispoliitika

RequestVersionOrLower: Kasuta soovitud versiooni või langeta madalamale versioonile (aga mitte kõrgemale kui soovitud versioon). See on vaikimisi käitumine. Lihtsalt öeldes on kõige rohkem kasutatud protokolliversioon praegune versioon ning kui praegust protokolliversiooni ei toetata, siis see alandatakse.
RequestVersionOrHigher: Kasutage serveri poolt toetatud kõrgeimat versiooni, kuid mitte madalamal kui soovitud versioon. See tähendab, et uuendused on lubatud ja allalaadimised alla soovitud versiooni ei ole lubatud. Lihtsustatult öeldes kasuta suhtluseks võimalusel kõrgema versiooniga protokolle.
RequestVersionExact: Kasuta rangelt soovitud versiooni, uuendusi ega alandamisi ei lubata.

HttpClient kasutab Http/2.0 versiooniprotokolli

Testkood on järgmine:

Päring kasutab versiooni 1.1 ning lõplik klient ja server lepivad läbirääkimisi 2.0 protokolli kasutamise üle, seega on lõplik vastus versioon 2.0, nagu alloleval joonisel näidatud:



Viide:

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.




Eelmine:MinIO salvestus (iii) Kopeeri, laadi üles (migreeri) kohalikud failid minio ämbrisse
Järgmine:.NET/C# teisendab PDF-id piltideks, tuginedes ImageMagickile, GhostScriptile
 Üürileandja| Postitatud 2025-8-31 21:46:27 |
Taotlus katkestatud: SSL/TLS turvalise kanali lahenduse loomine ebaõnnestus
https://www.itsvse.com/thread-7612-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com