ti-enxame.com

Qual é a melhor opção para comunicação entre processos .NET?

Devo usar pipes nomeados ou .NET Remoting para se comunicar com um processo em execução na minha máquina?

81
mrbradleyt

WCF é a melhor escolha. Ele suporta vários mecanismos de transporte diferentes ( incluindoNomeadoPipes ) e pode ser completamente orientado à configuração. Eu recomendo que você dê uma olhada no WCF.

Aqui está um blog que faz uma comparação de desempenho WCF vs Remoting .

Uma citação do blog:

O WCF e o .NET Remoting são realmente comparáveis ​​em desempenho. As diferenças são tão pequenas (medindo a latência do cliente) que não importa qual é um pouco mais rápido. Embora o WCF tenha uma taxa de transferência de servidor muito melhor que o .NET Remoting. Se eu iniciasse um projeto completamente novo, escolheria o WCF. De qualquer forma, o WCF faz muito mais que o Remoting, e por todos esses recursos, adoro isso.

Seção MSDN para WCF

58
Eric Schoonover

Se estiver em uma única máquina, o Named Pipes oferece melhor desempenho e pode ser implementado com o infraestrutura remota , assim como o WCF. Ou você pode apenas usar diretamente System.IO.Pipes .

15
Mark Cidade

Se você quer dizer comunicação entre processos, usei o .NET Remoting sem nenhum problema até agora. Se os dois processos estiverem na mesma máquina, a comunicação é bastante rápida.

Pipes nomeados são definitivamente mais eficientes, mas requerem o design de pelo menos um protocolo de aplicativo básico, o que pode não ser viável. A comunicação remota permite invocar métodos remotos com facilidade.

5
Dario Solera

Se você estiver usando o .NET Framework 3.0 ou superior, eu usaria o WCF. Usando o WCF, você pode usar diferentes ligações depeneding no trade-off entre performance/interop/etc. isto que você precisa.

Se o desempenho não for crítico e você precisar de interoperabilidade com outras tecnologias de serviço da Web, convém usar a ligação WS-HTTP. No seu caso, você pode usar o WCF com uma ligação net-tcp ou uma ligação de pipe nomeado. Qualquer um deve funcionar.

Minha opinião pessoal é que a abordagem do WCF é mais limpa, pois você pode fazer serviços orientados a contratos e se concentrar em mensagens, não em objetos (estou fazendo uma generalização aqui com base nos modelos de programação padrão do WCF/.NET Remoting). Não gosto de enviar objetos pelo fio porque muitas informações semânticas se perdem ou não são claras. Quando tudo o que você está fazendo é enviar uma mensagem como você está no WCF, fica mais fácil separar suas preocupações entre comunicação e as classes/infraestrutura das quais um único nó é composto.

3
Jason Olson

A comunicação remota no .NET Framework 2.0 fornece canal IPC para comunicação entre processos dentro da mesma máquina.

3
icelava

O WCF também fornece flexibilidade. Apenas alterando alguma configuração (ligação), você pode ter o mesmo serviço em outra máquina em vez de IPC na mesma máquina. Portanto, seu código permanece flexível.

2
Vikram I Code

A comunicação remota .Net não é um protocolo por si só. Permite escolher qual protocal usar: SOAP, pipes nomeados etc.

1
Joel Coehoorn

O sistema de comunicação remota .net é incorporado ao .net para fazer a comunicação interna do processo. Se você usar isso, eles continuarão a oferecer suporte e, possivelmente, aprimorá-lo em versões futuras. Os pipes nomeados não oferecem a promessa de aprimoramentos em versões futuras do .net

0
kemiller2002