Actualmente estoy trabajando en una aplicación de escritorio multiproceso en Windows. Esta aplicación será una aplicación retráctil que se implementará en máquinas cliente de todo el mundo. Si bien podemos tener amplias especificaciones para las máquinas, p. Windows XP SP3 con .Net 4.0 CF, no tenemos control sobre ellos y no podemos ser demasiado específicos en cuanto a su configuración, por ej. no podemos especificar que la máquina debe tener un procesador gráfico compatible con cuda 1.4, etc.C# Sockets vs Pipes
Algunos de estos procesos se administran (.Net 4.0) y otros no están administrados (C++ Win32). Los procesos necesitan compartir datos. Las opciones que he evaluados hasta la fecha son
- sockets TCP
- canalizaciones con nombre
Tubos parecen funcionar un poco mejor, pero para nuestras necesidades - el rendimiento de ambos son aceptables. Y las tomas nos dan la flexibilidad de cruzar la máquina (y los sistemas operativos - nos gustaría admitir eventualmente los sistemas operativos que no sean de Microsoft) en el futuro, de ahí nuestra preferencia por ir con enchufes.
Sin embargo, mi mayor preocupación es la siguiente: si usamos conectores Tcp, ¿es probable que tengamos problemas con los firewalls? ¿Alguien más ha implementado aplicaciones/programas de escritorio que usan TCP para IPC y problemas experimentados? Si es así, ¿qué tipo?
Sé que esta es una pregunta bastante abierta y me alegraré de reformularla. Pero realmente me gustaría saber qué tipo de problemas potenciales podemos enfrentar.
edición: Para arrojar un poco más de luz, solo estamos transportando algunos POD, ints, flotadores y cuerdas. Hemos construido una capa de abstracción que ofrece 2 paradigmas: una solicitud/respuesta y suscripción. La capa de transporte se ha abstraído y actualmente tenemos dos implementaciones, basadas en tuberías y basadas en TCP.
Para ser claros, esto es solo en una sola máquina, por lo que no está utilizando las tuberías nombradas para comunicarse entre los escritorios? ¿O habrá alguna comunicación a través de la red también? –
Por ahora, todos los procesos se ejecutan en una sola máquina. Finalmente, en el futuro, ejecutaremos los procesos en diferentes máquinas. – quixver
Deseará asegurarse de diseñar para el futuro :) A menos que "camino abajo" sea teórico ... – bryanmac