WCF - servicio remoto sin utilizar IIS - dirección base?
-
22-09-2019 - |
Pregunta
Estoy tratando de conseguir mi cabeza alrededor del direccionamiento de servicios WCF.
Tenemos una configuración cliente-servidor, donde el servidor de vez en cuando (tal vez una vez al día) tiene que enviar datos a cada cliente. Quiero tener un servicio WCF oyente ligera en cada cliente alojado en un servicio NT para recibir esos datos. Ya tenemos una configuración de este servicio NT alberga a unos servicios WCF locales para otras tareas así que la pérdida de esta es mínima.
Debido a código heredado existente en el servidor creo que el servicio debe ser expuesto como ASMX y el uso basicHttpBinding
a permitir que se conecte.
A cada cliente se ha registrado en el servidor por el usuario (que necesitan para configurar de forma individual) para el descubrimiento no es el problema.
Mi pregunta es, ¿cómo el trabajo para tratar? Me imagino que el usuario que introduce la dirección del cliente en el servidor de la forma
http://0.0.0.0/MyService
o incluso
http://hostname/MyService
Si es así, ¿Cómo se configura el servicio de cliente en su App.config? Cómo se utiliza localhost
?
Si no, entonces ¿cuál es la forma Reccommended de exponer el servicio al servidor?
Nota:
- No quiero a huésped en IIS como que añade requisitos adicionales para el hardware necesario para el cliente.
- Los clientes será casi con toda seguridad situado en redes de área local, no en internet público
Solución
configurar la dirección base del servicio, así:
<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>
Y a continuación, el servicio podría ser accesible a través de http://servename:9999/foo
. Puede echar un vistazo a este artículo para más información.