XmlReader-BeispielXmlReader Sample

Das XmlReader-Beispiel zeigt die Verarbeitung eines Nachrichtentexts mit einem XmlReader.The XmlReader sample demonstrates the processing of a message body using an XmlReader. Das Beispiel basiert auf der Einstieg, implementiert einen rechnerdienst.The sample is based on the Getting Started, which implements a calculator service. Ein weiterer Dienstvorgang wurde hingefügt (Sum), der Nachrichten mit einem Array von Werten entgegennimmt, die miteinander addiert werden sollen.An additional service operation, Sum, has been added that accepts a message that contains an array of values to add together. Der Dienst liest die Nachricht mit einem XmlReader.The service reads the message using an XmlReader.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The setup procedure and build instructions for this sample are located at the end of this topic.

Die Rechnerschnittstelle enthält einen Dienstvorgang namens Sum, der einen Message-Parameter entgegennimmt, wie im folgenden Beispielcode gezeigt.The calculator interface includes a service operation named Sum that accepts a Message parameter, as shown in the following sample code.

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);  
}  

Der Client greift auf Sum zu, indem er zuerst ein Array von ganzzahligen Werten erstellt, dann eine Nachricht aus dem Array erstellt und anschließend die Sum-Methode mit der erstellten Nachricht aufruft, wie im folgenden Beispielcode gezeigt.The client accesses Sum by first creating an array of integer values, then creating a message from the array, and then calling the Sum method using the created message, as shown in the following sample code.

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);  
}  

Im Dienst greift die Implementierung des Dienstvorgangs Sum mithilfe eines XmlReader-Objekts auf den Nachrichtentext zu, um die zu summierenden Werte zu durchlaufen.In the service, the implementation of the service operation Sum accesses the message body using an XmlReader object to iterate through the values to sum. Die GetReaderAtBodyContents-Methode wird aufgerufen, um auf den Nachrichtentext zuzugreifen, wie im folgenden Beispielcode gezeigt.The GetReaderAtBodyContents method is called to access the message body, as shown in the following sample code.

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

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten des Vorgangs im Konsolenfenster des Clients angezeigt.When you run the sample, the requests and responses of the operation are displayed in the client console window. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.Press ENTER in the client window to shut down the 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.  

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Um das Beispiel in einer einzelnen oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Message\XmlReader

Siehe auchSee Also