2008-09-17 17 views

Respuesta

58

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.

MSDN Section for WCF

+1

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

0

.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

+2

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

5

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.

+3

WCF en tuberías con nombre también lo permite. Y puede usar el mismo ensamblaje de contratos en ambos procesos. –

14

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.

1

.Net remoto no es un protocolo en sí mismo. Le permite elegir qué protocolo usar: SOAP, named-pipes, etc.

3

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

3

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.

1

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.

+0

Una lista de IPC API para .NET: http://weblogs.asp.net/ricardoperes/local-machine-interprocess -comunicación-con-red –

Cuestiones relacionadas