Home > .NET Remoting, Visual C# > Pembuatan Aplikasi Client Server dengan Arsitektur 3-tier Part 3

Pembuatan Aplikasi Client Server dengan Arsitektur 3-tier Part 3

March 23, 2012

Melanjutkan postingan sebelumnya, kita langsung saja menambahkan kode untuk membuat koneksi ke database dalam hal ini sy menggunakan database Ms Access.

Aktifkan class BukuDao setelah itu tambahkan kode berikut dibagian constructor default (constructor tanpa parameter).

// constructor
public BukuDao()
{
    string appDir = System.IO.Directory.GetCurrentDirectory();
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + appDir + "\\DbPerpus.mdb;User Id=admin;Password=;";
    conn = new OleDbConnection(strConn);
    conn.Open();
}

Alasan sy menggunakan constructor default untuk membuat koneksi ke database adalah karena remote object dari class BukuDao akan diaktifkan menggunakan mode SingleCall, dengan kata lain mode SingleCall hanya bisa memanggil constructor default.

Penjelasan tentang mode SingleCall bisa anda cek disini di bagian “Server Side Object Activation. SingleCall”.

Sebelumnya kita akan melakukan testing terlebih untuk memastikan bahwa class BukuDao sudah bekerja dengan baik.

Untuk melakukan testing ada beberapa cara yang bisa kita lakukan, yang pertama dan sangat dianjurkan kita bisa menggunakan tool testing semisal NUnit, atau dengan cara yang lebih simple dengan memanfaatkan program console.

Untuk menyederhanakan pembahasan sy memilih opsi kedua tetapi sebelumnya kita harus mengeset terlebih dulu agar project SmartLibraryServer sebagai StartUp Project.

Caranya dengan mengklik kanan project SmartLibraryServer -> Set as StartUp Project.

Aktifkan class Program, setelah itu kita akan melakukan testing satu persatu semua method yang dimiliki oleh class BukuDao, berikut kode lengkapnya.

using SmartLibraryLib.Model;
using SmartLibraryServer.Dao;

Menambahkan data buku

int result = 0;

// buat objek buku
Buku buku = new Buku();
buku.ISBN = "12345";
buku.Judul = "Bahasa Indonesia";
buku.Edisi = "I";
buku.Bahasa = "Indonesia";
buku.Penerbit.PenerbitID = 1;

BukuDao bukuDao = new BukuDao();
result = bukuDao.Save(buku);
if (result > 0)
{
    Console.WriteLine("Data buku berhasil ditambahkan");
}
else
{
    Console.WriteLine("Data buku gagal ditambahkan");
}

Mengedit data buku

Untuk mengedit data buku sama seperti menambahkan buku baru, hanya saja yang dipanggil adalah method Update

// buat objek buku
Buku buku = new Buku();
buku.ISBN = "12345";
buku.Judul = "Bahasa Indonesia";
buku.Edisi = "I";
buku.Bahasa = "Indonesia";
buku.Penerbit.PenerbitID = 1;

BukuDao bukuDao = new BukuDao();
result = bukuDao.Update(buku); // bedanya cuma disini
if (result > 0)
{
    Console.WriteLine("Data buku berhasil diupdate");
}
else
{
    Console.WriteLine("Data buku gagal diupdate");
}

Menghapus data buku

// buat objek buku
Buku buku = new Buku();
buku.ISBN = "12345";

BukuDao bukuDao = new BukuDao();
result = bukuDao.Delete(buku);
if (result > 0)
{
    Console.WriteLine("Data buku berhasil dihapus");
}
else
{
    Console.WriteLine("Data buku gagal dihapus");
}

Menampilkan data buku

Sedikit beda dengan method Save, Update dan Delete untuk menampilkan data buku kita membutuhkan class Collection menampung kumpulan objek buku.

BukuDao bukuDao = new BukuDao();
List<Buku> daftarBuku = bukuDao.GetAll();
foreach (Buku buku in daftarBuku)
{
    Console.WriteLine(buku.ISBN + ", " + buku.Judul);
}

Semua kode diatas diketik pada method Main dari class Program

