Bagikan melalui


Sampel XmlReader

Sampel XmlReader menunjukkan pemrosesan isi pesan menggunakan XmlReader. Sampel ini didasarkan pada Memulai yang mengimplementasikan layanan kalkulator. Operasi layanan tambahan, Sum, telah ditambahkan yang menerima pesan yang berisi larik nilai untuk ditambahkan bersama-sama. Layanan membaca pesan menggunakan XmlReader.

Catatan

Prosedur penyiapan dan petunjuk pembuatan untuk sampel ini terdapat di akhir topik ini.

Antarmuka kalkulator mencakup operasi layanan bernama Sum yang menerima parameter, seperti Message yang ditunjukkan dalam kode sampel 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 larik nilai bilangan bulat, lalu membuat pesan dari larik, lalu memanggil metode Sum 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 layanan Sum mengakses isi pesan menggunakan objek XmlReader untuk beralih 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 tanggapan operasi ditampilkan di jendela konsol klien. Tekan ENTER di jendela klien untuk mematikan komputer 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, membangun, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.