Tutorial .NET Remoting Part 4 – Project CalculatorKlien

Posted by Kamarudin • 4 minute read • Comments

Ada informasi yg lupa sy sampaikan pada postingan sebelumnya yaitu diproject calculator ini sy menggunakan protokol TCP, makanya namespace yg sy tambahkan di class Program yang ada diproject CalculatorServer adalah :

using System.Runtime.Remoting.Channels.Tcp;

bukan

using System.Runtime.Remoting.Channels.Http;

Alasannya sederhana karena project ini diuji coba pada jaringan lokal jadi protokol yang disarankan adalah tcp bukan http.

Project terakhir yang akan kita buat adalah CalculatorKlien, project ini sudah berbasis Windows Application jadi biar keliatan lebih interaktif :)

CalculatorKlien sebenarnya “dummy project” untuk melakukan perhitungan sederhana saja tidak bisa sehingga membutuh pertolongan server untuk melakukannya :grin:

Yg berperan disini adalah objek proxy, jadi dengan adanya objek ini “seakan-akan” objek yg ada diserver (remote object) berada dilokalan.

Objek proxy memegang referensi dari remote object, sedikit beda dg “memegang referensi” yg selama ini kita pelajari pada matakuliah struktur data yaitu pointer (penunjuk) kealamat memory tertentu, tetapi referensi yang ditunjuk oleh proxy lebih berupa “server name/IP address plus unix id” dari remote object.

Kata kuncinya adalah semua method yang dipanggil oleh objek proxy akan “dieksekusi” di sisi server.

Kayaxnya cukup untuk intro aplikasi kliennya, langsung saja kita coba pembuatannya tentunya dengan mengaktifkan terlebih dulu solution “Calculator” yg sudah kita buat pada postingan sebelumnya.

Membuat Project CalculatorKlien

  1. Klik kanan Solution Calculator -> Add -> New Project …

  2. Pada dialog Add New Project aktifkan pilihan Visual C# kemudian pada pilihan Templates pilih Windows Application

    Pada isian Name isikan CalculatorKlien untuk isian Location dibiarkan saja setelah itu klik Ok, jika langkah sebelumnya berhasil maka pada solution Calculator akan ketambahan 1 project baru yaitu CalculatorKlien

Desain UI

Untuk desainnya formnya sederhana saja, harap maklum sy enggak biasa mendesain form yg menarik :grin:

Oke saatnya “mengerjai” project CalculatorKlien :grin:

Sama seperti project CalculatorServer, CalculatorKlien juga membutuhkan referensi dari CalculatorLib.dll jadi kita tambahkan dulu library yg satu ini.

  1. Klik kanan folder References -> Add Reference…

  2. Aktifkan tab Projects kemudian pilih project CalculatorLib

  3. Jika langkah sebelumnya berhasil akan ketambahan 1 buah node dengan nama CalculatorLib pada folder References

Karena pada class ini juga akan mengakses class-class yang berhubungan dengan fitur .NET Remoting maka kita harus menambahkan terlebih dulu referensi library .NET Remoting.

  1. Klik kanan folder References -> Add Reference…

  2. Aktifkan tab .NET kemudian pilih System.Runtime.Remoting

  3. Jika langkah sebelumnya berhasil akan ketambahan 1 buah node dengan nama System.Runtime.Remoting pada folder References

Sampai disini kita sudah bisa mulai melengkapi kode untuk Form Calculatornya

Untuk variabel port dan uri disesuaikan dg settingan di server

untuk sisa kode lainnya seperti berikut :

private void Form1_Load(object sender, EventArgs e)
{
    cmbOperasi.Items.Add("Penambahan");
    cmbOperasi.Items.Add("Pengurangan");
    cmbOperasi.Items.Add("Perkalian");
    cmbOperasi.Items.Add("Pembagian");

    cmbOperasi.DropDownStyle = ComboBoxStyle.DropDownList;
    cmbOperasi.SelectedIndex = 0;

    txtHasil.Enabled = false;
}
private void btnProses_Click(object sender, EventArgs e)
{
    int result = 0;

    // nilai 1 tidak boleh kosong
    if (txtNilai1.Text.Length == 0) return;

    // nilai 2 tidak boleh kosong
    if (txtNilai2.Text.Length == 0) return;

    int nilai1 = int.Parse(txtNilai1.Text);
    int nilai2 = int.Parse(txtNilai2.Text);

    try
    {
        switch (cmbOperasi.SelectedIndex)
        {
            case 0: // penambahan
                result = calculator.Penambahan(nilai1, nilai2);
                break;

            case 1: // pengurangan
                result = calculator.Pengurangan(nilai1, nilai2);
                break;
            case 2: // perkalian
                result = calculator.Perkalian(nilai1, nilai2);
                break;

            default: // pembagian
                result = calculator.Pembagian(nilai1, nilai2);
                break;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    txtHasil.Text = result.ToString();
}

Sampai disini project CalculatorKlien sebenarnya sudah bisa dijalankan, tapi disini sy ingin sedikit membeberkan “rahasia” bahwa project CalculatorKlien diatas tetap bisa mengakses remote object tanpa harus menambahkan library .NET Remoting, jadi akan kita coba untuk menghapus library .NET Remoting.

dan tentunya juga diikuti dg menonaktifkan namesspace remoting dan kode lainnya yg mengakses class .NET Remoting

Awalnya sy juga bingung kok bisa, karena hampir disemua referensi yg ada untuk aplikasi klien tetap menambahkan library .NET Remoting, usut punya usut akhirnya sy menemukan jawabannya di ebook Distributed .NET Programming in C# karangan om Tom Barnaby, mungkin ada baiknya sy kutip aja pernyataan beliau.

In fact, if you are using one of the built-in .NET channels, HTTP or TCP, you do not have to register the channel object at all. The runtime will simply use the protocol and port information embedded in the URL to create and register the appropriate channel on your behalf.

Nah karna diproject Calculator ini sy menggunakan protokol tcp otomatis secara built-in sudah disupport oleh .NET

Untuk mengetes aplikasi Calculator ini kita harus menjalankan project CalculatorServer dan CalculatorKlien secara bersamaan tentunya dg urutan prioritas server dulu baru klien.

Adapun langkah-langkahnya sebagai berikut :

  1. Klik kanan solution Calculator -> Set StartUp Project…

  2. Aktifkan pilihan Multiple startup projects kemudian tentukan urutan prioritasnya

Dilanjutkan dengan menekan tombol F5 (Start Debugging)

Terlihat pada demo diatas setiap kali objek calculator memanggil method Penambahan, Pengurangan, Perkalian dan Pembagian semua prosesnya dilakukan diserver, hal ini dibuktikan dengan munculnya tulisan “Method xxx dieksekusi secara remote ….” pada saat mengklik tombol Proses.

Nah akhirnya selesai juga :grin:

Berhubung semua project sudah selesai, kode lengkap bisa didownload disini.

Untuk postingan berikutnya kita akan coba menerapkan .NET Remoting pada pembuatan aplikasi client server dg arsitektur 3-tier, insya Allah.

Selamat mencoba :blush:

Comments