Model Aplikasi Client/Server Untuk Meringankan Beban Sistem Aplikasi Ahmad Jupri Abstract : Client model application / server application or with known two-level, where the first level contains the code that displays the data and interact with the user in this application form of Visual Basic. While the second level is a database server or a DBMS are the form in which SQL Server store procedure as a business service. With the work load split between the client and the server is possible to do so each application in accordance with the best hardware specifications that are used. Keywords : SQL Server, Visual Basic, client, server, store procedur, business service PENDAHULUAN Pemrograman database multi user sampai dengan saat ini masih sering dijumpai terutama pada perusahaan kecil, bahkan pada perusahaan sekala menengahpun tidak sedikit yang masih menggunakan. Pada database dengan ukuran tidak terlalu besar dan pengguna jaringan yang tidak terlalu banyak, sistem tersebut tidak sulit untuk dilaksanakan. Tetapi jika dengan data yang cukup banyak (lebih dari 2 GB) atau pemakai jaringan sudah banyak, sistem jaringan akan sangat terbebani dengan lalu lintas data yang mengakibatkan kinerja menurun bahkan sistem bisa lumpuh. Padahal sejalan dengan perkembangan, data-data gambar yang berukuran besar mulai dilibatkan dalam pengolahan data. Hal ini menuntut dikembangkannya model sistem jaringan yang lebih baik. Misalnya dengan pemrograman client/server. Pada artikel ini penulis mengimplementasikan arsitektur aplikasi client/server dalam pemrograman database menggunakan SQL Server sebagai data provider dan ditempatkan pada tier pertama, serta Visual Basic sebagai user intervace ditempatkan pada tier kedua, sedangkan business services akan ditempatkan pada tier pertama dan tier kedua dengan contoh aplikasi yang berbeda. PEMBAHASAN Arsitektur Aplikasi Client/Server Ada beberapa tipe arsitektur model aplikasi yang dapat digunakan untuk membangun aplikasi. Salah satu yang akan dibahas pada artikel ini adalah model arsitektur clent/server. Dalam model arsitektur ini terdapat dua tingkat. Ahmad Jupri adalah Dosen Fakultas Ilmu Komputer UDINUS Semarang 107 108 Techno.COM, Vol. 7 No. 2, Agustus 2008 Tingkat pertama dari aplikasi client/server adalah client tier atau presentation tier atau tingkat user interface. Tingkatan ini mengadung kode yang menampilkan data dan berinteraksi dengan user, dalam artikel ini berupa aplikasi Visual Basic. Aplikasi client meminta data dari database server dan menampilkannya pada suatu form. Setelah data berada pada komputer client, komputer mampu menampilkan data dalam berbagai cara dan mampu memanipulasi data secara lokal. Komunikasi antara clinet dan server dilangsungkan melalui komponen ADO(ActiveX Data Object) Tingkatan kedua adalah database server atau DBMS. DBMS menerima banyak permintaan-permintaan data dari client dan harus mampu melayani semua. Server harus mampu mengambil data yang dibutuhkan dari tabel dan mengirimkannya kepada client dalam bentuk cursor. Server hanya perlu mengirimkan cursor kepada client dan membiarkan client yang memproses data. Dari dua tingkatan diatas arsitektur client/server juga dikenal dengan istilah two-tier application, user interface berada pada tier pertama sedangkan data provider berada pada tier kedua. Ada dua macam arsitekur client/server yaitu : Client Centric Selain user interface dan database server ada lagi satu komponen yang melekat pada arsitektur client/server, yaitu business services. Pada client centric business service berada pada tier client (dalam hal ini aplikasi Visual Basic). Proses validasi ataupun proses yang berhubungan dengan kegiatan bisnis akan dilakukan dalam tier client, dan server hanya digunakan sebagai penyedia dan penyimpan data. Server Centric Kebalikan dari client centric, pada server centric proses validasi maupun proses yang berhubungan dengan kegiatan bisnis berada pada komputer server. Server selalu melakukan pengecekan terhadap setiap transaksi termasuk melakukan penolakan terhadap suatu transaksi. Dalam artikel ini digunakan salah satu fasilitas yang dimiliki oleh SQL Server yaitu store procedur sebagai contoh. Dari kedua macam arsitektur client/server tersebut masing-masing mempunyai kelebihan dan kekurangan. Jika suatu aplikasi client/server yang menerapkan client centric dimana semua proses bisnis dilakukan di client, yaitu sebelum melakukan transaksi dengan server, maka fungsi server disini hanya sebagai penyedia dan penyimpan data. Sedangkan keuntungan dari server centric adalah pada saat suatu aplikasi melakukan perubahan pada proses bisnis. Misalnya suatu aplikasi penjualan barang, jika terjadi perubahan diskon terhadap barang yang dijual, cukup dilakukan perubahan pada server tanpa perlu melakukan perubahan pada setia client. Database dan Tabel pada SQL Server Dalam artikel ini penulis tidak membahas cara membuat database dan tabel dengan SQL Server karena sudah pernah dibahas pada artikel sebelumnya dan juga banyak buku-buku maupun artikel yang mengulasnya. Diasumsikan sudah ada sebuah database yang mempunyai beberapa tabel didalamnya salah satunya adalah tabel barang yang akan digunakan sebagai contoh aplikasi client/server pada pembahasan selanjutnya dalam artikel ini. Model Aplikasi Client / Server (Jupri) 109 Database dan tabel disimpan pada Server/Tier Kedua sebagai Data Provider. Sedangkan struktur tabel tersebut adalah sebagai berikut : Nama Database : Inventory Nama Tabel : Barang Primary Key : KodeBrg Foreign Key :- Tabel 1. Tabel barang No Nama Field Type Size Keterangan 1 KodeBrg VarChar 5 Kode Barang 2 Nama VarChar 20 Nama Barang 3 Satuan VarChar 10 Nama Satuan 4 HargaBeli Int 4 Harga Beli 5 HargaJual Int 4 Harga Jual Design Tampilan pada Tier Pertama (User Interface) Gambar 1. Design Tampilan Form Barang Techno.COM, Vol. 7 No. 2, Agustus 2008 110 Business Service diletakkan pada Tier Kedua (Data Provider) Proses bisnis dalam aplikasi ini berupa perintah untuk memanipulasi 90 data baik statment insert, update, delete dan select. Statement insert dan update akan diletkkan pada komputer server dengan memanfaatkan salah satu fasilitas yang dimiliki oleh SQL Server, yaitu stored procedure. Sedangkan statement select dan delete akan ditempatkan pada komputer clinet menyatu dengan user interface. Hal ini bukan suatu keharusan melainkan penulis hanya bermaksud memberikan contoh tentang kedua arsitektur model client/server diatas (client centric dan server centric). Untuk server centric penulis memanfaatkan salah satu fasilitas dari SQL Server yaitu stored procedure. Pembuatan stored procedure ini dibuat dengan menggunakan statement Transact-Sql. Untuk menjalankan stored procedure digunakan perintah execute diikuti nama stored procedure dan diikuti oleh parameter masukan jika ada. Adapun stored procedure yang dibuat antara lain : Stored procedure untuk menambah data barang CREATE PROCEDURE AddBarang @pKodeBrg nvarchar(5), @pNama nchar(20), @pSatuan nvarchar(10), @pHargaBeli int, @pHargaJual int AS DECLARE @ErrorCode int INSERT Barang(KODEBRG, NAMA, SATUAN, HARGABELI, HARGAJUAL) VALUES (@pKodebRG, @pNama, @pSatuan, @pHargaBeli, @pHargaJual) SET @ErrorCode=@@ERROR IF (@ErrorCode=0) RETURN (0) ELSE RETURN (@ErrorCode) GO Stored procedure untuk mengedit data barang CREATE PROCEDURE EditBarang @pKodeBrg nvarchar(5), @pNama nvarchar(20), @pSatuan nvarchar(10), @pHargaBeli Int, @pHargaJual int AS DECLARE @ErrorCode int UPDATE Barang SET KODEBRG=@pKodeBrg, NAMA=@pNama, SATUAN=@pSatuan, HARGABELI=@pHargaBeli, HARGAJUAL=@pHargaJual WHERE KodeBrg=@pKodeBrg SET @ErrorCode=@@ERROR IF (@ErrorCode=0) RETURN (0) Model Aplikasi Client / Server (Jupri) 111 ELSE RETURN (@ErrorCode) GO Untuk client centric penulis memanfaat event dari Visual Basic. Dalam artikel ini penulis membuat event untuk menghapus data(delete) dan menapilkan data(select). Adapun event tersebut adalah : Event untuk menghapus data Private Sub cmdHapus_Click() Dim x As String x = MsgBox("Yakin Data diHapus", vbOKCancel, "Perhatian") If x = vbOK Then Set rs = New ADODB.Recordset strsql = "delete from barang where kodebrg='" & txtKodeBrg.Text & "'" rs.Open strsql, conn, adOpenDynamic, adLockOptimistic Form_Load End If End Sub Event untuk menampilkan data Set conn = New ADODB.Connection conn.ConnectionString = "Provider=SQLOLEDB.1;" & _ "Integrated Security=SSPI;" & _ "Persist Security Info=False;" & _ "Initial Catalog=inventory;" & _ "Data Source=fasilkom" conn.Open conn.CursorLocation = adUseClient Set rs = New ADODB.Recordset rs.Open "select * from barang", conn Set DataGrid1.DataSource = rs If rs.RecordCount = 0 Then cmdSimpan.Enabled = False kosong Else Tampil cmdTambah.Enabled = True End If rs.Requery End Sub Techno.COM, Vol. 7 No. 2, Agustus 2008 112 Procedure-procedure selengkapnya pada Visual Basic Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim strsql As String Private Sub cmdEdit_Click() If cmdEdit.Caption = "Edit" Then cmdEdit.Caption = "Batal" cmdSimpan.Enabled = True cmdTambah.Enabled = False cmdHapus.Enabled = False txtKodeBrg.SetFocus txtKodeBrg.Enabled = False Else cmdEdit.Caption = "Edit" Form_Load End If End Sub Private Sub cmdHapus_Click() Dim x As String x = MsgBox("Yakin Data diHapus", vbOKCancel, "Perhatian") If x = vbOK Then Set rs = New ADODB.Recordset strsql = "delete from barang where kodebrg='" & txtKodeBrg.Text & "'" rs.Open strsql, conn, adOpenDynamic, adLockOptimistic Form_Load End If End Sub Private Sub cmdSimpan_Click() Dim oParam As ADODB.Parameter Dim ADOCmd As ADODB.Command Dim ADOError As ADODB.Error Set ADOCmd = New ADODB.Command ADOCmd.ActiveConnection = conn Set oParam = ADOCmd.CreateParameter Param.Name = "RETURN_VALUE" Param.Type = adInteger Param.Direction = adParamReturnValue ADOCmd.Parameters.Append oParam 'KODE BARANG Model Aplikasi Client / Server (Jupri) Set Param = ADOCmd.CreateParameter Param.Name = "pKodeBrg" Param.Type = adChar Param.Size = 5 Param.Direction = adParamInput Param.Value = txtKodeBrg.Text ADOCmd.Parameters.Append Param 'Nama Set Param = ADOCmd.CreateParameter Param.Name = "pNama" Param.Type = adChar Param.Size = 20 Param.Direction = adParamInput Param.Value = txtNama.Text ADOCmd.Parameters.Append oParam Set Param = ADOCmd.CreateParameter Param.Name = "pSatuan" Param.Type = adChar Param.Size = 10 Param.Direction = adParamInput Param.Value = txtSatuan.Text ADOCmd.Parameters.Append oParam Set Param = ADOCmd.CreateParameter Param.Name = "pHargaBeli" Param.Type = adInteger Param.Direction = adParamInput Param.Value = txtHargaBeli.Text ADOCmd.Parameters.Append oParam Set Param = ADOCmd.CreateParameter Param.Name = "pHargaJual" Param.Type = adInteger Param.Direction = adParamInput Param.Value = txtHargaJual.Text ADOCmd.Parameters.Append oParam If cmdTambah.Caption = "Batal" Then ADOCmd.CommandText = "AddBarang" ADOCmd.CommandType = adCmdStoredProc Else ADOCmd.CommandText = "EditBarang" ADOCmd.CommandType = adCmdStoredProc End If 113 Techno.COM, Vol. 7 No. 2, Agustus 2008 114 ADOCmd.Execute If cmdTambah.Caption = "Batal" Then MsgBox ("Tambah Data Sukses Penuh") cmdTambah.Caption = "Tambah" Else MsgBox ("Update Data Sukses Penuh") cmdEdit.Caption = "Edit" End If Set ADOCmd = Nothing rs.Requery rs.MoveLast Form_Load End Sub Private Sub cmdTambah_Click() If cmdTambah.Caption = "Tambah" Then cmdTambah.Caption = "Batal" cmdSimpan.Enabled = True txtKodeBrg.SetFocus kosong Else cmdTambah.Caption = "Tambah" Form_Load End If End Sub Private Sub Form_Load() Set conn = New ADODB.Connection conn.ConnectionString = "Provider=SQLOLEDB.1;" & _ "Integrated Security=SSPI;" & _ "Persist Security Info=False;" & _ "Initial Catalog=inventory;" & _ "Data Source=fasilkom" conn.Open conn.CursorLocation = adUseClient Set rs = New ADODB.Recordset rs.Open "select * from barang", conn Set DataGrid1.DataSource = rs rs.Requery End Sub Model Aplikasi Client / Server (Jupri) 115 Private Sub kosong() txtKodeBrg.Text = "" txtNama.Text = "" txtSatuan.Text = "" txtHargaBeli.Text = "" txtHargaJual.Text = "" End Sub Private Sub Tampil() Set txtKodeBrg.DataSource = Adodc1 Set txtNama.DataSource = Adodc1 Set txtSatuan.DataSource = Adodc1 Set txtHargaBeli.DataSource = Adodc1 Set txtHargaJual.DataSource = Adodc1 txtKodeBrg.DataField = "KodeBrg" txtNama.DataField = "Nama" txtSatuan.DataField = "Satuan" txtHargaBeli.DataField = "HargaBeli" txtHargaJual.DataField = "HargaJual" End Sub KESIMPULAN Dengan arsitektur client/server komputer yang berbeda melakukan tugas yang berbeda, setiap komputer bisa dioptimalkan untuk tugas tertentu, terjadi pembagian tugas antara komputer satu dengan yang lain dalam suatu jaringan. Pada server centric perubahan pada tingkat business service bisa dilakukan pada komputer server saja, tidak harus ke semua client. DAFTAR ISI 1. Evangelos Petroutsos, Menguasai Pemrograman Database dengan Visual Basic 6, PT Elex Media Komputindo, Jakarta 2002 2. Imam A.W. SQL Server 2000 , Graha Ilmu, Yogyakarta 2005 3. Michael Halvorson, Step by Step Microsoftr Visual Basic 6.0 Profesional, PT Elex Media Komputindo, Jakarta 2001