Freigeben über


XmlReader-Beispiel

Das XmlReader-Beispiel veranschaulicht die Verarbeitung eines Nachrichtentexts mithilfe eines XmlReader. Das Beispiel basiert auf dem Erste Schritte, der einen Rechnerdienst implementiert. Ein zusätzlicher Dienstvorgang wurde hinzugefügt, Sumder eine Nachricht akzeptiert, die ein Array von Werten enthält, die addiert werden sollen. Der Dienst liest die Nachricht mit einem XmlReader.

Hinweis

Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Die Rechnerschnittstelle enthält einen Dienstvorgang mit dem Namen Sum , der einen Message Parameter akzeptiert, wie im folgenden Beispielcode dargestellt.

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 zu Sum , indem zuerst ein Array mit ganzzahligen Werten erstellt wird, dann eine Nachricht aus dem Array erstellt und dann die Methode mithilfe der Sum erstellten Nachricht aufgerufen wird, wie im folgenden Beispielcode gezeigt.

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. Die GetReaderAtBodyContents Methode wird aufgerufen, um auf den Nachrichtentext zuzugreifen, wie im folgenden Beispielcode gezeigt.

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 Clientkonsolenfenster angezeigt. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.

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

  1. Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.

  2. Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.