Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 658|Válasz: 5

[Tippek] A .NET/C# folyamatok kommunikálnak a gRPC és Unix domain socketek között

[Linket másol]
Közzétéve: 2025-8-11 20:24:04 | | | |
Követelmények: Ugyanazon a szerveren a folyamatok anonim csővezetékek, elnevezett csővezetékek, memória leképező fájlok, HTTP, TCP, Standard Bemenet/Kimenet Folyamok stb. segítségével kommunikálnak egymással. Néha a szervereknek több alkalmazást kell telepíteniük, és az alkalmazások valójában kommunikálhatnak egymással gRPC és Unix domain socketek segítségével.

szemle
.NET/C# NamedPipe alapú NamedPipe Folyamatokon Átív Kommunikáció [forráskóddal]
https://www.itsvse.com/thread-10628-1-1.html

A .NET/C# szülő-gyermek folyamatok a MemoryMappedFile segítségével kommunikálnak
https://www.itsvse.com/thread-10983-1-1.html

A .NET/C# szülő-gyermek folyamatok szabványos bemenet/kimenet folyamok segítségével kommunikálnak
https://www.itsvse.com/thread-10982-1-1.html

Unix domain socketek

A Unix Domain Socketek (UDS), Helyi Socketek vagy Interprocess Communication (IPC) csatlakozók olyan kommunikációs végpontok, amelyek adatokat cserélnek a processzorok között, amelyek ugyanabban a Unix- vagy Unix-szerű operációs rendszerben futó folyamatok között cserélnek.

A Unix domain socket név arra a domain paraméterértékre utal, amely a socket rendszer erőforrását létrehozó függvényhez továbbított. Ugyanezt a kommunikációs területet választják ki. [ 1 ] AF_UNIXAF_LOCAL

A typeUDS érvényes paraméterértékei a következők:

  • SOCK_STREAM (a TCP-hez képest) – Áramforrás-orientált aljzatokhoz használják
  • SOCK_DGRAM (az UDP-hez képest) – egy datagram-orientált socket az üzenethatárok megőrzésére (mint a legtöbb UNIX megvalósításnál, a UNIX tartomány datagram socketek mindig megbízhatóak, és nem rendezik újra a datagramokat)
  • SOCK_SEQPACKET (az SCTP-hez képest) – Szekvenciális csomagfoglaltok olyan kapcsolatokhoz, amelyek megőrzik az üzenethatárokat és az üzeneteket a küldésük sorrendjében szállítják


Az UDS eszköz a POSIX operációs rendszer szabványos része.

Miért használunk Unix domain socketeket?

A Unix domain socketek lehetővé teszik a folyamatok közötti kommunikációt egyetlen gépen. Akkor miért választanád őket a TCP/IP helyett? Például TCP/IP-ben használhatsz egy loopback címet (localhost) az egyetlen szerver közötti kommunikációhoz. Windowson miért választanád őket a Windows névadási folyamatok helyett?

Általánosságban több oka is van annak, hogy az UDS-t választod a TCP/IP helyett a folyamatközi kommunikációhoz:

  • Az Unix domain socketek általában kevesebb terheléssel és gyorsabb átviteli sebességgel rendelkeznek, mint a TCP/IP használata
  • A TCP/IP socketek véges erőforrás, míg a Unix domain socketeknek nincs kemény korlátjuk
  • A Unix domain socketek fájl formájában érkeznek, így könnyű "felfedezni" az ismert útvonalakat
  • A fájlrendszerekkel való integráció egy extra biztonsági réteget is hozzáad (ha nincs hozzáférésed a fájlúthoz, nem férsz hozzá a sockethez)


Az első pont könnyen érthető – egy gyors Google-keresés azt mutatja, hogy az UDS és TCP/IP benchmarkok mindig jobbak, mint az UDS, mert nemcsak jelentősen alacsonyabb a késleltetése, hanem jóval magasabb az áteresztőképessége is. Ez főként annak köszönhető, hogy az UDS optimalizált a kommunikációra ugyanazzal a szerverrel,IP-kommunikációhoz a localhostnak mind a feladó, mind a vevő oldalán keresztül kell átmennie az IP veremén

A TCP/IP socketek véges erőforrást; Egyszerre legfeljebb 65 535 aljzat használhatsz. Ha hozzáadjuk a problémát, a ténylegesen elérhető maximális foglalatszám sokkal kisebb lehet, mint TIME_WAIT ez az érték. A localhost kapcsolat is elfogyaszt socketeket ebben a poolban. Az UDS használata ügyesen elkerüli ezt a problémát; Lehetővé teszi a kommunikációt anélkül, hogy kimerítené a TCP/IP socketeket.

kiszolgáló

Hozz létre egy új .NET 8 konzolprojektet, változtasd az SDK-t Microsoft.NET.Sdk.Web-re, és konfiguráld az alábbiakkal:

A Greet.proto a következőképpen van konfigurálva:

A kódex a következő:

A válogatás kezdete után, ahogy az alábbiakban látható:



ügyfél

Hozz létre egy új .NET 8 konzolprojektet, és hivatkozz a következő könyvtárakra:

A gRPC interfész hívásának módszerét 10-szer hívják, és minden hívást 200 milliszekundumon keresztül hívnak, a kód pedig a következő:

Kezdjük el a projektet, és a végrehajtás befejezése után, ahogy az alábbi ábrán látható:



Utalás:

A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.




Előző:Jetson (1) Jetson Orin Nano Super Fejlesztő Készlet dobozon kívül
Következő:Webes konténer netty és tomcat összehasonlítás a Spring Bootban
 Háziúr| Közzétéve: 2025-8-11 20:57:04 |
HttpClientnemgRPCés Unix domain socket kommunikáció

kiszolgáló

ügyfél

Ahogy az alábbiakban látható:

 Háziúr| Közzétéve: 2025-8-12 10:05:14 |
ProtocolType.Unspecified: Nem tartalmaz protokollt, és a rendszer automatikusan kiválasztja
 Háziúr| Közzétéve: 2025-8-12 11:02:41 |
A c# teszt képes normálisan csatlakozni az UDS-hez


 Háziúr| Közzétéve: 2025-9-16 15:26:30 |
Nginx használata Unix domain socketek proxy-jára (Nem tesztelve
A konfiguráció a következő:

Priorizáld az UDS-t: Ha a szolgáltatásod ugyanazon a gépen van, mint az Nginx, és magas teljesítményt és alacsony késleltetést keresel, akkor az UDS a legjobb választás.
 Háziúr| Közzétéve: 2025-9-16 17:11:05 |
A Nginx fordított proxy php-fpm UDS-t használ a kommunikációra
https://www.itsvse.com/thread-11068-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com