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


WSHttpBinding

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

ms751418.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Basic\Binding\WS\wsHttp

ms751418.note(ru-ru,VS.100).gifПримечание
Процедура настройки и инструкции по построению для этого образца приведены в конце этого раздела.

Этот образец предоставляет контракт ICalculator, используя элемент wsHttpBinding Element. Конфигурация этой привязки была расширена в файле 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> element определяет, включены ли надежные сеансы. Значение ordered определяет, сохраняется ли порядок сообщений. Значение inactivityTimeout определяет время, в течение которого сеанс может оставаться в состоянии бездействия, прежде чем он будет прерван.

В элементе security element of wsHttpBinding значение mode задает используемый режим безопасности. В этом образце используется безопасность сообщений, поэтому задается message element of wsHttpBinding в security element of wsHttpBinding.

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

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, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.

  4. Чтобы выполнить образец на одном или нескольких компьютерах, следуйте инструкциям раздела Running the Windows Communication Foundation Samples.