Pergunta

Estou tentando entender o endereçamento dos serviços da WCF.

Temos uma configuração de cliente-servidor em que o servidor ocasionalmente (talvez uma vez por dia) precisa enviar dados para cada cliente. Quero ter um serviço de ouvinte WCF leve em cada cliente hospedado em um serviço NT para receber esses dados. Já temos uma configuração de serviço NT que hospeda alguns serviços locais da WCF para outras tarefas, de modo que a sobrecarga disso é mínima.

Devido ao código legado existente no servidor, acredito que o serviço precisa ser exposto como ASMX e usar basicHttpBinding para permitir que ele se conecte.

Cada cliente é registrado no servidor pelo usuário (eles precisam configurá -los individualmente) para que a descoberta não seja o problema.

Minha pergunta é: como funciona o endereçamento? Eu imagino que o usuário insira o endereço do cliente no servidor no formulário

http://0.0.0.0/MyService

ou até

http://hostname/MyService

Em caso afirmativo, como configuro o serviço do cliente em seu app.config? Eu uso localhost?

Caso contrário, qual é a maneira recomendada de expor o serviço ao servidor?

Observação:

  • Não quero hospedar no IIS, pois isso adiciona requisitos extras ao hardware necessário para o cliente.
  • Os clientes estarão quase certamente localizados em LANs, não na Internet pública
Foi útil?

Solução

Você configura o endereço base do serviço como assim:

<system.serviceModel>
  <services>
    <service name="Ns.FooService">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:9999" />
        </baseAddresses>
      </host>
      <endpoint
          address="/foo"
          binding="basicHttpBinding"
          contract="Ns.IFooContract" />
     </service>
  </services>
</system.serviceModel>

E então seu serviço pode ser acessível através http://servename:9999/foo. Você pode dar uma olhada em Este artigo Para maiores informações.

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