Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 658|Odpoveď: 5

[Tipy] Procesy .NET/C# komunikujú medzi socketmi v oblasti gRPC a Unix

[Kopírovať odkaz]
Zverejnené 11. 8. 2025 20:24:04 | | | |
Požiadavky: Na tom istom serveri medzi sebou procesy komunikujú pomocou anonymných pipeline, pomenovaných pipeline, súborov mapovania pamäte, HTTP, TCP, štandardných vstupno/výstupných tokov a podobne. Niekedy servery potrebujú nasadiť viacero aplikácií a aplikácie môžu medzi sebou komunikovať pomocou gRPC a unixových doménových socketov.

revízia
.NET/C# NamedPipe založená komunikácia NamedPipe medzi procesmi [so zdrojovým kódom]
https://www.itsvse.com/thread-10628-1-1.html

.NET/C# rodičovsko-podriadené procesy komunikujú pomocou MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

.NET/C# rodičovsko-podcenné procesy komunikujú pomocou štandardných vstupno-výstupných tokov
https://www.itsvse.com/thread-10982-1-1.html

Unixové doménové sockety

Unixové doménové sockety (UDS), lokálne sockety alebo interprocesové komunikačné (IPC) sockety sú komunikačné koncové body, ktoré si vymieňajú dáta medzi procesmi bežiacimi v tom istom Unix alebo Unix-like operačnom systéme.

Názov Unixový doménový socket odkazuje na hodnotu doménového parametra, ktorá bola odovzdaná funkcii, ktorá vytvorila zdroj systému socketu. Tiež sa vyberá rovnaká komunikačná doména. [ 1 ] AF_UNIXAF_LOCAL

Platné hodnoty parametrov pre typeUDS sú:

  • SOCK_STREAM (v porovnaní s TCP) – Používa sa pre sockety orientované na prúd
  • SOCK_DGRAM (v porovnaní s UDP) – socket orientovaný na datagramy na zachovanie hraníc správ (ako pri väčšine UNIX implementácií, sockety UNIX domény datagramov sú vždy spoľahlivé a nepreusporiadajú datagramy)
  • SOCK_SEQPACKET (v porovnaní so SCTP) – Sekvenčné paketové sockety pre spojenia, ktoré zachovávajú hranice správ a doručujú správy v poradí, v akom sú odoslané


Nástroj UDS je štandardnou súčasťou operačného systému POSIX.

Prečo používať Unixové doménové sockety?

Unixové doménové sockety umožňujú komunikáciu medzi procesmi na jednom stroji. Tak prečo by ste si ich vybrali namiesto TCP/IP? Napríklad v TCP/IP môžete použiť spätnú adresu (localhost) pre komunikáciu s jedným serverom. Prečo by ste si ich na Windows vybrali namiesto Windows Naming Pipelines?

Vo všeobecnosti existuje niekoľko dôvodov, prečo by ste mohli zvoliť UDS namiesto TCP/IP pre medziprocesovú komunikáciu:

  • Unixové doménové sockety majú zvyčajne menšiu režijnú záťaž a rýchlejšie prenosové rýchlosti ako použitie TCP/IP
  • TCP/IP sockety sú obmedzený zdroj, zatiaľ čo sockety v Unix doméne nemajú pevné limity
  • Unixové doménové sockety sú dostupné vo forme súboru, takže je jednoduché "objaviť" známe cesty
  • Integrácia so súborovými systémami tiež pridáva ďalšiu vrstvu bezpečnosti (ak nemáte prístup k ceste k súboru, nemôžete pristupovať k socketu)


Prvý bod je ľahko pochopiteľný – rýchly Google ukáže, že benchmarky UDS a TCP/IP sú vždy lepšie ako UDS, pretože majú nielen výrazne nižšiu latenciu, ale aj výrazne vyššiu priepustnosť. Je to hlavne preto, že UDS je optimalizovaný na komunikáciu s rovnakým serverom,Pre IP komunikáciu musí localhost prejsť cez IP stack na oboch stranách odosielateľa aj prijímateľa

TCP/IP sockety sú obmedzeným zdrojom; Naraz môžete použiť maximálne 65 535 socketov. Ak k tomu pridáte problém, maximálny počet socketov, ktoré TIME_WAIT skutočne dostupné, môže byť oveľa menší ako táto hodnota. Pripojenie localhost tiež spotrebúva sockety v tomto poole. Použitie UDS šikovne tento problém obchádza; Umožňuje komunikáciu bez vyčerpania TCP/IP socketov.

server

Vytvorte nový .NET 8 konzolový projekt, zmeňte SDK na Microsoft.NET.Sdk.Web a nakonfigurujte ho nasledovne:

Greet.proto je nakonfigurovaný nasledovne:

Kód je nasledovný:

Po začiatku kompilácie, ako je uvedené nižšie:



klient

Vytvorte nový .NET 8 konzolový projekt a odkazujte na nasledujúce knižnice:

Spôsob volania rozhrania gRPC sa volá 10-krát, pričom každé volanie trvá 200 milisekúnd a kód je nasledovný:

Začnite projekt a po dokončení realizácie, ako je znázornené na obrázku nižšie:



Referencia:

Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.




Predchádzajúci:Jetson (1) Jetson Orin Nano Super Developer Kit rozbalený
Budúci:Porovnanie webových kontajnerov netty a tomcat v Spring Boot
 Prenajímateľ| Zverejnené 11. 8. 2025 20:57:04 |
HttpClientniegRPCa komunikáciu cez socket v Unix doméne

server

klient

Ako je uvedené nižšie:

 Prenajímateľ| Zverejnené 12.8.2025 10:05:14 |
ProtocolType.Unspecified: Nie je špecifikovaný žiadny protokol a systém ho automaticky vyberie
 Prenajímateľ| Zverejnené 12.8.2025 o 11:02:41 |
C# test sa dokáže normálne pripojiť k UDS


 Prenajímateľ| Zverejnené 16.9.2025 o 15:26:30 |
Použitie nginx na proxy socketov v Unixovej doméne (Netestované
Konfigurácia je nasledovná:

Uprednostnite UDS: Ak je vaša služba na rovnakom počítači ako Nginx a hľadáte vysoký výkon a nízku latenciu, UDS je najlepšia voľba.
 Prenajímateľ| Zverejnené 16.9.2025 o 17:11:05 |
Nginx reverzný proxy php-fpm používa UDS na komunikáciu
https://www.itsvse.com/thread-11068-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com