Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 658|Odpověď: 5

[Tipy] Procesy .NET/C# komunikují mezi sockety v oblasti gRPC a Unix

[Kopírovat odkaz]
Zveřejněno 2025-8-11 20:24:04 | | | |
Požadavky: Na stejném serveru komunikují procesy mezi sebou pomocí anonymních pipeline, pojmenovaných pipeline, souborů mapování paměti, HTTP, TCP, Standardních vstupních/výstupních toků atd. Někdy je potřeba servery nasadit více aplikací a aplikace mohou mezi sebou skutečně komunikovat pomocí socketů v oblasti gRPC a unix.

přezkoumání
.NET/C# NamedPipe založená komunikace NamedPipe mezi procesy [se zdrojovým kódem]
https://www.itsvse.com/thread-10628-1-1.html

Rodičovsko-potomkovské procesy .NET/C# komunikují pomocí MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

Rodičovsko-podřízené procesy .NET/C# komunikují pomocí standardních vstupních/výstupních proudů
https://www.itsvse.com/thread-10982-1-1.html

Unixové doménové sockety

Unixové doménové sockety (UDS), lokální sockety nebo interprocesní komunikační (IPC) sockety jsou komunikační koncové body, které si vyměňují data mezi procesy běžícími ve stejném Unixu nebo Unixu podobném operačním systému.

Název Unixový doménový socket odkazuje na hodnotu doménového parametru předávanou funkci, která vytvořila zdrojový systém socketu. Je také zvolena stejná komunikační doména. [ 1 ] AF_UNIXAF_LOCAL

Platné hodnoty parametrů pro typeUDS jsou:

  • SOCK_STREAM (ve srovnání s TCP) – Používá se pro sockety orientované na proud
  • SOCK_DGRAM (ve srovnání s UDP) – datagramově orientovaný socket pro zachování hranic zpráv (stejně jako u většiny implementací UNIXu jsou sockety s datagramy v UNIXu vždy spolehlivé a nepřeřazují datagramy)
  • SOCK_SEQPACKET (ve srovnání se SCTP) – Sekvenční paketové sockety pro spojení, která zachovávají hranice zpráv a doručují zprávy v pořadí, v jakém jsou odeslány


Nástroj UDS je standardní součástí operačního systému POSIX.

Proč používat Unixové doménové sockety?

Unixové doménové sockety umožňují komunikaci mezi procesy na jednom stroji. Tak proč byste si je vybrali místo TCP/IP? Například v TCP/IP můžete použít loopback adresu (localhost) pro komunikaci s jedním serverem. Proč byste si na Windows vybrali právě tyto pipeline místo Windows Naming Pipelines?

Obecně existuje několik důvodů, proč byste mohli zvolit UDS místo TCP/IP pro meziprocesovou komunikaci:

  • Unixové doménové sockety mají obvykle menší režie a rychlejší přenosové rychlosti než použití TCP/IP
  • TCP/IP sockety jsou omezeným zdrojem, zatímco sockety v unixové doméně nemají pevná omezení
  • Unixové doménové sockety jsou dostupné ve formě souborů, takže je snadné "objevit" známé cesty
  • Integrace se souborovými systémy také přidává další vrstvu zabezpečení (pokud nemáte přístup k cestě k souboru, nemůžete přistupovat k socketu)


První bod je snadno pochopitelný – rychlé vyhledání na Googlu ukáže, že benchmarky UDS a TCP/IP jsou vždy lepší než UDS, protože mají nejen výrazně nižší latenci, ale také výrazně vyšší propustnost. Je to hlavně díky tomu, že UDS je optimalizován pro komunikaci se stejným serverem,Pro IP komunikaci musí localhost procházet IP stackem na obou stranách odesílatele i příjemce

TCP/IP sockety jsou omezený zdroj; Můžete použít maximálně 65 535 socketů najednou. Pokud přidáte problém, maximální počet socketů, které TIME_WAIT skutečně dostupné, může být mnohem menší než tato hodnota. Připojení localhost také spotřebovává sockety v tomto poolu. Použití UDS chytře tento problém obejde; Umožňuje komunikaci bez vyčerpání TCP/IP socketů.

server

Vytvořte nový .NET 8 konzolový projekt, změňte SDK na Microsoft.NET.Sdk.Web a nakonfigurujte ho následovně:

Greet.proto je nakonfigurován následovně:

Kód je následující:

Po zahájení kompilace, jak je uvedeno níže:



klient

Vytvořte nový .NET 8 konzolový projekt a odkazujte na následující knihovny:

Metoda volání rozhraní gRPC se volá 10krát, přičemž každé volání trvá 200 milisekund a kód je následující:

Spusťte projekt a po dokončení realizace, jak je znázorněno na obrázku níže:



Odkaz:

Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.




Předchozí:Jetson (1) Jetson Orin Nano Super Developer Kit rozbalen
Další:Srovnání síťové a tomcat ve webovém kontejneru ve Spring Boot
 Pronajímatel| Zveřejněno 11. 8. 2025 20:57:04 |
HttpClientnegRPCa komunikace přes socket v Unixové doméně

server

klient

Jak je uvedeno níže:

 Pronajímatel| Zveřejněno 12. 8. 2025 10:05:14 |
ProtocolType.Unspecified: Není specifikován žádný protokol a systém jej automaticky vybere
 Pronajímatel| Zveřejněno 12. 8. 2025 11:02:41 |
C# test se dokáže normálně připojit k UDS


 Pronajímatel| Zveřejněno 16. 9. 2025 15:26:30 |
Použití nginx k proxy socketů v Unixové doméně (Netestováno
Konfigurace je následující:

Upřednostněte UDS: Pokud je vaše služba na stejném počítači jako Nginx a hledáte vysoký výkon a nízkou latenci, UDS je nejlepší volba.
 Pronajímatel| Zveřejněno 16. 9. 2025 17:11:05 |
Nginx reverse proxy php-fpm používá UDS ke komunikaci
https://www.itsvse.com/thread-11068-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com