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.

  1. Este ponto de extremidade do MEX é necessário para a descoberta de ligação ao ponto de extremidade dos tubos nomeados?
  2. Como devo adicionar uma referência de serviço no aplicativo cliente ao terminal de tubo nomeado?
Foi útil?

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.

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