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

Rodinys: 19555|Atsakyti: 0

[Šaltinis] C# Didelio našumo TCP lizdo taikymo svarstymų rašymas

[Kopijuoti nuorodą]
Paskelbta 2016-11-02 09:53:37 | | |

Toliau pateikiama didelio našumo lizdo komponento diegimo problemų santrauka, jei jums reikia dirbti tik su tūkstančiais vienu metu veikiančių programų, tuomet galite atkreipti dėmesį į kodo rašymą, tačiau turite susidurti su dešimtimis tūkstančių ar dešimtimis tūkstančių vienu metu veikiančių programų. Manoma, kad šių klausimų santrauka labai padės rašyti šią paraišką.

SocketAsyncEventArgs

Šis objektas pateikiamas po .NET 2.0 sp1 ir daugiausia naudojamas didelio našumo lizdo duomenų siuntimo ir gavimo apdorojimui įgyvendinti (išsamesniam įvadui galite eiti į MSDN). Šis objektas pateikia tris būdus, kaip nustatyti susijusių siuntimų siuntimo ir gavimo buferius: SetBuffer(Int32, Int32), SetBuffer(Byte(), Int32, Int32, BufferList, pirmieji du negali egzistuoti kartu su pastaruoju ( MSDN paaiškina, kodėl). Kai nustatote buferį, nesvarbu, ar tai būtų SetBuffer(Byte(), Int32, Int32) ar BufferList, pabandykite jį nustatyti tik vieną kartą kiekvienam SocketAsyncEventArgs egzemplioriui per visą programos gyvavimo laiką, nes šis parametras gali būti labai daug išteklių. Kuriant SocketAsyncEventArgs, rekomenduojama nustatyti duomenų buferį per SetBuffer(Byte(), Int32, Int32), o tada naudoti SetBuffer(Int32, Int32). Kai norite nustatyti BufferList, geriausia nekeisti <byte>IList nurodyto baito[] šaltinio<ArraySegment>. Jei jis bus pakeistas, "SocketAsyncEventArgs" iš naujo susieis buferį ir turės įtakos efektyvumui.

SocketAsyncEventArgs telkinys

Kaip minėta aukščiau, stenkitės kiek įmanoma nekeisti "SocketAsyncEventArgs" nurodyto buferio, kad pasiektumėte šį tikslą. Todėl programos pradžioje būtina sukurti "SocketAsyncEventArgs" programų telkinį ir kiek įmanoma inicijuoti "SocketAsyncEventArgs" objektą. Be to, kad sumažėja "SocketAsyncEventArgs" kūrimas, baseinų kūrimas taip pat gali labai sutaupyti atminties. Pagrindinė priežastis yra ta, kad jūs negalite žinoti, kokio dydžio kiekvienas pranešimas yra, žinoma, galite suteikti pranešimą maksimalią ribą prieš projektavimą, ir tada nustatyti buferį, atitinkantį SocketAsyncEventArgs. Tačiau tai yra didelis atminties švaistymas, nes ne visi pranešimai turi maksimalų ilgį. Paskirstykite atitinkamą buferio dydį SocketAsyncEventArgs, teikite skambučius per telkinius ir lanksčiai rašykite pranešimus į vieną ar daugiau SocketAsyncEventArgs arba saugokite kelis pranešimus viename SocketAsyncEventArgs apdorojimui.

eilė

Matau, kad daugelis praktikų yra tiesiogiai atidaryti gijas arba mesti jas į gijų fondą gavus duomenis, o tai yra labai blogai, nes geriau nekontroliuoja gijų darbo, įskaitant gijų laukimą. Naudodami pasirinktines gijas + eiles galite kontroliuoti, kiek gijų yra atsakingos už kokį darbą, o eilėje esantis darbas egzistuos tik eilėje; Nebus daug gijų ar daug eilučių, todėl operacinė sistema praras išteklius dėl gijų planavimo.

Uždelstas duomenų konsolidavimas

Uždelstas sujungimo duomenų perdavimas yra priemonė išspręsti pernelyg didelių tinklo IO operacijų problemą, kuri nėra naudojama daugelyje scenarijų, tačiau ji yra įprasta žaidimų serveriuose. Kažkas uždavė man klausimą anksčiau, jei yra 400 vartotojų scenoje, kiekvieno vartotojo aplinkos pokytis pasakys kitiems vartotojams. Jei sujungti duomenys nebus naudojami, tai sukels labai baisią tinklo IO operaciją, kurią sunku atlikti IO operacijų numerių sistemai. Todėl būtina sujungti ir išsiųsti duomenis per atitinkamą dabartinės programos delsos intervalą.




Ankstesnis:c# EF užšifruoja duomenų bazės ryšio eilutes
Kitą:"Highcharts" rodo kelias serijas
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