Aracılığıyla paylaş


XmlReader Örneği

XmlReader örneği, bir ileti gövdesinin işlenmesini XmlReader kullanarak gösterir. Örnek, bir hesap makinesi hizmetini uygulayan Başlangıç Kılavuzu'na dayanır. Birlikte eklenecek bir değer dizisi içeren bir iletiyi kabul eden ek bir hizmet işlemi Sumeklendi. Hizmet, mesajı bir XmlReader kullanarak okur.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Hesap makinesi arabirimi, aşağıdaki örnek kodda gösterildiği gibi Sum parametresini kabul eden Message adlı bir hizmet işlemi içerir.

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

İstemci, önce bir tamsayı değerleri dizisi oluşturarak, ardından diziden bir ileti oluşturarak ve son olarak aşağıdaki örnek kodda gösterildiği gibi oluşturulan iletiyi kullanarak Sum yöntemini çağırarak Sum erişir.

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

Hizmette, hizmet işleminin Sum uygulanması, değerleri toplamak için yinelemek amacıyla bir XmlReader nesne kullanarak ileti gövdesine erişir. yöntemi GetReaderAtBodyContents , aşağıdaki örnek kodda gösterildiği gibi ileti gövdesine erişmek için çağrılır.

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

Örneği çalıştırdığınızda, işlemin istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.