Definindo as propriedades de uso e estilo
O exemplo UseAndStyle demonstra como usar as propriedades Use e Style no XmlSerializerFormatAttribute e no DataContractFormatAttribute. Estas propriedades afetam a forma como as mensagens são formatadas. Por padrão, o corpo da mensagem é formatado com o estilo definido como Document. Essas configurações podem ser especificadas no nível do contrato de serviço ou no nível do contrato de operação.
Nota
O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.
A Style propriedade style determina como os metadados WSDL para o serviço são formatados. Os valores possíveis são Document, e Rpc. RPC significa que a representação WSDL de mensagens trocadas para uma operação contém parâmetros como se fosse uma chamada de procedimento remoto. A seguir encontra-se um exemplo.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
Definir o estilo como Document significa que a representação WSDL contém um único elemento que representa o documento que é trocado por uma operação, conforme mostrado no exemplo a seguir.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
A Use propriedade determina o formato da mensagem. Os valores possíveis são Literal e Encoded; o valor padrão é Literal. Literal significa que a mensagem é uma instância literal do esquema no WSDL, conforme mostrado no seguinte exemplo Document/Literal.
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
Codificado significa que os esquemas no WSDL são especificações abstratas que são codificadas de acordo com as regras encontradas na seção 5 do SOAP 1.1. Segue-se um exemplo de 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>
O WS-I Basic Profile 1.0 proíbe o uso e Encoded você só deve usá-lo quando exigido por serviços herdados. O Encoded
formato de mensagem só está disponível ao usar o XmlSerializer.
Para permitir que você veja as mensagens que estão sendo enviadas e recebidas, este exemplo é baseado no Rastreamento e no Registro de Mensagens. A configuração do serviço e o código-fonte foram modificados para habilitar e utilizar o rastreamento e o registro de mensagens. Além disso, o WSHttpBinding foi configurado sem segurança, de modo que as mensagens registradas podem ser visualizadas em um formato não criptografado. Os logs de rastreamento resultantes (System.ServiceModel.e2e e Message.log) devem ser exibidos usando a ferramenta Service Trace Viewer Tool (SvcTraceViewer.exe). Os rastreamentos são configurados para serem criados na pasta C:\LOGS. Crie a pasta antes de executar o exemplo. Para exibir o conteúdo da mensagem na ferramenta Visualizador de Rastreamento, selecione Mensagens nos painéis esquerdo e direito da ferramenta.
O código a seguir mostra o contrato de serviço com a Use propriedade definida como OperationFormatUse e o formato do corpo da mensagem alterado do padrão OperationFormatStyle para 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);
}
Para ver a diferença entre as diferentes Use e Style as configurações, modifique-as no serviço, regenere o cliente, execute o exemplo e examine o arquivo c:\logs\message.logs com a ferramenta Service Trace Viewer. Observe também o impacto nos metadados visualizando http://localhost/ServiceModelSamples/service.svc?wsdl
. Os metadados dos serviços são normalmente divididos em várias páginas. A página wsdl principal contém as ligações WSDL, mas modo de exibição http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0
para observar as definições de mensagem.
Para configurar, compilar e executar o exemplo
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
Crie um diretório C:\LOGS para registrar mensagens. Conceda ao usuário permissões de gravação do Serviço de Rede para este diretório.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.
Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.