Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 658|Răspunde: 5

[Bacșișuri] Procesele .NET/C# comunică între socket-urile de domeniu gRPC și Unix

[Copiază linkul]
Postat la 2025-8-11 20:24:04 | | | |
Cerințe: Pe același server, procesele comunică între ele folosind pipeline-uri anonime, pipeline-uri denumite, fișiere de mapare a memoriei, HTTP, TCP, fluxuri standard de intrare/ieșire etc. Uneori, serverele trebuie să implementeze mai multe aplicații, iar aplicațiile pot comunica între ele folosind gRPC și socket-uri de domeniu Unix.

recenzie
.NET/C# Comunicare între procese NamedPipe bazată pe NamedPipe [cu cod sursă]
https://www.itsvse.com/thread-10628-1-1.html

Procesele părinte-copil .NET/C# comunică folosind MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

Procesele părinte-copil .NET/C# comunică folosind fluxuri standard de intrare/ieșire
https://www.itsvse.com/thread-10982-1-1.html

Socket-uri de domeniu Unix

Socket-urile de Domeniu Unix (UDS), Socket-urile Locale sau Socket-urile de Comunicare Interproces (IPC) sunt puncte finale de comunicație care schimbă date între procese care rulează în același sistem de operare Unix sau asemănător Unix.

Denumirea socket de domeniu Unix se referă la valoarea parametrului de domeniu transmisă funcției care a creat resursa sistemului socket. Același domeniu de comunicare este de asemenea selectat. [ 1 ] AF_UNIXAF_LOCAL

Valorile valide ale parametrilor pentru typeUDS sunt:

  • SOCK_STREAM (comparativ cu TCP) – Folosit pentru socket-uri orientate pe flux
  • SOCK_DGRAM (comparativ cu UDP) – un socket orientat pe datagrame pentru păstrarea granițelor mesajelor (ca în majoritatea implementărilor UNIX, socket-urile de datagrame în domeniul UNIX sunt întotdeauna fiabile și nu reordonează datagramele)
  • SOCK_SEQPACKET (comparativ cu SCTP) – Socket-uri secvențiale pentru conexiuni care păstrează limitele mesajelor și livrează mesajele în ordinea în care sunt trimise


Instrumentul UDS este o componentă standard a sistemului de operare POSIX.

De ce să folosești socket-uri de domenii Unix?

Socket-urile Unix permit comunicarea între procese pe o singură mașină. Deci de ce le-ai alege în locul TCP/IP? De exemplu, în TCP/IP, poți folosi o adresă de loopback (localhost) pentru comunicarea între un singur server. Pe Windows, de ce le-ai alege în loc de Windows Naming Pipelines?

În general, există mai multe motive pentru care ai putea alege să folosești UDS în loc de TCP/IP pentru comunicarea între procese:

  • Socket-urile de domeniu Unix au, de obicei, un overhead mai mic și viteze de transfer mai rapide decât utilizarea TCP/IP
  • Socket-urile TCP/IP sunt o resursă finită, în timp ce socket-urile de domeniu Unix nu au limite stricte
  • Socket-urile de domenii Unix vin sub formă de fișiere, așa că este ușor să "descoperi" căi cunoscute
  • Integrarea cu sistemele de fișiere adaugă, de asemenea, un strat suplimentar de securitate (dacă nu ai acces la calea fișierului, nu poți accesa socket-ul).


Primul punct este ușor de înțeles - o căutare rapidă pe Google va arăta că benchmark-urile UDS și TCP/IP sunt întotdeauna mai bune decât UDS pentru că nu doar că are o latență semnificativ mai mică, dar și un throughput semnificativ mai mare. Acest lucru se datorează în principal faptului că UDS este optimizat pentru comunicarea cu același server,Pentru comunicarea IP, localhost-ul trebuie să treacă prin stiva IP atât pe partea emițătorului, cât și pe cea a receptorului

Soclurile TCP/IP sunt o resursă finită; Poți folosi doar până la 65.535 de socluri simultan. Dacă adaugi problema, numărul maxim de socluri care TIME_WAIT disponibile poate fi mult mai mic decât această valoare. Conexiunea localhost consumă, de asemenea, socket-uri în acest pool. Folosirea UDS evită inteligent această problemă; Permite comunicarea fără a epuiza socket-urile TCP/IP.

server

Creează un nou proiect de consolă .NET 8, schimbă SDK-ul în Microsoft.NET.Sdk.Web și configurează-l astfel:

Greet.proto este configurat astfel:

Codul este următorul:

După ce începe compilația, așa cum se arată mai jos:



client

Creează un nou proiect de consolă .NET 8 și referă următoarele biblioteci:

Metoda de apelare a interfeței gRPC este numită de 10 ori, iar fiecare apel este apelat timp de 200 de milisecunde, iar codul este următorul:

Începe proiectul, iar după finalizarea execuției, așa cum se arată în figura de mai jos:



Referință:

Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.




Precedent:Jetson (1) Kitul de dezvoltator Jetson Orin Nano Super unboxed
Următor:Comparație între nety container web și tomcat în Spring Boot
 Proprietarul| Postat la 2025-8-11 20:57:04 |
HttpClientnugRPCși comunicarea prin socket de domeniu Unix

server

client

Așa cum se arată mai jos:

 Proprietarul| Postat la 2025-8-12 10:05:14 |
ProtocolType.Nespecificat: Nu este specificat niciun protocol, iar sistemul îl selectează automat
 Proprietarul| Postat la 2025-8-12 11:02:41 |
Testul C# se poate conecta normal la UDS


 Proprietarul| Postat pe 2025-9-16 15:26:30 |
Utilizarea nginx pentru a proxy socket-urile domeniului Unix (Nu am fost testat
Configurația este următoarea:

Prioritizează UDS: Dacă serviciul tău este pe aceeași mașină cu Nginx și cauți performanță ridicată și latență scăzută, UDS este cea mai bună alegere.
 Proprietarul| Postat pe 2025-9-16 17:11:05 |
Proxy invers Nginx php-fpm folosește UDS pentru a comunica
https://www.itsvse.com/thread-11068-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com