Expor um serviço WCF através de uma ligação de tubos nomeados
-
06-07-2019 - |
Pergunta
Introdução:
Implementei com sucesso um serviço WCF hospedado em um serviço do Windows há alguns dias. A comunidade aqui no Stackoverflow me ajudou com a exposição WSDL aqui. Agradeço mais uma vez. No entanto, recentemente, descobri que existe outro cliente em potencial para esse serviço, desta vez, localizado na mesma máquina que o Serviço, e isso me levou a pensar que devo adicionar outro terminal ao nome do nome Nomeado.
Os tubos nomeados parecem ser a melhor solução para a comunicação intra-máquina, no que me diz respeito. Por favor Corrija -me se isso estiver errado.
Problema:
Preciso expor outro terminal para o mesmo serviço/contrato, mas desta vez usando um NetNamedPipeBinding. No entanto, eu realmente não entendo como posso adicionar uma referência de serviço de um cliente. Tolo depois de adicionar
<endpoint address="net.pipe://localhost/OfficeService"
binding="netNamedPipeBinding"
contract="netBridge.Development.OfficeService.IWordService"
bindingConfiguration="localBinding" />
Tentei adicionar uma referência de serviço em um aplicativo Windows Forms localizado na mesma máquina digitando a net.pipe: // .... URL. Não funcionou. Devo mencionar que removi o ponto final do Mex (Metadata Exchange) anteriormente porque considerei não necessário.
- Este ponto de extremidade do MEX é necessário para a descoberta de ligação ao ponto de extremidade dos tubos nomeados?
- Como devo adicionar uma referência de serviço no aplicativo cliente ao terminal de tubo nomeado?
Solução
Seu endpoint parece bem, embora eu esteja curioso sobre o que há em localização ...
Parece que a opção mais fácil é apenas alterar a configuração do terminal no cliente Nome do Pipes para corresponder ao seu terminal de serviço. O cliente não deve se importar, desde que seja o único ponto de extremidade no arquivo de configuração dos clientes. Caso contrário, você precisará adicionar nomes aos seus pontos de extremidade e fazer com que o cliente escolha um específico ao recompensar o objeto Proxy.
Boa sorte!
Outras dicas
O ponto final do MEX é necessário durante o desenvolvimento, pois fornece um local HTTP onde o WSDL é construído. O WSDL descreve ao cliente como se comunicar com o servidor por meio de tubos nomeados, ou TCP/IP, ou qualquer outra coisa. Depois que o aplicativo do cliente criar o proxy para a ligação dos tubos nomeados e configurar a configuração, o terminal MEX não é mais necessário. Portanto, o ponto final do MEX pode ser removido antes da implantação através dos ambientes, se desejar.