Condividi tramite


Impostazione delle proprietà Use e Style

Nell'esempio UseAndStyle viene illustrato come utilizzare le proprietà Use e Style in XmlSerializerFormatAttribute e .DataContractFormatAttribute Queste proprietà influiscono sulla formattazione dei messaggi. Per impostazione predefinita, il corpo del messaggio viene formattato con lo stile impostato su Document. Queste impostazioni possono essere specificate a livello di contratto di servizio o a livello di contratto dell'operazione.

Annotazioni

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

La Style proprietà style determina la formattazione dei metadati WSDL per il servizio. I valori possibili sono Document, e Rpc. RPC indica che la rappresentazione WSDL dei messaggi scambiati per un'operazione contiene parametri come se fosse una chiamata di 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>

L'impostazione dello stile su Document indica che la rappresentazione WSDL contiene un singolo elemento che rappresenta il documento scambiato per un'operazione, come illustrato nell'esempio seguente.

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

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

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

Codificato significa che gli schemi nel linguaggio WSDL sono specifiche astratte codificate in base alle regole disponibili nella sezione 5 di SOAP 1.1. Di seguito è riportato un esempio 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>

L'WS-I Profilo Basic 1.0 proibisce l'uso di Encoded, ma è consigliabile usarlo solo quando richiesto dai servizi legacy. Il formato del Encoded messaggio è disponibile solo quando si usa XmlSerializer.

Per consentire di visualizzare i messaggi inviati e ricevuti, questo esempio si basa sulla traccia e la registrazione dei messaggi. La configurazione del servizio e il codice sorgente sono stati modificati per abilitare e usare la traccia e la registrazione dei messaggi. Inoltre, WSHttpBinding è stato configurato senza sicurezza, in modo che i messaggi registrati possano essere visualizzati in un formato non crittografato. I log di traccia risultanti (System.ServiceModel.e2e e Message.log) devono essere visualizzati usando lo strumento Visualizzatore traccia del servizio (SvcTraceViewer.exe). Le tracce sono configurate per essere create nella cartella C:\LOGS. Creare la cartella prima di eseguire l'esempio. Per visualizzare il contenuto dei messaggi nello strumento Visualizzatore tracce, selezionare Messaggi sia a sinistra che a destra dello strumento.

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

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

Per configurare, compilare ed eseguire l'esempio

  1. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  2. Creare una directory C:\LOGS per la registrazione dei messaggi. Concedere all'utente le autorizzazioni di scrittura del servizio di rete per questa directory.

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

  4. Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.