Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.
Creare una directory C:\LOGS per la registrazione dei messaggi. Concedere all'utente le autorizzazioni di scrittura del servizio di rete per questa directory.
Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.