Ülesannete ajastamisel on ajastamise ülesandeks simuleerida HTTP-päringu algatamist ja avastada, et kui ülesandeid on rohkem, tundub ülesannete ajastamine nagu võlts surm.
Tavapärases Windowsi süsteemis on maksimaalne soovitud ühenduste arv 2, serveri operatsioonisüsteemis on vaikimisi 10. Kui sa seda samaaegset ühenduse piirangut ei muuda,Siis saab klient samaaegselt teha vaid 2 või 10 http-ühendusi。
System.Net.ServicePointManager.DefaultConnectionLimit See on maksimaalne ühenduste arv, mis saavad praeguse vaikeseade, nagu näidatud alloleval joonisel:
Kas HttpClientil on vaikimisi paralleelsuse piirang?
Enne .Net 4.0 versiooni tugines Http-operatsioonidele HttpWebRequest. Vaikimisi on sama saidi jaoks väga konservatiivne maksimaalne 2 samaaegsuse piirang, mis sageli põhjustab, et HttpWebRequests ei saavuta vaikimisi ideaalset kiirust (arvan, et see strateegia frustreerib paljusid kodeerijaid) ning App.config või ServicePointManager.DefaultConnectionLimit väärtust tuleb muuta.
MS tutvustas .Net 4.5 versioonis HttpClient klassi Http-operatsioonide haldamiseks ning arvasin, et HttpClient ja HttpWebRequest järgivad sama poliitikat. Täna, kui kirjutasin mitmelõimelist allalaadimisprogrammi, kasutasin 10 samaaegset ühendust ja avastasin, et HttpClientil pole vaikimisi samaaegset numbripiirangut.
Alguses arvasin, et on. Net 4.5 eemaldas selle samaaegsuse piirangu (lõppude lõpuks ei järgi seda standardit enam keegi), ja kirjutas vastava koodi WebRequestiga ümber, leides, et see oli endiselt 2 samaaegsuse piirang ning ServicePointManager.DefaultConnectionLimit väärtus oli samuti 2. See tähendab, et HttpClient ei ole HttpWebRequest samaaegsuse poliitika poolt kontrollitud ning süsteemitasemel samaaegsuse piirangut ei ole.
Lisaks leidsin testimise käigus, et HttpWebRequest ei kasuta vaikimisi maksimaalselt 2 samaaegsust kõigi aadresside puhul. NäiteksKohalike HTTP-aadresside ühenduste (http://localhost/*) paralleelsuse piirangut ei ole.。
C# mitmelõimelised keskkonnakõned HttpWebRequest samaaegse ühenduse piirangule
.net HttpWebRequest või WebClient puhul on mitmelõimelise ühenduse piirang, mis on vaikimisi 2 lauaarvuti operatsioonisüsteemides nagu Windows XP ja Windows 7 ning vaikimisi 10 serveri operatsioonisüsteemides. Kui sa seda samaaegset ühenduse piirangut ei muuda, saab klient korraga teha vaid 2 või 10 HTTP-ühendust. Mõne rakenduse, näiteks brauserite või ämblike puhul, on 2 või 10 samaaegsuse arv liiga väike ja mõjutab rakenduse jõudlust oluliselt. See samaaegse ühenduse piirang tuleneb HTTP 1.0 ja HTTP 1.1 standarditest, mis määravad maksimaalselt 2 samaaegset ühendust. Kuid peavoolu brauserid seda reeglit enam ei järgi, kuid .NET raamistik järgib seda reeglit vaikimisi.
Paljud artiklid ütlevad, et HttpWebRequesti asünkroonne ligipääs võib parandada samaaegset jõudlust, kuid olen testinud, et kui sa ei muuda vaikimisi samaaegsete ühenduste arvu, siis sünkroonne või asünkroonne ligipääsu jõudlus ei ole hea.
Saame app.config-is määrata ka maksimaalse samaaegsete ühenduste arvu järgmiselt:
Viiteartikkel
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
|