Reikalavimai: Tame pačiame serveryje procesai bendrauja tarpusavyje naudodami anoniminius vamzdynus, pavadintus vamzdynus, atminties atvaizdavimo failus, HTTP, TCP, standartinius įvesties / išvesties srautus ir kt. Kartais serveriams reikia įdiegti kelias programas, o programos iš tikrųjų gali bendrauti tarpusavyje naudodamos gRPC ir Unix domenų lizdus.
Peržiūra
Unix domeno lizdai
Unix domeno lizdai (UDS), vietiniai lizdai arba tarpprocesinio ryšio (IPC) lizdai yra ryšio galiniai punktai, kurie keičiasi duomenimis tarp procesų, veikiančių toje pačioje Unix arba Unix tipo operacinėje sistemoje.
Pavadinimas Unix domeno lizdas reiškia domeno parametro reikšmę, perduotą funkcijai, kuri sukūrė lizdo sistemos išteklius. Taip pat pasirinktas tas pats ryšio domenas. [ 1 ] AF_UNIXAF_LOCAL
Leistinos typeUDS parametrų reikšmės:
- SOCK_STREAM (palyginti su TCP) – naudojamas į srautą orientuotiems lizdams
- SOCK_DGRAM (palyginti su UDP) – į datagramą orientuotas lizdas, skirtas pranešimų riboms išsaugoti (kaip ir daugumoje UNIX diegimų, UNIX domeno datagramų lizdai visada yra patikimi ir nepertvarko datagramų)
- SOCK_SEQPACKET (palyginti su SCTP) – nuoseklūs paketų lizdai, skirti ryšiams, kurie išsaugo pranešimų ribas ir pristato pranešimus tokia tvarka, kokia jie siunčiami
UDS įrankis yra standartinis POSIX operacinės sistemos komponentas.
Kodėl verta naudoti Unix domeno lizdus?
Unix domeno lizdai leidžia bendrauti tarp procesų viename kompiuteryje. Taigi, kodėl turėtumėte pasirinkti juos per TCP / IP? Pavyzdžiui, TCP/IP galite naudoti atgalinį adresą (localhost) vieno serverio ryšiui. Kodėl sistemoje "Windows" turėtumėte rinktis juos, o ne "Windows" pavadinimų vamzdynus?
Apskritai, yra keletas priežasčių, kodėl galite pasirinkti naudoti UDS, o ne TCP/IP tarpprocesiniam ryšiui:
- Unix domeno lizdai paprastai turi mažesnes pridėtines išlaidas ir didesnį perdavimo greitį nei naudojant TCP/IP
- TCP/IP lizdai yra baigtinis išteklius, o Unix domenų lizdai neturi griežtų ribų
- Unix domeno lizdai yra failo pavidalu, todėl lengva "atrasti" žinomus kelius
- Integracija su failų sistemomis taip pat prideda papildomą saugumo lygį (jei neturite prieigos prie failo kelio, negalite pasiekti lizdo)
Pirmasis punktas yra lengvai suprantamas - greitai "Google" parodys, kad UDS ir TCP/IP etalonai visada yra geresni nei UDS, nes jie turi ne tik žymiai mažesnę delsą, bet ir žymiai didesnį pralaidumą. Taip yra daugiausia dėl to, kad UDS yra optimizuotas ryšiui su tuo pačiu serveriu,IP ryšiui localhost turi pereiti per IP rietuvę tiek siuntėjo, tiek gavėjo pusėse。
TCP/IP lizdai yra baigtinis išteklius; Vienu metu galite naudoti tik iki 65 535 lizdų. Jei pridėsite problemą, maksimalus lizdų skaičius, kuris iš tikrųjų TIME_WAIT, gali būti daug mažesnis už šią vertę. Localhost ryšys taip pat sunaudoja šio telkinio lizdus. Naudojant UDS sumaniai išvengiama šios problemos; Tai leidžia bendrauti neišeikvojant TCP/IP lizdų.
serveris
Sukurkite naują .NET 8 konsolės projektą, pakeiskite SDK į Microsoft.NET.Sdk.Web ir sukonfigūruokite jį taip:
Greet.proto sukonfigūruotas taip:
Kodas yra toks:
Prasidėjus kompiliacijai, kaip parodyta toliau:
klientas
Sukurkite naują .NET 8 konsolės projektą ir nurodykite šias bibliotekas:
gRPC sąsajos iškvietimo būdas vadinamas 10 kartų, o kiekvienas skambutis iškviečiamas 200 milisekundžių, o kodas yra toks:
Pradėkite projektą ir baigę vykdymą, kaip parodyta paveikslėlyje žemiau:
Nuoroda:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas. |