WCF - удаленный сервис без использования IIS - базовый адрес? - PullRequest
0 голосов
/ 25 марта 2010

Я пытаюсь разобраться с адресацией служб WCF.

У нас есть настройка клиент-сервер, при которой серверу иногда (возможно, один раз в день) необходимо передавать данные каждому клиенту. Я хочу иметь облегченную службу прослушивания WCF на каждом клиенте, размещенном в службе NT, для получения этих данных. У нас уже есть такая настройка службы NT, на которой размещены некоторые локальные службы WCF для других задач, поэтому накладные расходы минимальны.

Из-за существующего унаследованного кода на сервере я считаю, что сервис должен быть представлен как ASMX, и для его подключения используйте basicHttpBinding

Каждый клиент зарегистрирован на сервере пользователем (им необходимо настроить их индивидуально), поэтому обнаружение не является проблемой.

У меня вопрос, как работает адресация? Я представляю, как пользователь вводит адрес клиента на сервере в виде

http://0.0.0.0/MyService

или даже

http://hostname/MyService

Если это так, как мне настроить службу клиента в ее App.config? Я использую localhost?

Если нет, то каков рекомендуемый способ предоставления услуги серверу?

Примечание:

  • Я не хочу размещать в IIS, поскольку это добавляет дополнительные требования к оборудованию, требуемому для клиента.
  • Клиенты почти наверняка будут находиться в локальных сетях, а не в общедоступном Интернете

1 Ответ

1 голос
/ 25 марта 2010

Базовый адрес службы вы настраиваете так:

<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. Вы можете взглянуть на эту статью для получения дополнительной информации.

...