Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 658|Respuesta: 5

[Consejos] Los procesos .NET/C# se comunican entre sockets de dominio gRPC y Unix

[Copiar enlace]
Publicado el 11-8-2025 20:24:04 | | | |
Requisitos: En el mismo servidor, los procesos se comunican entre sí usando pipelines anónimas, pipelines nombrados, archivos de mapeo de memoria, HTTP, TCP, flujos estándar de entrada/salida, etc. A veces los servidores necesitan desplegar múltiples aplicaciones, y las aplicaciones pueden comunicarse entre sí usando sockets de dominio gRPC y Unix.

revisión
Comunicación cruzada basada en NamedPipe basada en .NET/C# [con código fuente]
https://www.itsvse.com/thread-10628-1-1.html

.NET/C# los procesos padre-hijo se comunican usando MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html

Los procesos padre-hijo .NET/C# se comunican mediante flujos estándar de entrada/salida
https://www.itsvse.com/thread-10982-1-1.html

Sockets de dominio Unix

Los sockets de dominio Unix (UDS), sockets locales o sockets de comunicación entre procesos (IPC) son puntos finales de comunicación que intercambian datos entre procesos que se ejecutan en el mismo sistema operativo Unix o similar a Unix.

El nombre socket de dominio Unix se refiere al valor del parámetro de dominio que se pasa a la función que creó el recurso del sistema socket. También se selecciona el mismo dominio de comunicación. [ 1 ] AF_UNIXAF_LOCAL

Los valores válidos de los parámetros para typeUDS son:

  • SOCK_STREAM (en comparación con TCP) – Usado para sockets orientados a flujos
  • SOCK_DGRAM (en comparación con UDP) – un socket orientado a datagramas para preservar los límites de los mensajes (como en la mayoría de las implementaciones de UNIX, los sockets de datagramas de dominio UNIX son siempre fiables y no reordenan los datagramas)
  • SOCK_SEQPACKET (en comparación con SCTP) – Sockets de paquetes secuenciales para conexiones que preservan los límites de los mensajes y entregan los mensajes en el orden en que se envían


La herramienta UDS es un componente estándar del sistema operativo POSIX.

¿Por qué usar sockets de dominio Unix?

Los sockets de dominio Unix permiten la comunicación entre procesos en una sola máquina. Entonces, ¿por qué elegirlos a ellos en lugar de TCP/IP? Por ejemplo, en TCP/IP, puedes usar una dirección de bucle (localhost) para la comunicación de un solo servidor. En Windows, ¿por qué elegirlos en lugar de los Nomenclados de Canalizaciones de Windows?

En general, hay varias razones por las que podrías elegir usar UDS en lugar de TCP/IP para la comunicación entre procesos:

  • Los sockets de dominio Unix suelen tener menos sobrecarga y velocidades de transferencia más rápidas que usar TCP/IP
  • Los sockets TCP/IP son un recurso finito, mientras que los sockets de dominio Unix no tienen límites estrictos
  • Los sockets de dominio Unix vienen en formato de archivo, por lo que es fácil "descubrir" rutas conocidas
  • La integración con sistemas de archivos también añade una capa extra de seguridad (si no tienes acceso a la ruta del archivo, no puedes acceder al socket).


El primer punto es fácil de entender: una búsqueda rápida en Google mostrará que los benchmarks de UDS y TCP/IP siempre son mejores que UDS porque no solo tienen una latencia significativamente menor, sino también un rendimiento significativamente mayor. Esto se debe principalmente a que UDS está optimizado para la comunicación con el mismo servidor,Para la comunicación IP, localhost debe pasar por la pila IP tanto en el lado del emisor como del receptor

Los sockets TCP/IP son un recurso finito; Solo puedes usar hasta 65.535 sockets a la vez. Si sumas el problema, el número máximo de enchufes que TIME_WAIT disponibles puede ser mucho menor que este valor. La conexión localhost también consume sockets en este pool. Usar UDS evita inteligentemente este problema; Permite la comunicación sin agotar los sockets TCP/IP.

servidor

Crea un nuevo proyecto de consola .NET 8, cambia el SDK a Microsoft.NET.Sdk.Web y configúralo de la siguiente manera:

Greet.proto está configurado de la siguiente manera:

El código es el siguiente:

Después de que comienza la recopilación, como se muestra a continuación:



cliente

Crea un nuevo proyecto de consola .NET 8 y consulta las siguientes librerías:

El método para llamar a la interfaz gRPC se llama 10 veces, y cada llamada se llama durante 200 milisegundos, y el código es el siguiente:

Inicia el proyecto y, una vez completada la ejecución, como se muestra en la figura siguiente:



Referencia:

El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.




Anterior:Jetson (1) Kit de desarrollo Super Jetson Orin Nano sin caja
Próximo:Comparación entre nety de contenedor web y tomcat en Spring Boot
 Propietario| Publicado el 11-8-2025 20:57:04 |
HttpClientnogRPCy comunicación por socket de dominio Unix

servidor

cliente

Como se muestra a continuación:

 Propietario| Publicado el 12-8-2025 10:05:14 |
ProtocolType.Unspecified: No se especifica ningún protocolo y el sistema lo selecciona automáticamente
 Propietario| Publicado el 12-8-2025 11:02:41 |
La prueba de c# puede conectarse a UDS de forma normal


 Propietario| Publicado el 16-9-2025 15:26:30 |
Usar nginx para hacer proxy de sockets de dominio Unix (No probado
La configuración es la siguiente:

Prioriza UDS: Si tu servicio está en la misma máquina que Nginx y buscas alto rendimiento y baja latencia, UDS es la mejor opción.
 Propietario| Publicado el 16-9-2025 17:11:05 |
El proxy inverso de Nginx php-fpm utiliza UDS para comunicarse
https://www.itsvse.com/thread-11068-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com