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


WSHttpBinding

В примере wsHttp показано, как реализовать типичную службу и типичный клиент с помощью Windows Communication Foundation (WCF). Этот образец содержит консольную программу клиента (client.exe) и библиотеку службы, размещаемую в службах IIS. Служба реализует контракт, определяющий шаблон взаимодействия "запрос-ответ". Контракт определяется интерфейсом ICalculator, который предоставляет математические операции (сложение, вычитание, умножение и деление). Клиент осуществляет синхронные вызовы заданной математической операции, а служба отправляет в ответ результат. Действия клиента отображаются в окне консоли.

Примечание.

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

Этот пример предоставляет ICalculator контракт с помощью <wsHttpBinding>. Конфигурация этой привязки была расширена в файле Web.config.

<bindings>
  <wsHttpBinding>
    <!--The following is the expanded configuration section for a-->
    <!--WSHttpBinding. Each property is configured with the default-->
    <!--value. See the ReliableSession, TransactionFlow, -->
    <!--TransportSecurity, and MessageSecurity samples in the WS -->
    <!--directory to learn how to configure these features. -->
    <binding name="Binding1"
              bypassProxyOnLocal="false"
              transactionFlow="false"
              hostNameComparisonMode="StrongWildcard"
              maxBufferPoolSize="524288"
              maxReceivedMessageSize="65536"
              messageEncoding="Text"
              textEncoding="utf-8"
              useDefaultWebProxy="true"
              allowCookies="false">
      <reliableSession ordered="true"
                       inactivityTimeout="00:10:00"
                       enabled="false" />
      <security mode="Message">
        <message clientCredentialType="Windows"
                 negotiateServiceCredential="true"
                 algorithmSuite="Default"
                 establishSecurityContext="true" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

На базе элемента binding значение maxReceivedMessageSize позволяет задавать максимальный размер входящих сообщений (в байтах). Значение hostNameComparisonMode позволяет определить, нужно ли при демультиплексировании сообщений для службы учитывать имя узла. Значение messageEncoding позволяет задать кодирование сообщений (текст или MTOM). Значение textEncoding позволяет задать кодировку сообщений. Значение bypassProxyOnLocal позволяет задать, нужно ли использовать для локального взаимодействия HTTP-прокси. Значение transactionFlow определяет, передается ли текущая транзакция через поток (если для операции включен поток транзакций).

В элементе <reliableSession> включенное логическое значение определяет, включены ли надежные сеансы. Значение ordered определяет, сохраняется ли порядок сообщений. Значение inactivityTimeout определяет время, в течение которого сеанс может оставаться в состоянии бездействия, прежде чем он будет прерван.

<При безопасности>mode значение настраивает режим безопасности. В этом примере используется безопасность сообщений, поэтому <сообщение> указывается внутри <системы безопасности.>

При выполнении примера запросы и ответы операций отображаются в окне консоли клиента. Чтобы закрыть клиент, нажмите клавишу ВВОД в окне клиента.

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.

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

  1. Установите ASP.NET 4.0 с помощью следующей команды.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

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

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