Bagikan melalui


Sampel XmlReader

Sampel XmlReader menunjukkan pemrosesan isi pesan menggunakan XmlReader. Sampel didasarkan pada Panduan Memulai, yang mengimplementasikan layanan kalkulator. Operasi layanan tambahan, Sum, telah ditambahkan untuk menerima pesan yang mengandung array nilai yang akan dijumlahkan. Layanan membaca pesan menggunakan XmlReader.

Nota

Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.

Antarmuka kalkulator terdapat operasi layanan bernama Sum yang menerima parameter Message, seperti yang ditunjukkan dalam contoh kode berikut.

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

Klien mengakses Sum dengan terlebih dahulu membuat array nilai bilangan bulat, lalu membuat pesan dari array, lalu memanggil Sum metode menggunakan pesan yang dibuat, seperti yang ditunjukkan dalam kode sampel berikut.

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

Dalam layanan, implementasi operasi Sum layanan mengakses isi pesan menggunakan XmlReader objek untuk melakukan iterasi melalui nilai yang akan dijumlahkan. Metode GetReaderAtBodyContents ini dipanggil untuk mengakses isi pesan, seperti yang ditunjukkan dalam kode sampel berikut.

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

Saat Anda menjalankan sampel, permintaan dan respons operasi ditampilkan di jendela konsol klien. Tekan ENTER di jendela klien untuk mematikan klien.

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.

Untuk menyiapkan, mengompilasi, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.