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

Vaade: 658|Vastuse: 5

[Nõuanded] .NET/C# protsessid suhtlevad gRPC ja Unix domeenipesade vahel

[Kopeeri link]
Postitatud 2025-8-11 20:24:04 | | | |
Nõuded: Samas serveris suhtlevad protsessid omavahel anonüümsete torujuhtmete, nimetatud torujuhtmete, mälukaardistusfailide, HTTP, TCP, standardsete sisend/väljundvoogude jms kaudu. Mõnikord peavad serverid juurutama mitut rakendust ning rakendused saavad omavahel suhelda gRPC ja Unix domeenipesade kaudu.

Läbivaatamine
.NET/C# NamedPipe-põhine NamedPipe protsessidevaheline suhtlus [lähtekoodiga]
https://www.itsvse.com/thread-10628-1-1.html

.NET/C# vanem-laps protsessid suhtlevad MemoryMappedFile abil
https://www.itsvse.com/thread-10983-1-1.html

.NET/C# vanem-laps protsessid suhtlevad standardsete sisend/väljundi voogude kaudu
https://www.itsvse.com/thread-10982-1-1.html

Unix-domeeni pesad

Unix domeeni pesad (UDS), kohalikud soklid või protsessidevahelise kommunikatsiooni (IPC) pesad on kommunikatsiooni lõpp-punktid, mis vahetavad andmeid protsesside vahel, mis töötavad samas Unix- või Unixilaadses operatsioonisüsteemis.

Nimi Unix domeeni pesa viitab domeeni parameetri väärtusele, mis edastati funktsioonile, mis lõi sokli süsteemi ressursi. Valitud on ka sama suhtlusdomeen. [ 1 ] AF_UNIXAF_LOCAL

Kehtivad parameetrid typeUDS-i jaoks on:

  • SOCK_STREAM (võrreldes TCP-ga) – Kasutatakse voolupõhiste soklite jaoks
  • SOCK_DGRAM (võrreldes UDP-ga) – andmegrammipõhine pesa sõnumite piiride säilitamiseks (nagu enamiku UNIX-i rakenduste puhul, on UNIX-domeeni datagrammipesad alati usaldusväärsed ega järjesta andmegramme ümber)
  • SOCK_SEQPACKET (võrreldes SCTP-ga) – järjestikused paketipesad ühendustele, mis säilitavad sõnumite piirid ja edastavad sõnumeid nende saatmise järjekorras


UDS tööriist on POSIX operatsioonisüsteemi standardkomponent.

Miks kasutada Unix-domeeni pesasid?

Unix-domeeni pesad võimaldavad protsessidevahelist suhtlust ühel masinal. Miks siis valida need TCP/IP asemel? Näiteks TCP/IP-s saab kasutada loopback-aadressi (localhost) ühe serveri suhtluseks. Miks sa valiksid Windowsi nimetustorujuhtmete asemel?

Üldiselt on mitmeid põhjuseid, miks võiksite kasutada UDS-i TCP/IP asemel protsessidevahelises suhtluses:

  • Unix-domeeni soklidel on tavaliselt väiksem koormus ja kiirem ülekandekiirus kui TCP/IP kasutamisel
  • TCP/IP soklid on lõplik ressurss, samas kui Unix-domeeni pesadel puuduvad kindlad piirangud
  • Unix-domeeni sokleid on failivormis, nii et teadaolevaid teid on lihtne "avastada"
  • Failisüsteemidega integratsioon lisab ka täiendava turvakihi (kui sul pole juurdepääsu failiteele, ei pääse sa socketile ligi).


Esimene punkt on lihtne mõista – kiire googeldamine näitab, et UDS ja TCP/IP võrdlustestid on alati paremad kui UDS, sest sellel on mitte ainult oluliselt madalam latentsus, vaid ka oluliselt suurem läbilaskevõime. See tuleneb peamiselt sellest, et UDS on optimeeritud suhtlemiseks sama serveriga,IP-suhtluseks peab localhost läbima IP-virna nii saatja kui vastuvõtja poolt

TCP/IP pesad on lõplik ressurss; Korraga saab kasutada kuni 65 535 pistikupesa. Kui lisada probleem, võib maksimaalne pistikupesade arv, mis tegelikult TIME_WAIT, olla palju väiksem kui see väärtus. Localhosti ühendus kasutab samuti selle basseini pesasid. UDS-i kasutamine aitab seda probleemi nutikalt vältida; See võimaldab suhtlust ilma TCP/IP pesasid ammendamata.

server

Loo uus .NET 8 konsooliprojekt, muuda SDK Microsoft.NET.Sdk.Web-iks ja seadista see järgmiselt:

Greet.proto on seadistatud järgmiselt:

Kood on järgmine:

Pärast kogumiku algust, nagu allpool näidatud:



klient

Loo uus .NET 8 konsooliprojekt ja viita järgmistele teekidele:

GRPC liidese kutsumise meetodit kutsutakse 10 korda ning iga kõne kutsutakse 200 millisekundi jooksul ning kood on järgmine:

Alusta projekti ja pärast teostuse lõpetamist, nagu alloleval joonisel näidatud:



Viide:

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




Eelmine:Jetson (1) Jetson Orin Nano Super Arendaja komplekt karbist vabastatud
Järgmine:Veebikonteineri netty ja tomcati võrdlus Spring Bootis
 Üürileandja| Postitatud 2025-8-11 20:57:04 |
HttpClienteigRPCja Unix-domeeni pistikute side

server

klient

Nagu allpool näidatud:

 Üürileandja| Postitatud 2025-8-12 10:05:14 |
ProtocolType.Määratlemata: Protokolli ei ole määratud ja süsteem valib selle automaatselt
 Üürileandja| Postitatud 2025-8-12 11:02:41 |
C# test suudab UDS-iga tavapäraselt ühenduda


 Üürileandja| Postitatud 2025-9-16 15:26:30 |
Nginx'i kasutamine Unix domeeni soklite proxy'miseks (Testimata
Konfiguratsioon on järgmine:

Sea UDS prioriteediks: Kui sinu teenus töötab samal masinal kui Nginx ja otsid kõrget jõudlust ja madalat latentsust, on UDS parim valik.
 Üürileandja| Postitatud 2025-9-16 17:11:05 |
Nginx pöördproksi php-fpm kasutab suhtlemiseks UDS-i
https://www.itsvse.com/thread-11068-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