Pergunta

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

Foi útil?

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.

MSDN Secção de WCF

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 canal IPC para comunicação entre processos dentro da mesma máquina.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top