Pregunta

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

¿Fue útil?

Solución

WCF es la mejor opción.Es compatible varios mecanismos de transporte diferentes (incluido Llamado Tubería) y puede ser completamente controlado por la configuración.Le recomiendo encarecidamente que eche un vistazo a WCF.

Aquí hay un blog que hace un Comparación de rendimiento de WCF y remoto.

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 es 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 comunicación remota y por todas esas características me encanta.

Sección de MSDN para WCF

Otros consejos

Si está en una sola máquina, Named Pipes le brinda un mejor rendimiento y se puede implementar con el infraestructura remota así como WCF.O simplemente puedes usar directamente Tuberías.IO.del.sistema.

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 canalizaciones 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.

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

Si está utilizando .NET Framework 3.0 o superior, yo usaría WCF.Al utilizar WCF, puede utilizar 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 WCF es más limpio, ya que puede realizar 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 mucha información semántica se pierde o no está clara.Cuando todo lo que hace es enviar un mensaje como lo hace con WCF, resulta más fácil separar sus preocupaciones entre la comunicación y las clases/infraestructura que componen un solo nodo.

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 sigue siendo flexible.

La comunicación remota .Net no es un protocolo en sí mismo.Te permite elegir qué protocolo usar:JABÓN, tuberías con nombre, etc.

La comunicación remota .net está integrada en .net para realizar la comunicación interna del proceso.Si lo usa, continuarán admitiéndolo y posiblemente mejorándolo en versiones futuras.Las canalizaciones con nombre no prometen mejoras en futuras versiones de .net

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top