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


Настройка свойств использования и стиля

Пример 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по умолчанию . Литерал означает, что сообщение является литеральным экземпляром схемы в WSDL, как показано в примере Документ/Литерал ниже.

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

Кодированный означает, что схемы в 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 Основной профиль 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 с помощью средства просмотра трассировки службы. Кроме того, просмотрите влияние на метаданные http://localhost/ServiceModelSamples/service.svc?wsdl. Метаданные служб обычно разбиваются на несколько страниц. Основная страница WSDL содержит привязки WSDL, но введите http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0, чтобы наблюдать определения сообщений.

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

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

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

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

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