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


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

В примере MultipleContracts показано, как реализовать несколько контрактов в службе и как настроить конечные точки для взаимодействия с каждым из реализованных контрактов. Этот пример основан на Кратком руководстве. Служба была изменена для определения двух контрактов, ICalculator и ICalculatorSession контрактов.

Замечание

Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.

Сервисный класс реализует как контракт ICalculator, так и контракт ICalculatorSession. Поскольку для одного из контрактов требуется сеанс, служба использует режим экземпляра PerSession чтобы поддерживать состояние в течение всей продолжительности сеанса.

Конфигурация службы была изменена, чтобы определить две конечные точки для предоставления каждого контракта. Конечная ICalculator точка предоставляется по базовому адресу с помощью basicHttpBinding. ICalculatorSession Конечная точка доступна по адресу baseaddress/session, где атрибут wsHttpBindingbindingConfiguration установлен на 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). Служба размещается на платформе Internet Information Services (IIS).

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

Настройка, сборка и запуск примера

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

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

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