¿Debo usar Named Pipes o .NET Remoting para comunicarme con un proceso en ejecución en mi máquina?¿Cuál es la mejor opción para la comunicación entre procesos de .NET?
Respuesta
WCF es la mejor opción. Es compatible con a number of different transport mechanisms (includingNamedPipes) y puede ser completamente controlado por la configuración. Recomiendo encarecidamente que eche un vistazo a WCF.
Aquí hay un blog que hace un WCF vs Remoting performance comparison.
Una cita del blog:
El WCF y .NET Remoting son realmente comparables en el rendimiento. Las diferencias son tan pequeñas (medir la latencia del cliente) que no importa cuál es un poco más rápido. WCF tiene un rendimiento del servidor mucho mejor que .NET Remoting. Si comenzara un proyecto completamente nuevo, elegiría el WCF. De todos modos, WCF hace mucho más que Remoting y por todas esas características me encanta.
Otra evidencia a favor de la comunicación remota. De alguien del equipo remoto de Microsoft/WCF: "hay una inversión de desarrollo muy mínima en Remoting. WCF es el sucesor de Remoting". Desde aquí http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ
.net remoto está integrado en .net para hacer la comunicación del proceso interno. Si usa eso, continuarán soportándolo y posiblemente mejorando en futuras versiones. Canalizaciones con nombre no le dan la promesa de mejoras en las versiones futuras de .net
Es improbable que mejoren la interacción remota. De alguien en el equipo remoto/WCF: "hay una inversión de desarrollo muy mínima en Remoting. WCF es el sucesor de Remoting". Desde aquí, http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ
Si se refiere a la comunicación entre procesos, usé .NET Remoting sin ningún problema hasta el momento. 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. Remoting le permite invocar métodos remotos con facilidad.
WCF en tuberías con nombre también lo permite. Y puede usar el mismo ensamblaje de contratos en ambos procesos. –
Si está en una sola máquina, Named Pipes le ofrece un mejor rendimiento y se puede implementar con el remoting infrastructure y WCF. O simplemente puede usar directamente System.IO.Pipes.
.Net remoto no es un protocolo en sí mismo. Le permite elegir qué protocolo usar: SOAP, named-pipes, etc.
Remoting en .NET Framework 2.0 proporciona el canal IPC para la comunicación entre procesos dentro de la misma máquina.
Si está usando .NET Framework 3.0 o superior, usaría WCF. Usando WCF, puede usar diferentes enlaces que dependen 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 named-pipe. Cualquiera de los dos debería funcionar
Mi enfoque personal es que el enfoque de WCF es más limpio ya que puede hacer servicios basados en contratos y centrarse en los mensajes, no en los objetos (estoy haciendo una generalización 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 está clara. Cuando todo lo que hace es enviar un mensaje como el que tiene con WCF, es más fácil separar sus preocupaciones entre la comunicación y las clases/infraestructura de las que está compuesto un solo nodo.
WCF también proporciona flexibilidad. Con solo cambiar algunas configuraciones (vinculantes) puede tener el mismo servicio en alguna otra máquina en lugar de IPC en la misma máquina. Por lo tanto, tu código sigue siendo flexible.
Una lista de IPC API para .NET: http://weblogs.asp.net/ricardoperes/local-machine-interprocess -comunicación-con-red –
- 1. Comunicación entre procesos en .NET
- 2. ¿Cuál es el método más simple de comunicación entre procesos entre 2 procesos C#?
- 3. C# - WCF - comunicación entre procesos
- 4. ¿Cuál es la mejor opción?
- 5. Recomendación de comunicación entre procesos
- 6. Comunicación entre procesos en c/C++
- 7. comunicación entre procesos en python
- 8. ¿Cuál es la mejor práctica para la comunicación entre instancias de Amazon EC2?
- 9. Comunicación entre procesos en Lua
- 10. ¿Cuál es la forma más fácil de hacer comunicación entre procesos en C#?
- 11. ¿Cuál es el mejor patrón para la comunicación bidireccional entre clases?
- 12. comunicación entre dos procesos que ejecutan node.js
- 13. Ejemplos de comunicación entre procesos (IPC)
- 14. La comunicación entre dos procesos en heroku (qué puerto usar)
- 15. ¿Cuál es la mejor manera de comunicarse entre los AppDomains?
- 16. ¿Cuál es la diferencia entre WebRTC y WebSockets para la comunicación de datos de bajo nivel
- 17. Cuál es la mejor IDE alternativa para Delphi (.NET)
- 18. ¿Cuál es la mejor implementación para AOP en .Net?
- 19. ¿Cuál es la mejor alternativa a int.TryParse para .net 1.1
- 20. ¿Cuál es la mejor biblioteca EXIF para .Net?
- 21. LINQ to MySQL: ¿cuál es la mejor opción?
- 22. ¿La devolución de llamada de función y la comunicación entre procesos son las mismas?
- 23. ¿Cuáles son los límites de usar sockets para la comunicación entre procesos?
- 24. ¿Cuál es la diferencia entre la opción keep_alive y la persistente para la solicitud HTTP?
- 25. Mejores prácticas arquitectónicas de eliminación/eliminación: ¿Cuál es el proveedor preferido para usar en la comunicación entre Upshot y .NET?
- 26. Mac OS X equivalente de CreateEvent() con objeto nombrado para la comunicación entre procesos?
- 27. Comunicación entre procesos C# <--> C++ para el motor de depuración de juegos
- 28. ¿Cuál es la mejor opción para construir un sistema de complemento para una aplicación Moose?
- 29. comunicación entre procesos dentro de PHP con un proceso continuo?
- 30. ¿Cuál es la mejor opción para la pestaña del navegador: multihilo o proceso múltiple?
Wow acabo básicamente preguntó exatly la misma pregunta ... http://stackoverflow.com/questions/84860/how-to-communicate-with-a-windows-service-from-an-application-that -interacts-wi –