Несколько контрактов
В примере MultipleContracts показано, как реализовать несколько контрактов в службе и как настроить конечные точки для взаимодействия с каждым из реализованных контрактов. Этот пример основан на начале работы. Служба была изменена, чтобы в ней было определено два контракта - контракт ICalculator
и контракт ICalculatorSession
.
Примечание.
Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.
Класс службы реализует контракты ICalculator
и ICalculatorSession
. Поскольку одному из контрактов требуется сеанс, служба использует режим экземпляра PerSession для поддержки состояния в течение времени существования сеанса.
Конфигурация службы была изменена, чтобы в ней определялось две конечных точки для обоих контрактов. Конечная ICalculator
точка доступна по базовому адресу с использованием привязки basicHttpBinding
. Конечная точка ICalculatorSession
доступна по адресу "базовый_адрес/сеанс" с использованием привязки wsHttpBinding
, атрибут bindingConfiguration
которой имеет значение BindingWithSession
, как показано в следующем образце конфигурации.
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- ICalculator endpoint is exposed using BasicBinding at the base
address provided by host:
http://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="basicHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- ICalculatorSession endpoint is exposed using BindingWithSession
at {baseaddress}/session:
http://localhost/servicemodelsamples/service.svc/session -->
<endpoint address="session"
binding="wsHttpBinding"
bindingConfiguration="BindingWithSession"
contract="Microsoft.ServiceModel.Samples.ICalculatorSession" />
...
</service>
Теперь созданный код клиента содержит клиентский класс как для исходного контракта ICalculator
, так и для нового контракта ICalculatorSession
. Конфигурация и код клиента были изменены, чтобы он мог взаимодействовать с каждым из контрактов через соответствующую конечную точку службы.
Клиент является консольным приложением Windows (EXE). Служба размещается в службах IIS.
В окне консольного приложения клиента отображаются операции, передаваемые в каждую из конечных точек, сначала для базовой конечной точки, а затем для защищенной конечной точки.
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".