¿Cuál es la mejor opción para la comunicación entre procesos .NET? [cerrado]

82

¿Debo usar Named Pipes o .NET Remoting para comunicarme con un proceso en ejecución en mi máquina?

mrbradleyt
fuente
1
Wow, básicamente hice exactamente la misma pregunta ... stackoverflow.com/questions/84860/…
Kris Erickson

Respuestas:

58

WCF es la mejor opción. Es compatible con un número de diferentes mecanismos de transporte ( incluyendo Named Pipes ) y puede ser completamente configuración accionados. Recomiendo encarecidamente que eche un vistazo a WCF.

Aquí hay un blog que hace una comparación de rendimiento WCF vs Remoting .

Una cita del blog:

WCF y .NET Remoting son realmente comparables en rendimiento. Las diferencias son tan pequeñas (midiendo la latencia del cliente) que no importa cuál sea un poco más rápido. Sin embargo, WCF tiene un rendimiento de servidor mucho mejor que .NET Remoting. Si comenzara un proyecto completamente nuevo, elegiría WCF. De todos modos, WCF hace mucho más que Remoting y por todas esas características me encanta.

Sección de MSDN para WCF

Eric Schoonover
fuente
1
Más pruebas a favor de la comunicación remota. De alguien del equipo de Microsoft remoting / WCF: "Hay una mínima inversión en desarrollo en Remoting. WCF es el sucesor de Remoting". Desde aquí stackoverflow.com/questions/1294494/…
MarkJ
15

Si está en una sola máquina, Named Pipes le ofrece un mejor rendimiento y se puede implementar con la infraestructura remota y con WCF. O simplemente puede usar System.IO.Pipes directamente .

Mark Cidade
fuente
5

Si te refieres a la comunicación entre procesos, utilicé .NET Remoting sin ningún problema hasta ahora. Si los dos procesos están en la misma máquina, la comunicación es bastante rápida.

Las tuberías con nombre son definitivamente más eficientes, pero requieren el diseño de al menos un protocolo de aplicación básico, lo que podría no ser factible. La comunicación remota le permite invocar métodos remotos con facilidad.

Dario Solera
fuente
3
WCF sobre canalizaciones con nombre también permite esto. Y puede usar el mismo ensamblaje de contratos en ambos procesos.
Kent Boogaart
3

La comunicación remota en .NET Framework 2.0 proporciona el canal IPC para la comunicación entre procesos dentro de la misma máquina.

Icelava
fuente
3

Si está utilizando .NET Framework 3.0 o superior, usaría WCF. Al usar WCF, puede usar diferentes enlaces dependiendo de la compensación entre rendimiento / interoperabilidad / etc. Que tu necesitas.

Si el rendimiento no es crítico y necesita interoperabilidad con otras tecnologías de servicios web, querrá utilizar el enlace WS-HTTP. Para su caso, puede usar WCF con un enlace net-tcp o un enlace de canalización con nombre. Cualquiera debería funcionar.

Mi opinión personal es que el enfoque de WCF es más limpio, ya que puede hacer servicios basados ​​en contratos y centrarse en mensajes, no en objetos (estoy haciendo una generalización aquí basada en los modelos de programación predeterminados de WCF / .NET Remoting). No me gusta enviar objetos a través del cable porque se pierde mucha información semántica o no es clara. Cuando todo lo que está haciendo es enviar un mensaje como si estuviera con WCF, se vuelve más fácil separar sus preocupaciones entre la comunicación y las clases / infraestructura de las que se compone un solo nodo.

Jason Olson
fuente
2

WCF también proporciona flexibilidad. Con solo cambiar alguna configuración (enlace), puede tener el mismo servicio en otra máquina en lugar de IPC en la misma máquina. Por lo tanto, su código permanece flexible.

Código Vikram I
fuente
Una lista de API de IPC para .NET: weblogs.asp.net/ricardoperes/…
Ricardo Peres
1

.Net remoting no es un protocolo en sí mismo. Le permite elegir qué protocolo usar: SOAP, canalizaciones con nombre, etc.

Joel Coehoorn
fuente
0

.net remoting está integrado en .net para realizar la comunicación interna del proceso. Si lo usa, continuarán admitiendo y posiblemente mejorando en versiones futuras. Las canalizaciones con nombre no le prometen mejoras en futuras versiones de .net

kemiller2002
fuente
2
Es poco probable que mejoren la comunicación remota. De alguien del equipo de remoting / WCF: "Hay una inversión mínima en desarrollo en Remoting. WCF es el sucesor de Remoting". Desde aquí stackoverflow.com/questions/1294494/…
MarkJ