Masih melanjutkan postingan sebelumnya yaitu tentang .NET Remoting, tetapi kali ini kita akan mengimplementasikan .NET Remoting pada pembuatan aplikasi database, tapi sebelumnya kita lihat dulu kenapa kok report2x menggunakan .NET Remoting untuk pembuatan aplikasi database karena katanya “orang yang tidak tau itu cendrung memusuhi” halah :D.
Arsitektur Client Server 2-tier
Sadar atau enggak aplikasi yang kita buat selama ini mungkin lebih banyak (semua malahan :D) masuk kategori ini. Kok tau ?
Dari gambar diatas terlihat semua aplikasi klien terkoneksi ke server database dan mengeksekusi method CRUD (Create, Read, Update dan Delete), semakin banyak aplikasi kliennya tentu akan berpengaruh pada kinerja database, apalagi klo rule bisnisnya langsung diletakkan di klien jika ada perubahan otomatis harus mengupdate semua klien :(
Arsitektur Client Server 3-tier
Untuk yg 3 tier sebanyak apapun aplikasi kliennya tidak terlalu bermasalah karena yang terkoneksi ke database hanya satu yaitu aplikasi server, paling-paling spek mesin servernya aja yg dinaikin :D
Klo pengen lebih ngirit untuk aplikasi server bisa satu mesin dengan database, selain itu rule bisnis biasanya diletakkan disini, sehingga jika terjadi perubahan cukup mengupdate disatu tempat.
Nah berdasarkan 2 pertimbangan diatas, mungkin sudah muncul motivasi untuk mencoba .NET Remoting dalam pengembangan aplikasi database… klo iya silahkan lanjutkan membacanya :)
Untuk kasus project yg akan kita buat sederhana saja yaitu aplikasi SmartLibrary (SI Perpus) tentunya tidak semua :D kita ambil contoh pengolahan data buku dan penerbit, selain itu untuk alasan kemudahan databasenya cukup menggunakan Ms Access.
Oke sebelumnya kita lihat dulu project SmartLibrary yang akan kita bangun.
1. SmartLibraryLib
SmartLibraryLib dibuat dengan memanfaatkan project bertipe Class Library yang isinya hanya berupa interface IDao dan class Model.
Project ini nantinya akan dicompile menjadi file dengan ekstensi .dll (SmartLibraryLib.dll), file SmartLibraryLib.dll ini akan dishare atau ditambahkan sebagai referensi untuk aplikasi SmartLibraryServer dan SmartLibraryKlien.
Teknik ini dikenal dengan istilah “Shared Assembly” tujuannya adalah agar aplikasi server dan klien bisa berkomunikasi dengan cara yang sama.
2. SmartLibraryServer
SmartLibraryServer dibuat dengan memanfaatkan project bertipe Console Application, implementasi aslinya biasanya aplikasi server dijadikan sebuah service (Windows Service).
Aplikasi ini nantinya akan mengimplementasikan semua method-method abstract dari project SmartLibraryLib.
3. SmartLibraryKlien
Terakhir SmartLibraryKlien dibuat dengan memanfaatkan project bertipe Windows Application isinya berupa Form dan Report, aplikasi ini hanya memanggil method-method abstract dari project SmartLibraryLib dengan memanfaatkan objek proxy sehingga method tersebut akan dieksekusi secara remote (dijalankan di sisi server).
Berikut gambaran project yang akan kita bangun.
Project diatas sangat mirip dengan project Calculator yang sudah saya bahas pada postingan sebelumnya.
Sesuai urutan kita akan membuat project SmartLibraryLib terlebih dulu dan sebagai gambaran apa saja yang ada didalam project SmartLibraryLib ini bisa kita lihat dari class diagram berikut :
Dari class diagram diatas terlihat bahwa SmartLibraryLib hanya terdiri dari Interface Dao dan Class Model (pada postingan kali ini hanya dibahas pengolahan data buku dan penerbit).
Interface IDao merupakan interface generic yang berisi method-method abstract CRUD yang akan diturunkan oleh interface IBukuDao dan IPenerbitDao.
Untuk class model merupakan representatif dari tabel-tabel yang ada di database dalam ini tabel buku dan penerbit.
Oke kita langsung saja membuat project ini.
Membuat Project SmartLibraryLib
- Klik menu File ->New -> Project …
- Pada dialog New Project aktifkan pilihan Visual C# kemudian pada pilihan Templates pilih Class Library
Pada isian Name isikan SmartLibraryLib, setelah itu klik tombol Ok.
Secara default pada saat pembuatan project sudah otomatis disediakan 1 buah class kosong dengan nama Class1, kita akan menambahkan class baru jadi class ini dihapus saja.
Menambahkan Folder IDao dan Model
Tujuannya untuk mengelompokkan interface dao dan class model
- Klik kanan project SmartLibraryLib -> Add -> New Folder
Kemudian untuk nama folder diganti dengan IDao. Ulangi langkah sebelumnya untuk menambahkan folder Model.
Hasil akhir sementara
Menambahkan Class Model
Kita akan menambahkan class model Buku dan Penerbit
Semua class model akan kita tempatkan di dalam folder Model.
- Klik kanan folder Model -> Add -> Class..
Untuk isian Name diisi Buku.
Setelah itu akan tampil editor code class Buku
Jangan lupa untuk menambahkan access modifier public.
Berikut kode lengkap untuk class Buku.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
Satu hal yang penting disini adalah objek/instance dari class Buku akan diserialisasikan dari server ke klien atau sebaliknya sehingga harus ditambahkan atribut [Serializable].
Ulangi langkah diatas untuk menambahkan class Penerbit. Berikut kode lengkap class Penerbit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
hasil sementara
Menambahkan Interface IDao
Kita akan menambahkan interface IDao, IBukuDao dan IPenerbitDao
Dari diagram diatas terlihat bahwa IDao merupa interface induk dari interface IBukuDao danIPenerbitDao.
IDao sendiri merupakan interface generic yang mempunyai method abstract CRUD secara umum, sehingga interface IBukuDao danIPenerbitDao tinggal menambahkan method-method abstract yang menjadi spesialisasinya masing-masing.
Semua interface IDao akan kita tempatkan di dalam folder IDao.
- Klik kanan folder IDao -> Add -> New Item…
- Pada pilihan template pilih Interface kemudian untuk isian Name diisi IDao.
Setelah itu akan tampil editor code interface IDao
Jangan lupa untuk menambahkan access modifier public.
Selanjutnya kita tinggal menambahkan 5 method abstractnya yaitu Save, Update, Delete, GetAll dan GetReportAll sesuai class diagram diatas.
Berikut kode lengkapnya
Ulangi langkah sebelumnya untuk menambahkan interface IBukuDao dan IPenerbitDao.
Berikut kode lengkap interface IBukuDao dan IPenerbitDao
Pada interface IBukuDao dan IPenerbitDao diatas membutuhkan namespace SmartLibraryLib.Model karena sebagian method abstractnya mengakses class model.
Mengcompile project SmartLibraryLib
Tujuannya adalah agar project SmartLibraryLib ini bisa digunakan sebagai referensi oleh project SmartLibraryServer dan SmartLibraryKlien
- Klik kanan project SmartLibraryLib -> Build
Setelah itu akan tampil hasil output dari proses Build
Akhirnya selesai juga dan insya Allah akan berlanjut
Selamat mencoba :)