Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере "Адресация" показаны различные аспекты и функции адресов конечных точек. Пример основан на руководстве по началу работы. В этом примере сервис размещён самостоятельно. Служба и клиент являются консольными приложениями. Служба определяет несколько конечных точек с помощью сочетания относительных и абсолютных адресов конечных точек.
Замечание
Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.
Файл конфигурации службы указывает базовый адрес и четыре конечные точки. Базовый адрес указывается с помощью элемента добавления в разделе service/host/baseAddresses, как показано в следующем примере конфигурации.
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
</baseAddresses>
</host>
</service>
Первое определение конечной точки, показанное в следующем примере конфигурации, указывает относительный адрес, что означает, что адрес конечной точки является сочетанием базового адреса и относительного адреса, следующего за правилами композиции URI.
<!-- Empty relative address specified:
use the base address provided by the host. -->
<!-- The endpoint address is
http://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
В этом случае относительный адрес пуст (""), поэтому адрес конечной точки совпадает с базовым адресом. Фактический адрес конечной точки — http://localhost:8000/servicemodelsamples/service.
Второе определение конечной точки также указывает относительный адрес, как показано в приведенной ниже конфигурации.
<!-- The relative address specified: use the base address -->
<!-- provided by the host + path. The endpoint address is -->
<!-- http://localhost:8000/servicemodelsamples/service/test. -->
<endpoint address="/test"
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
Относительный адрес , "test", добавляется к базовому адресу. Фактический адрес конечной точки — http://localhost:8000/servicemodelsamples/service/test.
Определение третьей конечной точки указывает абсолютный адрес, как показано в следующем примере конфигурации.
<endpoint address="http://localhost:8001/hello/servicemodelsamples"
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
Базовый адрес не играет роли в адресе. Фактический адрес конечной точки — http://localhost:8001/hello/servicemodelsamples.
Четвертый адрес конечной точки указывает абсолютный адрес и другой транспорт — TCP. Базовый адрес не играет роли в адресе. Фактический адрес конечной точки — net.tcp://localhost:9000/servicemodelsamples/service.
<!-- The absolute address specified, different transport: -->
<!-- use the specified address, and ignore the base address. -->
<!-- The endpoint address is -->
<!-- net.tcp://localhost:9000/servicemodelsamples/service. -->
<endpoint address=
"net.tcp://localhost:9000/servicemodelsamples/service"
binding="netTcpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
Клиент обращается только к одной из четырех конечных точек службы, но все четыре определены в файле конфигурации. Клиент выбирает конечную точку при создании CalculatorProxy объекта. Изменив имя конфигурации с CalculatorEndpoint1 на CalculatorEndpoint4, можно использовать каждую из конечных точек.
При запуске примера служба перечисляет адрес, имя привязки и имя контракта для каждой из своих конечных точек. Конечная точка обмена метаданными (MEX) — это лишь другая конечная точка с точки зрения ServiceHost, поэтому она отображается в списке.
Service endpoints:
Endpoint - address: http://localhost:8000/ServiceModelSamples/service
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: http://localhost:8000/ServiceModelSamples/service/test
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: http://localhost:8001/hello/servicemodelsamples
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: net.tcp://localhost:9000/servicemodelsamples/service
binding: NetTcpBinding
contract: ICalculator
Endpoint - address: http://localhost:8000/ServiceModelSamples/service/mex
binding: MetadataExchangeHttpBinding
contract: IMetadataExchange
The service is ready.
Press <ENTER> to terminate service.
При запуске клиента запросы и ответы операции отображаются как в окнах службы, так и в консоли клиента. Нажмите клавишу ВВОД в каждом окне консоли, чтобы завершить работу службы и клиента.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в запуска примеров Windows Communication Foundation.
Замечание
Если вы используете Svcutil.exe для повторного создания конфигурации для этого примера, обязательно измените имя конечной точки в конфигурации клиента, чтобы соответствовать коду клиента.