WCF - servizio remoto senza l'utilizzo di IIS - indirizzo di base?
-
22-09-2019 - |
Domanda
Sto cercando di ottenere la mia testa intorno l'indirizzamento dei servizi WCF.
Abbiamo una configurazione client-server in cui il server di tanto in tanto (forse una volta al giorno) ha bisogno di spingere i dati ad ogni cliente. Voglio avere un peso leggero servizio listener WCF in ogni client ospitati in un servizio NT per ricevere i dati. Abbiamo già una tale configurazione servizio NT che ospita alcuni servizi WCF locali per altre attività in modo che il sovraccarico di questo è minimo.
A causa di codice legacy esistente sul server Credo che il servizio deve essere esposto come ASMX e utilizzare basicHttpBinding
per consentire la connessione.
Ogni cliente viene registrato sul server da parte dell'utente (di cui hanno bisogno per configurare individualmente), quindi la scoperta non è il problema.
La mia domanda è: come fa il lavoro di indirizzamento? Immagino che l'utente inserendo l'indirizzo del client sul server nel formato
http://0.0.0.0/MyService
o anche
http://hostname/MyService
Se sì, come si configura il servizio al cliente nella sua App.config? Fare uso localhost
?
Se poi non qual è il modo che luccica di esporre il servizio al server?
Nota:
- Non voglio per ospitare in IIS come che aggiunge ulteriori requisiti per l'hardware necessario per il cliente.
- I clienti saranno quasi certamente trova sulla LAN, non su Internet pubblico
Soluzione
È possibile configurare l'indirizzo di base del servizio in questo modo:
<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 poi il servizio potrebbe essere accessibile tramite http://servename:9999/foo
. Si può dare un'occhiata a questo articolo per ulteriori informazioni.