Установка свойств Use и Style

В примере UseAndStyle показано, как использовать свойства Use и Style для XmlSerializerFormatAttribute и т. д DataContractFormatAttribute. Эти свойства влияют на форматирование сообщений. По умолчанию тело сообщения форматируется с использованием стиля Document. Эти параметры можно задать либо на уровне контракта службы, либо на уровне контракта операции.

Примечание.

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

Свойство Style определяет форматирование метаданных WSDL службы. Допустимые значения: Document и Rpc. Стиль RPC означает, что WSDL-представление сообщений, которыми осуществляется обмен в ходе операции, содержит такие же параметры, как при удаленном вызове процедур. Пример приведен ниже.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="n1" type="xsd:double"/>
  <wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>

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

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>

Свойство Use определяет формат сообщения. Возможные значения: Literal и Encoded. Значение по умолчанию: Literal. Значение Literal означает, что сообщение представляет собой литеральный экземпляр схемы в WSDL, как показано в следующем примере стиля Document/Literal.

<Add xmlns="http://Microsoft.ServiceModel.Samples">
  <n1>100</n1>
  <n2>15.99</n2>
</Add>

«Encoded» (закодировано) означает, что схемы в WSDL являются абстрактными спецификациями, которые кодируются в соответствии с правилами в разделе 5 спецификации SOAP 1.1. Далее приведен пример RPC/Encoded.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
  <n1 xsi:type="xsd:double" xmlns="">100</n1>
  <n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>

Профиль WS-I Basic Profile 1.0 запрещает использование стиля Encoded, поэтому его следует использовать, только когда того требуют службы, созданные по устаревшим стандартам. Формат сообщений Encoded доступен только при использовании сериализатора XmlSerializer.

Чтобы просмотреть сообщения, отправляемые и полученные, этот пример основан на журнале трассировки и сообщений. В конфигурацию службы и исходный код внесены изменения, позволяющие использовать трассировку и журнал сообщений. Кроме того, привязка WSHttpBinding настроена без использования средств безопасности, что позволяет просматривать сообщения в журнале в формате без шифрования. Полученные журналы трассировки (System.ServiceModel.e2e и Message.log) должны просматриваться с помощью средства просмотра трассировки службы (SvcTraceViewer.exe). В конфигурации задана следующая папка для создания трассировок: C:\LOGS. Создайте эту папку, прежде чем выполнять код из этого образца. Чтобы просмотреть содержимое сообщения в средстве просмотра трассировки, выберите "Сообщения " в левой и правой области средства.

В следующем примере кода приведен контракт службы, в котором свойству Use задано значение OperationFormatUse, и вместо формата тела сообщения по умолчанию (OperationFormatStyle) задан формат Document.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
                                 Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
}

Чтобы проверить различия между параметрами Use и Style, измените их для службы, заново создайте клиент, выполните пример и просмотрите файл c:\logs\message.logs с помощью средства Service Trace Viewer. Кроме того, просмотрите влияние на метаданные http://localhost/ServiceModelSamples/service.svc?wsdl. Метаданные служб обычно подразделяются на несколько страниц. Основная страница wsdl содержит привязки WSDL, но просмотр http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 определений сообщений.

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

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

  2. Создайте каталог C:\LOGS для регистрации сообщений. Предоставьте сетевой службе пользователя разрешение на запись в этот каталог.

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

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