Impostazione delle proprietà Use e Style

In questo esempio viene illustrato l'utilizzo delle proprietà Use e Style in XmlSerializerFormatAttribute e DataContractFormatAttribute. Queste proprietà influiscono sulla formattazione dei messaggi. Per impostazione predefinita, la formattazione del corpo del messaggio prevede che lo stile sia impostato su Document. Queste impostazioni possono essere specificate a livello del contratto di servizio o a livello del contratto dell'operazione.

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

La proprietà di stile Style determina come vengono formattati i metadati WSDL per il servizio. I valori possibili sono Document e Rpc. RPC indica che la rappresentazione WSDL dei messaggi scambiati in un'operazione contiene parametri analoghi a quelli di una chiamata a procedura remota. Di seguito è riportato un esempio.

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

Se si imposta lo stile su Document la rappresentazione WSDL contiene un solo elemento che rappresenta il documento scambiato in un'operazione, come mostrato nell'esempio seguente.

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

La proprietà Use determina il formato del messaggio. I valori possibili sono Literal e Encoded. Il valore predefinito è Literal. Literal significa che il messaggio è un'istanza letterale dello schema nel linguaggio WSDL, come illustrato nell'esempio documento/letterale seguente.

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

Encoded indica che gli schemi nel linguaggio WSDL sono specifiche astratte codificate secondo le regole trovate nella sezione 5 della specifica di SOAP 1.1. Di seguito è riportato un esempio RPC/codificato.

<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>

L'utilizzo di Encoded è proibito in WS-I Basic Profile 1.0 e deve essere utilizzato solo quando richiesto dai servizi legacy. Il formato di messaggio Encoded è disponibile solo quando si utilizza XmlSerializer.

Per poter visualizzare i messaggi inviati e ricevuti, questo esempio si basa su Traccia e registrazione dei messaggi. La configurazione del servizio e il codice sorgente sono stati modificati per attivare e utilizzare la traccia e la registrazione dei messaggi. WsHttpBinding è stato inoltre configurato senza la protezione, pertanto i messaggi registrati possono essere visualizzati in un formato non crittografato. I log di traccia risultanti (System.ServiceModel.e2e e Message.log) devono essere visualizzati utilizzando lo Service Trace Viewer Tool. Le tracci vengono configurate per essere create nella cartella C:\LOGS. Creare la cartella prima di eseguire l'esempio. Per visualizzare il contenuto del messaggio nello strumento visualizzatore delle tracce, selezionare Messaggi nei riquadri di sinistra e di destra dello strumento.

Nel codice seguente viene descritto il contratto di servizio con la proprietà Use impostata su Encoded e il formato del corpo del messaggio modificato dal valore predefinito Document a 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);
}

Per visualizzare la differenza tra le impostazioni Use e Style, modificarle nel servizio, rigenerare il client, eseguire l'esempio ed esaminare il file c:\logs\message.logs con lo strumento Visualizzatore di tracce dei servizi. Osservare inoltre l'impatto sui metadati visualizzando https://localhost/ServiceModelSamples/service.svc?wsdl. I metadati per i servizi in genere vengono suddivisi su più pagine. La pagina wsdl principale contiene le associazioni WSDL, ma è necessario visualizzare https://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 per osservare le definizioni del messaggio.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Creare una directory C:\LOGS per la registrazione dei messaggi. Assegnare all'account Servizio di rete le autorizzazioni di scrittura per questa directory.

  3. Per generare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  4. Per eseguire l'esempio su un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.