Использование базового адреса в службе WCF

что такое использование базового адреса... я имею в виду, что означает базовый адрес? если я опускаю базовый адрес, то какая проблема может возникнуть?

когда требуется базовый адрес?

в соответствии с приведенными ниже конфигурационными записями есть два базовых адреса... почему нужен два базовых адреса. когда люди дают больше базовых адресов? просто посмотрите ниже 2 базовый адрес и скажите мне, почему люди дают два базовых адреса, почему не один... есть ли какие-то конкретные причины?

   <host>
   <baseAddresses>
    <add baseAddress="net.tcp://localhost:1645/ChatServer/"/>
    <add baseAddress="http://localhost:1648/ChatServer/"/>
   </baseAddresses>
   </host>

Ответы

Ответ 1

Базовый адрес (по одному на "схему" - например, один для http, один для net.tcp и т.д.) может определять "базу" вашего адреса - что очень полезно, если вы намерены указать несколько конечных точек.

Базовый адрес никогда не требуется - это необязательная вещь, которая может помочь вам упростить вашу жизнь.

Наличие базового адреса позволяет указать только "относительную" часть, которая отличается для каждого фактического служебного адреса.

Представьте, что вы хотите иметь три конечных точки обслуживания - либо вы можете определить их все отдельно, полностью, в конфигурации примерно так:

<service name="Test1">
   <endpoint name="endpoint1"
       address="http://yourserver/yourservices/test1/service1" ..... />
   <endpoint name="endpoint2"
       address="http://yourserver/yourservices/test1/service2" ..... />
   <endpoint name="endpoint3"
       address="http://yourserver/yourservices/test1/service3" ..... />
</service>

или вы можете определить общие части, указав базовый адрес, а затем легче прочитать "относительные" адреса:

 <service name="Test1">
    <host>
      <baseAddresses>
        <add baseAddress="http://yourserver/yourservices/test1/"/>
      </baseAddresses>
    </host>
    <endpoint name="endpoint1"
        address="service1" ..... />
    <endpoint name="endpoint2"
        address="service2" ..... />
    <endpoint name="endpoint3"
        address="service3" ..... />
 </service>

Таким образом, использование базового адреса может упростить определение нескольких конечных точек - и это может сэкономить вам некоторое написание.

Также: обратите внимание, что базовые адреса действительно полезны, если вы используете самостоятельный хостинг для своей службы WCF. Если вы используете IIS для размещения своей службы WCF, то расположение файла *.svc действительно определяет "базовый адрес" этой службы, например. имеющий базовый адрес в таком случае, на самом деле не имеет никакого значения/вообще не помогает.