Ответ 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
действительно определяет "базовый адрес" этой службы, например. имеющий базовый адрес в таком случае, на самом деле не имеет никакого значения/вообще не помогает.