Sono confuso sul motivo per cui qualcosa funziona. Sto configurazione di un servizio WCF come questo:WCF service endpoint localhost confusione
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
Il BindingConfiguration e behaviorConfiguration sono molto semplice, basta configurare alcuni timeout.
Nel mio exe, avvio l'host in questo modo.
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
È tutto piuttosto semplice e funziona, posso chiamare questo servizio da un PC diverso. Tuttavia, dopo aver letto su un altro problema (ascoltando i socket tcp), ho l'impressione che non dovrebbe funzionare. Poiché sono impegnato a localhost, il servizio non dovrebbe essere accessibile dall'esterno del PC su cui è in esecuzione?
Ho controllato netstat sul pc e ha eseguito il binding all'indirizzo IP "0.0.0.0" invece di "127.0.0.1" spiegando perché funziona da un altro pc.
Ma non capisco perché va da localhost a "0.0.0.0"?
Ho scavato un po 'più a fondo, solo per diventare più confuso. Se uso 'net.tcp: // 127.0.0.1/service', si collegherà effettivamente al loopback e non sarà raggiungibile dall'esterno del pc. Tuttavia 'net.tcp: // localhost/service' si collegherà a 0.0.0.0 ed è raggiungibile dall'esterno del loopback. Perché? – Greuntesop