XmlReader-voorbeeld
Het XmlReader-voorbeeld demonstreert de verwerking van een berichttekst met behulp van een XmlReader. Het voorbeeld is gebaseerd op aan de slag, waarmee een rekenmachineservice wordt geïmplementeerd. Er is een extra servicebewerking Sum
toegevoegd die een bericht accepteert dat een matrix met waarden bevat om samen te voegen. De service leest het bericht met behulp van een XmlReader.
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
De rekenmachineinterface bevat een servicebewerking met de naam Sum
die een Message parameter accepteert, zoals wordt weergegeven in de volgende voorbeeldcode.
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);
}
De client opent Sum
door eerst een matrix met gehele getallen te maken, vervolgens een bericht te maken op basis van de matrix en vervolgens de Sum
methode aan te roepen met behulp van het gemaakte bericht, zoals wordt weergegeven in de volgende voorbeeldcode.
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);
}
In de service krijgt de implementatie van de servicebewerking Sum
toegang tot de berichttekst met behulp van een XmlReader object om de waarden op te tellen. De GetReaderAtBodyContents methode wordt aangeroepen voor toegang tot de berichttekst, zoals wordt weergegeven in de volgende voorbeeldcode.
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;
}
Wanneer u het voorbeeld uitvoert, worden de aanvragen en antwoorden van de bewerking weergegeven in het clientconsolevenster. Druk op Enter in het clientvenster om de client af te sluiten.
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.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.