WCF – удаленная служба без использования IIS – базовый адрес?
-
22-09-2019 - |
Вопрос
Я пытаюсь разобраться в адресации служб WCF.
У нас есть настройка клиент-сервер, в которой серверу время от времени (возможно, раз в день) необходимо передавать данные каждому клиенту.Я хочу иметь облегченную службу прослушивания WCF на каждом клиенте, размещенном в службе NT, для получения этих данных.У нас уже есть такая настройка службы NT, на которой размещены некоторые локальные службы WCF для других задач, поэтому накладные расходы на это минимальны.
Из-за существующего устаревшего кода на сервере я считаю, что службу необходимо представить как ASMX и использовать basicHttpBinding
чтобы позволить ему подключиться.
Каждый клиент регистрируется на сервере пользователем (их необходимо настроить индивидуально), поэтому обнаружение не является проблемой.
Мой вопрос: как работает адресация?Я представляю, как пользователь вводит адрес клиента на сервере в форме
http://0.0.0.0/MyService
или даже
http://hostname/MyService
Если да, то как мне настроить клиентскую службу в App.config?Я использую localhost
?
Если нет, то каков рекомендуемый способ предоставления службы серверу?
Примечание:
- Я не хочу размещать IIS, поскольку это добавляет дополнительные требования к оборудованию, необходимому клиенту.
- Клиенты почти наверняка будут расположены в локальных сетях, а не в общедоступном Интернете.
Решение
Вы настраиваете базовый адрес службы следующим образом:
<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>
И тогда ваш сервис станет доступен через http://servename:9999/foo
.Вы можете взглянуть на Эта статья Чтобы получить больше информации.