¿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?


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


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


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.


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.


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.



1

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


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.