Qual é a melhor escolha para .NET comunicação entre processos? [fechadas]
Pergunta
Devo usar pipes nomeados, ou .NET Remoting para se comunicar com um processo em execução na minha máquina?
Solução
WCF é a melhor escolha. Ele suporta uma série de diferentes mecanismos de transporte (< a href = "http://blogs.charteris.com/blogs/chrisdi/archive/2008/05/19/exploring-the-wcf-named-pipe-binding-part-1.aspx" rel = "noreferrer"> incluindo Nomeado Tubos ) e pode ser accionado completamente configuração. Eu recomendo que você dê uma olhada WCF.
Aqui é um blog que faz um href="http://geekswithblogs.net/marcel/archive/2007/09/26/115651.aspx" rel="noreferrer"> WCF .
A citação do blog:
O WCF e .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 deles é um pouco mais rápido. WCF que tem muito melhor servidor de transferência de .NET Remoting. Se eu iria começar completamente novo projeto eu escolhi o WCF. De qualquer forma o WCF faz muito mais do que Remoting por todas essas características eu adoro isso.
Outras dicas
Se é em uma única máquina, pipes nomeados dá-lhe um melhor desempenho e pode ser implementado com a remoting infra-estrutura , bem como WCF. Ou você pode simplesmente usar diretamente Sistema .IO.Pipes .
Se você quer dizer comunicação inter-processo, eu usei Remoting sem qualquer problema até agora. Se os dois processos estão na mesma máquina, a comunicação é bastante rápido.
pipes nomeados são definitivamente mais eficiente, mas eles exigem o desenho de pelo menos um protocolo de aplicação básica, que pode não ser viável. Comunicação remota permite invocar métodos remotos com facilidade.
Remoting em Framework 2.0 fornece o
Se você estiver usando o .NET Framework 3.0 ou acima, gostaria de usar WCF. Usando WCF, você pode usar diferentes ligações depeneding sobre o trade-off entre o desempenho / interoperabilidade / etc. isto que você precisa.
Se o desempenho não é crítica e você precisa de interoperabilidade com outras tecnologias de Serviços Web, você vai querer usar o WS-HTTP vinculativo. Para o seu caso, você pode usar WCF com uma ligação do net-tcp, ou ligação a-pipe nomeado. Ou deve funcionar.
A minha opinião pessoal é que a abordagem WCF é mais limpo como você pode fazer serviços e foco Contrato-conduzido em mensagens, e não objetos (eu estou fazendo uma generalização aqui com base nos modelos de programação padrão de WCF / Remoting) . Eu não gosto de enviar objetos através do fio porque uma grande quantidade de informação semântica se perde ou não é clara. Quando tudo que você está fazendo é enviar uma mensagem como se estivesse com o WCF, torna-se mais fácil separar suas preocupações entre comunicação e as classes / infra-estrutura que um único nó é composta de.
WCF também fornece flexibilidade. Apenas mudando alguns config (obrigatório) você pode ter o mesmo serviço em alguma outra máquina, em vez de IPC na mesma máquina. Portanto, o seu código permanece flexível.
Remoting não é um protocolo em si. Ele permite que você escolha quais protocal de usar:. SOAP, chamados-pipes, etc
.net remoting é construído em .net para fazer a comunicação processo interno. Se você usar isso, eles vão continuar a apoiar e possivelmente melhorá-lo em versões futuras. não pipes nomeados não dar-lhe a promessa de melhorias em futuras versões do .net