Поделиться через


Несколько контрактов

В примере 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.

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

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".