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.
L'esempio di XmlReader illustra l'elaborazione del corpo di un messaggio utilizzando una classe XmlReader. L'esempio si bassa su Esempio della guida introduttiva, che implementa un servizio di calcolatrice. Un'operazione del servizio aggiuntiva, Sumè stata aggiunta, essa accetta messaggi che contengono una matrice di valori da sommare. Il servizio legge il messaggio utilizzando una classe XmlReader.
Nota
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.
L'interfaccia della calcolatrice include un'operazione del servizio denominata Sum che accetta un parametro Message, come mostra il codice di esempio seguente.
public interface ICalculator
{
[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);
[OperationContract]
Message Sum(Message message);
}
Il client accede a Sum creando innanzitutto una matrice di valori integer, e successivamente un messaggio dalla matrice. Chiama quindi il metodo Sum utilizzando il messaggio creato, come mostra il codice di esempio seguente.
CalculatorClient client = new CalculatorClient();
...
// Call the Sum service operation.
int[] values = { 1, 2, 3, 4, 5 };
using (new OperationContextScope(client.InnerChannel))
{
Message request = Message.CreateMessage(OperationContext.Current.OutgoingMessageHeaders.MessageVersion, "http://Microsoft.ServiceModel.Samples/ICalculator/Sum", values);
Message reply = client.Sum(request);
int sum = reply.GetBody<int>();
Console.WriteLine("Sum(1,2,3,4,5) = {0}", sum);
}
Nel servizio, l'implementazione dell'operazione del servizio Sum accede al corpo del messaggio utilizzando un oggetto XmlReader per scorrere i valori da sommare. Il metodo GetReaderAtBodyContents viene chiamato per accedere al corpo del messaggio, come mostra il codice di esempio seguente.
public int Sum(Message message)
{
int sum = 0;
string text = "";
//The body of the message contains a list of numbers that are read
//directly using an XmlReader.
XmlReader body = message.GetReaderAtBodyContents ();
while (body.Read())
{
text = body.ReadString().Trim();
if (text.Length>0)
{
sum += Convert.ToInt32(text);
}
}
body.Close();
Message response = Message.CreateMessage(
"http://Microsoft.ServiceModel.Samples/ICalculator/SumResponse",
sum);
return response;
}
Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Premere INVIO nella finestra del client per arrestare il client.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Sum(1,2,3,4,5) = 15
Press <ENTER> to terminate client.
Per impostare, compilare ed eseguire l'esempio
Assicurarsi di aver eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Per generare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.
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.