Установка свойств Use и Style
В этом образце кода показано, как использовать свойства 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" >100</n1>
<n2 xsi:type="xsd:double" >15.99</n2>
</q1:Add>
Профиль WS-I Basic Profile 1.0 запрещает использование стиля Encoded, поэтому его следует использовать, только когда того требуют службы, созданные по устаревшим стандартам. Формат сообщений Encoded доступен только при использовании сериализатора XmlSerializer.
Для отображения всех отправляемых и получаемых сообщений в этом образце используется код из раздела Трассировка и ведение журнала сообщений. В конфигурацию службы и исходный код внесены изменения, позволяющие использовать трассировку и журнал сообщений. Кроме того, привязка WsHttpBinding настроена без использования средств безопасности, что позволяет просматривать сообщения в журнале в формате без шифрования. Результирующие журналы трассировки (System.ServiceModel.e2e и Message.log) следует просматривать с помощью средства Программа Service Trace Viewer (SvcTraceViewer.exe). В конфигурации задана следующая папка для создания трассировок: C:\LOGS. Создайте эту папку, прежде чем выполнять код из этого образца. Чтобы просмотреть содержимое сообщений с помощью средства Trace Viewer, выберите Сообщения в обеих областях этой программы (в левой и в правой).
В следующем примере кода приведен контракт службы, в котором свойству Use задано значение Encoded, и вместо формата тела сообщения по умолчанию (Document) задан формат Rpc.
[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. Также проверьте влияние на метаданные, просмотрев страницу https://localhost/ServiceModelSamples/service.svc?wsdl. Метаданные служб обычно подразделяются на несколько страниц. Основная страница с WSDL-кодом содержит привязки WSDL, но рекомендуется просмотреть страницу https://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 и проверить определения сообщений.
Настройка, построение и выполнение образца
Убедитесь, что выполнены процедуры, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.
Создайте каталог C:\LOGS для регистрации сообщений. Предоставьте сетевой службе пользователя разрешение на запись в этот каталог.
Чтобы выполнить построение версии решения для языка C# или Visual Basic .NET, следуйте инструкциям раздела Построение образцов Windows Communication Foundation.
Чтобы выполнить образец на одном или нескольких компьютерах, следуйте инструкциям в разделе Running the Windows Communication Foundation Samples.
![]() |
---|
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).
<диск_установки>:\WF_WCF_Samples
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WCF\Basic\Contract\Message\UseAndStyle
|