Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 658|Risposta: 5

[Consigli] I processi .NET/C# comunicano tra socket di dominio gRPC e Unix

[Copiato link]
Pubblicato il 11-08-2025 20:24:04 | | | |
Requisiti: Sullo stesso server, i processi comunicano tra loro utilizzando pipeline anonime, pipeline nominate, file di mappatura di memoria, HTTP, TCP, flussi standard di input/output, ecc. A volte i server devono distribuire più applicazioni, e le applicazioni possono effettivamente comunicare tra loro usando gRPC e socket di dominio Unix.

recensione
.NET/C# Comunicazione tra processi incrociati basati su NamedPipe basata su NamedPipe [con codice sorgente]
https://www.itsvse.com/thread-10628-1-1.html

.NET/C# i processi padre-figlio comunicano usando MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

I processi padre-figlio .NET/C# comunicano utilizzando flussi standard di input/output
https://www.itsvse.com/thread-10982-1-1.html

Socket a dominio Unix

I socket di dominio Unix (UDS), i socket locali o i socket di comunicazione interprocessi (IPC) sono endpoint di comunicazione che scambiano dati tra processi che eseguono nello stesso sistema operativo Unix o Unix-like.

Il nome socket di dominio Unix si riferisce al valore del parametro di dominio passato alla funzione che ha creato la risorsa di sistema socket. Viene selezionato anche lo stesso dominio di comunicazione. [ 1 ] AF_UNIXAF_LOCAL

I valori validi dei parametri per typeUDS sono:

  • SOCK_STREAM (rispetto a TCP) – Utilizzato per socket orientati allo stream
  • SOCK_DGRAM (rispetto a UDP) – un socket orientato ai datagrammi per preservare i confini dei messaggi (come nella maggior parte delle implementazioni UNIX, i socket dei datagrammi a dominio UNIX sono sempre affidabili e non riordinano i datagrammi)
  • SOCK_SEQPACKET (rispetto a SCTP) – Socket di pacchetto sequenziali per connessioni che preservano i confini dei messaggi e consegnano i messaggi nell'ordine in cui vengono inviati


Lo strumento UDS è un componente standard del sistema operativo POSIX.

Perché usare socket di dominio Unix?

I socket Unix a dominio consentono la comunicazione tra processi su una singola macchina. Allora perché li sceglieresti invece di TCP/IP? Ad esempio, in TCP/IP, puoi usare un indirizzo loopback (localhost) per la comunicazione a singolo server. Su Windows, perché li sceglieresti invece delle pipeline di denominazione di Windows?

In generale, ci sono diverse ragioni per cui potresti scegliere di usare UDS invece di TCP/IP per la comunicazione tra i processi:

  • I socket Unix domain tipicamente hanno meno overhead e velocità di trasferimento più elevate rispetto all'uso di TCP/IP
  • I socket TCP/IP sono una risorsa finita, mentre i socket di dominio Unix non hanno limiti rigidi
  • I socket di dominio Unix sono disponibili sotto forma di file, quindi è facile "scoprire" i percorsi noti
  • L'integrazione con i file system aggiunge anche un ulteriore livello di sicurezza (se non hai accesso al percorso file, non puoi accedere al socket)


Il primo punto è facile da capire: una rapida ricerca su Google mostrerà che i benchmark UDS e TCP/IP sono sempre migliori di UDS perché non solo ha una latenza significativamente inferiore, ma anche una velocità significativamente più alta. Questo è dovuto principalmente al fatto che UDS è ottimizzato per la comunicazione con lo stesso server,Per la comunicazione IP, localhost deve passare attraverso lo stack IP sia dal lato mittente che da quello del ricevente

I socket TCP/IP sono una risorsa finita; Puoi usare solo fino a 65.535 socket alla volta. Se aggiungi il problema, il numero massimo di prese effettivamente disponibili TIME_WAIT potrebbe essere molto inferiore a questo valore. La connessione localhost consuma anche socket in questo pool. L'uso di UDS evita abilmente questo problema; Permette la comunicazione senza esaurire i socket TCP/IP.

server

Crea un nuovo progetto console .NET 8, cambia l'SDK in Microsoft.NET.Sdk.Web e configuralo come segue:

Greet.proto è configurato come segue:

Il codice è il seguente:

Dopo l'inizio della compilation, come mostrato di seguito:



cliente

Crea un nuovo progetto console .NET 8 e fai riferimento alle seguenti librerie:

Il metodo di chiamata dell'interfaccia gRPC viene chiamato 10 volte, e ogni chiamata è chiamata per 200 millisecondi, e il codice è il seguente:

Avviare il progetto e, dopo il completamento dell'esecuzione, come mostrato nella figura sottostante:



Riferimento:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.




Precedente:Jetson (1) Kit sviluppatore Super Jetson Orin Nano scoperto
Prossimo:Confronto tra nety e tomcat per container web in Spring Boot
 Padrone di casa| Pubblicato il 11-08-2025 20:57:04 |
HttpClientnongRPCe comunicazione tramite socket di dominio Unix

server

cliente

Come mostrato di seguito:

 Padrone di casa| Pubblicato il 12-08-2025 10:05:14 |
ProtocolType.Non specificato: Non viene specificato alcun protocollo e il sistema lo seleziona automaticamente
 Padrone di casa| Pubblicato il 12-08-2025 11:02:41 |
Il test C# riesce a connettersi normalmente a UDS


 Padrone di casa| Pubblicato il 16-09-2025 15:26:30 |
Utilizzare nginx per proxy socket di dominio Unix (Non testato
La configurazione è la seguente:

Dai priorità all'UDS: Se il tuo servizio è sulla stessa macchina di Nginx e cerchi alte prestazioni e bassa latenza, UDS è la scelta migliore.
 Padrone di casa| Pubblicato il 16-09-2025 17:11:05 |
Il proxy inverso Nginx php-fpm utilizza UDS per comunicare
https://www.itsvse.com/thread-11068-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com