Menjadikan project RetailManagerServer sebagai host untuk menghandle remote object

Setelah selesai melakukan testing terhadap class BukuDao saatnya untuk menghostkan remote object dari class ini.

Remote object tidak bisa berdiri sendiri sehingga membutuhkan aplikasi lain yang bertindak sebagai host yang akan mengekspose remote object sehingga bisa diakses secara remote (diluar domainnya).

Ada beberapa cara untuk bisa menghostkan remote object bisa menggunakan aplikasi console, aplikasi windows form, mendaftarakan sebagai windows service atau menggunakan web service IIS.

Pada postingan ini sy menggunakan solusi termudah yaitu menggunakan aplikasi console😀.

Tapi sebelumnya karena class Program akan mengakses class-class yang berhubungan dengan fitur .NET Remoting maka kita harus menambahkan terlebih dulu referensi library .NET Remoting.

1. Klik kanan node 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.

Kembali ke class Program kemudian lengkapi kodenya seperti gambar berikut :

Perhatikan gambar diatas terutama yang diberi penanda merah, kode tersebut akan menjadi alamat dari remote object.

Ketika aplikasi klien ingin mengakses remote object yang ada di server, maka alamat url yang harus diakses menggunakan format berikut :

Dan berdasarkan kasus yang kita bahas maka nilai-nilai diatas disesuaikan seperti berikut :

  • Channel/protocol = tcp
  • Machine Name = localhost
  • Port = 1234
  • Object URI = SmartLibraryServer.BukuDao atau SmartLibraryServer.PenerbitDao

Sampai disini selesai sudah pembahasan tentang project SmartLibraryServer, kita bisa mencoba project ini dengan menekan tombol F5

Project terakhir yaitu SmartLibraryClient akan kita bahas pada kesempatan berikutnya insyaAllah🙂

