Partager via


Exemple de XmlReader

L’exemple XmlReader illustre le traitement d’un corps de message à l’aide d’un XmlReader. L’exemple est basé sur la prise en main, qui implémente un service de calculatrice. Une opération de service supplémentaire, Sum, a été ajoutée ; elle accepte un message contenant un tableau de valeurs à additionner. Le service lit le message à l’aide d’un XmlReader.

Remarque

La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.

L’interface de calculatrice inclut une opération de service nommée Sum qui accepte un Message paramètre, comme indiqué dans l’exemple de code suivant.

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

Le client accède d’abord en créant un tableau de valeurs entières Sum , puis en créant un message à partir du tableau, puis en appelant la Sum méthode à l’aide du message créé, comme illustré dans l’exemple de code suivant.

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

Dans le service, l'implémentation de l'opération de service Sum accède au corps du message à l'aide d'un objet XmlReader pour parcourir les valeurs à additionner. La GetReaderAtBodyContents méthode est appelée pour accéder au corps du message, comme indiqué dans l’exemple de code suivant.

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

Lorsque vous exécutez l’exemple, les requêtes et les réponses de l’opération s’affichent dans la fenêtre de console cliente. Appuyez sur Entrée dans la fenêtre du client pour arrêter le 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.

Pour configurer, générer et exécuter l’exemple

  1. Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.

  3. Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, conformez-vous aux instructions figurant dans la rubrique Exécution des exemples Windows Communication Foundation.