Przykład klasy XmlReader
Przykład XmlReader demonstruje przetwarzanie treści komunikatu przy użyciu elementu XmlReader. Przykład jest oparty na rozpoczynaniu pracy, która implementuje usługę kalkulatora. Dodano dodatkową operację Sum
usługi , która akceptuje komunikat zawierający tablicę wartości do dodania razem. Usługa odczytuje komunikat przy użyciu elementu XmlReader.
Uwaga
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Interfejs kalkulatora zawiera operację usługi o nazwie Sum
, która akceptuje Message parametr, jak pokazano w poniższym przykładowym kodzie.
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);
}
Klient uzyskuje dostęp Sum
, tworząc najpierw tablicę wartości całkowitych, a następnie tworząc komunikat z tablicy, a następnie wywołując Sum
metodę przy użyciu utworzonego komunikatu, jak pokazano w poniższym przykładowym kodzie.
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);
}
W usłudze implementacja operacji Sum
usługi uzyskuje dostęp do treści komunikatu przy użyciu XmlReader obiektu w celu iterowania wartości w celu zsumowania. Metoda jest wywoływana GetReaderAtBodyContents w celu uzyskania dostępu do treści komunikatu, jak pokazano w poniższym przykładowym kodzie.
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;
}
Po uruchomieniu przykładu żądania i odpowiedzi operacji są wyświetlane w oknie konsoli klienta. Naciśnij klawisz ENTER w oknie klienta, aby zamknąć klienta.
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.
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).
Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.