Selamat MENCOBA🙂

  1. March 28, 2012 at 1:33 pm

    om, sistem CS 3 tier pake vb 6 bisa g,

    • March 29, 2012 at 8:32 am

      Yg jelas bisa om, salah satunya bisa menggunakan DCOM

    • March 30, 2012 at 2:29 pm

      ada contoh codingnya om, belum ngeh maksud dari fungsi DCOM,
      kalau saya buat pake ado, trus saya sharing file/virtual direktory bisa g om.., tq

      • March 30, 2012 at 3:32 pm

        Bukannya di link yg udah sy kasih diatas udah ada contoh kodenya ?

        Sharing file ? Berarti databasenya mau pake Ms Access nih ? Mendingan pake database yg udah support client server seperti Firebird dan MySQL

        • April 1, 2012 at 12:23 am

          databasenya pake mysql, tapi yang di sharing file aplikasinya, misalnya saya buat folder husu aplikasi terus saya share/virtual direktory ke jaringan bisa g om…mohon pencerahanya. maaf yh om agk cerewet cz masih awam banget di 3 tier.

          • April 2, 2012 at 12:46 pm

            Coba baca postingan sy yg disini om, mana tau dapat sendikit pencerahan apa itu aplikasi 3-tier

          • April 4, 2012 at 12:54 pm

            Alhamdulillah ketemu juga contoh vb 6 pake dcom. bagi yang mu memepelajarinya klik link berikut.

            http://p3m.amikom.ac.id/p3m/dasi/des06/02%20-%20STMIK%20AMIKOM%20Yogyakarta%20Makalah%20ANDI%20SUNYOTO.pdf

            • April 4, 2012 at 1:10 pm

              He he he

              Punya pak Andi Sunyoto ya ? Mantan dosen sy dl, udah jadul banget😀

              Dari pengalaman sy DCOM itu agak ribet waktu mendistribusikan komponennya

              • April 4, 2012 at 1:19 pm

                y om, saya tanya dari om google, -_-, tq om atas infonya

              • April 4, 2012 at 1:30 pm

                trus cara paling mudah selain dcom apa om

                • April 4, 2012 at 1:35 pm

                  Dicoba dulu aja om dan rasakan sensasinya ha ha ha😀

                  • April 13, 2012 at 4:59 pm

                    om cara bikin DCOM Client sama DCOM Server di win XP caranya gmana om,, mohon pencerahanya. makasi

                    • April 14, 2012 at 9:12 am

                      Wah udah lupa om, coba kesini aja.

                    • April 20, 2012 at 6:11 pm

                      om mnt tolong lagi hehehe.
                      saya kesulitan banget-_-, pd waktu saya menambahkan koding

                      Set objContext = GetObjectContext()

                      pada saat di compile kode diatas bermasalah, katnya g knal, terus saya cari tau di microsoft.com katannya pada project > reference, harus mengaktifkan ‘Microsoft Transaction Server Type Library'(MTXAS.DLL)
                      ketika saya cari-cari g ktmu, solusinya gmna om, agar ada tuh file(mtxas.dll)
                      mohon pncerahanya..

                    • April 22, 2012 at 6:38 am

                      Coba download disini om

  2. eko
    March 29, 2012 at 5:46 am

    pagi mas kam4r, btw klo mo buat aplikasi kita bisa autorun saat windows dihidupkan sourcodenya gmana y??rencana saya mo buat program backup otomatis

    • March 29, 2012 at 8:34 am

      Daftarkan ke windows registry aja, lokasinya disini :

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
      
      • April 7, 2012 at 11:19 pm

        mas, ini di copynya kemana ya ? . di copy ke source code VB atau lewat command prompt ?? mohon infonya mas😀 thank’s before

        • April 9, 2012 at 3:52 pm

          Itukan lokasi di registry windows om, nah disini ada sample kode untuk menulis ke registry windows via vb6

  3. eko
    March 30, 2012 at 9:06 am

    kalau autorunnya kita buat lewat coding mz misal pakai check box gtu,, bisa kita aktifkan atau di matikan…sblmnya terima kasih banyak nanya nie…

    • March 30, 2012 at 9:45 am

      Ya pake fungsi API om, sy pernah membahas bagaimana menulis ke windows registry disini.

  4. eko
    March 30, 2012 at 11:36 am

    ok maz thanx atas jawabannya maz akan saya coba,,,petunjukanya

    • March 30, 2012 at 3:30 pm

      Oke om sipp🙂

  5. April 4, 2012 at 1:02 pm

    om mau tanya lagi,
    cara membuat repot pake crystal repot/AR, agar otomatis refresh sendiri ke database gimana om,
    masalahnya pernah coba, ketika program di jalankan di komputer lain, file reportnya harus di refresh dari crystal repotnya, gimana caranya agara file repot tadi yang kita buat otomatis refresh ke database, mohon pencerahanya.

    • April 4, 2012 at 1:13 pm

      Klo pake AR kan seperti DataReport udah nyatu dg project vbnya jadi enggak perlu pake refresh lagi.

      Klo CR ya sy udah lama sy tinggalkan jadi udah lupa😀

  6. April 4, 2012 at 1:26 pm

    om gmana caranya penanganan eror, pada saat program kita di jalankan ke komputer lain, kadangkan keluar peasan file x tidak ditemukan/tidak ada, misalkan adodc, datagrid (komponen yang kita tambahkan pada project).

    • April 4, 2012 at 1:34 pm

      Ya jangan cuma copas file exenya aja om, makanya perlu dibuat paket instalasi

      • April 4, 2012 at 1:48 pm

        minta file/folder contohnya om, karena saya sudah coba berkali-kali gagal terus alias g berhasil2, tolong y om….

  7. thepooh2009
    April 13, 2012 at 9:07 am

    Om Kam4r, mohon pencerahannya kalo client meminta add/edit/update database di server menggunakan winsock di server request menulis ke database bagaimana?

    • April 13, 2012 at 9:22 am

      Nah ini ada contoh yang pas

  8. thepooh2009
    April 13, 2012 at 12:49 pm

    Om, contohnya udah saya coba dan sukses cuma bisa ga di gabung sama contoh winsock yang latihan 3, saya kesulitan buat modif nya di latihan winsock 3… makasih atas pencerahannya…

    • April 13, 2012 at 3:36 pm

      Klo enggak salah aplikasi servernya juga udah pake winsock array kan ?
      Trus buat apa digabung ?

      • thepooh2009
        April 15, 2012 at 5:12 pm

        maksudnya command untuk save data di server om

  9. April 26, 2012 at 9:57 am

    om admin ada contoh source code input data di flexgrid langsung gak terus langsung simpan, jadi gak mengclick satu persatu command simpan gitu,,,

    • April 27, 2012 at 9:41 am

      Kan udah banyak om yg membahas masalah ini coba digoogling dulu, trus flexgrid disini maksudnya komponen MSFlexGrid atw VSFlexGrid (componenone)

      • April 27, 2012 at 1:58 pm

        ya om yang di VSFlexGrid, ada contoh ya gak om

        • April 27, 2012 at 2:04 pm

          Waktu nginstall VSFlexGridnya kan ada sample bawaannya, klo enggak salah sudah ada samplenya

  10. dimas
    April 27, 2012 at 12:40 pm

    om, bisa tidak dengan remoting, dari client mengirim 1 pesan ke server dan server membalasnya dengan lebih dari 1 pesan berturut-turut

    • April 27, 2012 at 12:59 pm

      Ke klien yg sama ? Ya bisa lah

  11. June 15, 2012 at 11:47 am

    om, saya sudah coba konek database ms access pake ADODC, , dengan properties record source sudah saya atur , selanjutnya untuk menginput data ke ms access menggunakan comandbutton gmn ya om ?

    • June 16, 2012 at 8:53 am

      Coba kesini dulu om.

  12. fajar
    February 26, 2013 at 8:58 am

    om kalo ” public class BukuDao : MarshalByRefObject, IBukuDao ” di vb net caranya gimana ya?hehehe. kalo inherits di vb.net cuma bisa satu aja MarshalByRefObject atau IBukuDao

    trima kasih sebelumnya

    • February 26, 2013 at 9:38 am

      kode

      public class BukuDao : MarshalByRefObject, IBukuDao
      

      Bukan multiple inherit, klo di C# memang langsung bisa digabung penulisan Inherits dan Implements.

      Jadi klo di VB.NET kodenya jadi seperti ini :

      Public Class BukuDao
          Inherits MarshalByRefObject
          Implements IBukuDao
      
          ' TODO : kode class BukuDao
      End Class
      
      • fajar
        February 28, 2013 at 9:54 am

        bisa om. trima kasih banyak.

        ngomong2 bisa kasih tips cara belajarnya om.
        biar bisa expert kaya si om ini

        hehehehe…

        • February 28, 2013 at 1:36 pm

          Tipsnya sederhana om usaha (coding… coding… and coding…) dan doa🙂

  13. March 10, 2014 at 12:26 am

    Om K4mar…. Buat tutorial 3 Tier untuk VB.Net nya dong Oom….🙂 Please ya…😀

    • March 10, 2014 at 12:39 pm

      Kan sama aja om, tinggal dibolak-balik bahasanya😀

  14. menir
    March 12, 2014 at 2:01 am

    maaf gan kokdi projek SmartLibraryServer ada Class DbConector Kapan buatnya..??

    maaf nyubie banget nih..

    • March 12, 2014 at 6:20 am

      Iya om, dipostingan di atas memang tidak saya bahas pembuatannya, soalnya nanti kepanjangan dan membosankan😀.
      Sesuai namanya class DbConnector mempunyai method GetConnection untuk melakukan koneksi ke database.

  15. menir
    March 15, 2014 at 9:40 pm

    OWH.. ok min maaf naya lagi nama database nya apa ya om..??

  16. menir
    March 15, 2014 at 9:43 pm

    g jadi om udah ada thnx..

    • March 16, 2014 at 11:49 am

      Oke sipp🙂

  17. rizaru
    March 17, 2014 at 8:48 pm

    yang vb .net nya ada gak om ?
    hehehehe…..

    • March 17, 2014 at 9:10 pm

      Enggak ada om, bukannya mirip bahasanya ya ? Tinggal bolak balik😀

  1. No trackbacks yet.
Comments are closed.
%d bloggers like this: