Aku nggak tahu ini ide yang buruk dan bagus yang jelas aku sangat tertarik dengan kemampuan BindingList generics untuk menggantikan dataset. Tools yang kupakai disini adalah Visual C# 2005 Express Edition dan untuk Data Access Layer menggunakan Enterprise Library Juni 2005. Ada beberapa langkah dalam menggunakan BindingList
1. Create Data Access Layer.
2. Create Business Object.
3. Create Generics colection Class yang inheritance terhadap Class BindingList dan override beberapa parent method BindingList serta create beberapa method lainnya
4. Create UI form dan tambahkan data source.
5. Create Object dari Generics collection class
Penjelasannya adalah sbb:
1. Create Data Access Layer.
Untuk create data access layer menggunakan entilib sepertinya sudah biasa dilakukan, jadi nggak perlu diterangkan disini, intinya create method2 untuk melakukan operasi "CRUD" pada database kita.
2. Create Business Object.
Sebagai contoh aku disini menggunakan tabel product dengan field2nya adalah name dan price.
public class Product
{
private string _name;
private Single _price;
public Single price
{
get { return _price; }
set { _price = value;
}
}
public string name
{
get { return _name; }
set { _name = value;
}
}
3. Create Generics colection Class yang inheritance terhadap Class BindingList
public class productlist:BindingList<Product>
{
//variabel ini nantinya digunakan untuk menetukan apakah sebuah record itu merupakan record baru atau record lama
private bool isnew=false;
//Override method addnewcore untuk memberi tanda record baru.
protected override object AddNewCore()
{
isnew = true;
return base.AddNewCore();
}
//Ovveride method removeitem untuk menghapus record tertentu, disini kita tidak perlu melakukan boxing soalnya udah pakai generics
protected override void RemoveItem(int index)
{
base.RemoveItem(index);
Product prod=this[index+1];
//clproduct.Delete adalah static method dari Data Access layer yang digunakan untuk menghapus data database
clProduct.Delete(prod.name);
}
//Disini kita harus buat method baru soalnya di bindinglist aku belum dapat method yang dpt digunakan untuk menyimpan perubahan
public void SaveItem(int indx)
{
Product prod = this[indx];
if (isnew)
{
clProduct.Insert(prod.name, prod.price);
isnew = false;
}
else
{
clProduct.Update(prod.name, prod.price);
}
}
//Method getproduct digunakan untuk memasukan data kedalam object Product
public Product getproduct(string name, Single price)
{
Product prod = new Product();
prod.name = name;
prod.price = price;
return prod;
}
//getallproduct berguna untuk menyimpan semua data kedalam object collection
public void getAllProduct()
{
IDataReader rdr = clProduct.SelectAll();
while (rdr.Read())
{
Add(getproduct(rdr[0].ToString(),Single.Parse(rdr[1].ToString())));
}
}
4. Create UI form dan tambahkan data source.
Disini aku menggunakan kemampuan Visual studio 2005 yang bisa dengan mudah membuat user interface dari sebuah object entity hanya dengan drag and drop :D.
- Pada Visual studio 2005 pilih data lalu add new data source. akan ada 3 pilihan database, web service, dan object. Pilih Object
- Akan muncul class-class yang telah kita buat, pilih productlist.
- Secara otomatis akan tercreate Data source dari class generics yang telah kita buat tersebut.
- Ubah Associated controlnya menjadi Details dan drag ke form kita.
- Secara otomatis akan tercreate sebuah bindingsource dan bindingnavigator.
- Bindingsource adalah interface antara datasource kita dengan UI. Dengan bindingsource kita dapat melakukan interaksi dengan datasource sperti navigasi, sorting, filter dan delete.
- BindingNavigator kumpulan control yang digunakan untuk melakukan navigasi dan update.
5. Create Object dari Generics collection class
Berikut ini sintax lengkap pada form UI kita
public partial class productdetail : Form
{
//Buat object Collection yang akan kita bind ke UI component.
productlist list = new productlist();
public productdetail()
{
InitializeComponent();
}
private void productdetail_Load(object sender, EventArgs e)
{
//populate datasource
list.getAllProduct();
//binding data source
productlistBindingSource.DataSource = list;
}
private void productlistBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
//pada event onclick tombol save yang terdapat pada BindingNavigator masukan method SaveItem dengan parameter posisi index saat ini.
this.bindingNavigatorPositionItem.Focus();
list.SaveItem(this.productlistBindingSource.Position);
}}}
Nah langkah selanjutnya testing. Dengan teknik ini kita dapat menyatukan business logic kita ke dalam collection BindingList. Masalahnya sekarang aku belum pernah coba performance dengan cara ini, apakah lebih baik atau lebih jelek jika kita menggunakan dataset. Kalau masukan tolong bantu ya...untuk meningkatkan skillku dalam implementasi .NET technology
Atlas?? Yup is so great!!
I very like it. Atlas adalah evolusi dari pendekatan AJAX, with significant
enhancement tentunya. Atlas menyediakan seluruh kemampuan AJAX dengan
menyederhanakan kerumitan AJAX. Selain itu Atlas juga terintegrasi dengan
web service. Visual studio.NET dapat lebih membantu kita membangun web
berbasis
atlas dengan intelisensenya but it still not "WYSWYG", karena scripting
atlas masih belum integrated dengan design viewnya Visual studio 2005. Tapi
lumayanlah membantu sih :D. Satu lagi atlas juga menyediakan "Web server
controls" yang mengurangi client scripting. Dibawah ini salah contoh
penggunaan atlas textbox control untuk menampilkan auto completion yang
mirip dengan google.
<asp:Content ID="Content3" ContentPlaceHolderID="Main" Runat="Server">
<form id="Form1" runat="server">
<atlas:ScriptManager id="AtlasPage1" runat="server" />
<div class="page" id="links">
<div id="content">
<h3>AutoComplete server control</h3>
<p>This file contains a server-side Atlas AutoComplete.</p>
<atlas:TextBox id="searchBox" runat="server"
AutoCompletionServiceUrl="AutocompleteService.asmx"
AutoCompletionServiceMethod="GetWordList" />
</div>
</div>
</form>
</asp:Content>
Jika kita perhatikan atlas sudah menyediakan properties untuk
auto-completion yang kita isi dengan url serta method dari webservice. It's
so great bukan? Aku belum pernah pakai AJAX untuk membuat autocompletenya
google, kalau teman2 ada yang pernah pakai bisa share juga. Dan masih banyak
lagi kemampuan atlas lainnya bisa dilihat disini
http://atlas.asp.net
Ini link untuk HOLnya
http://msdn.microsoft.com/asp.net/future/default.aspx
Dan ini adalah link untuk slide dan demo Atlas oleh Nikhil Kothari pada PDC
2005 yang lalu
http://downloads.shankun.com/pdc2005/demo.zip
Yang menurutku masih kurang adalah dokumentasinya sampai saat ini saya belum
dapat dokumentasi lengkapnya.
BTW udah pernah nyoba nggak integrasikan Atlas dengan generics, no dataset!
no boxing! and no postback! So how fast you web? ??? Do you still affraid
develop web application? Meski masih banyak faktor yang lain yang menentukan
kecepatan akses web application setidaknya teknologi yang ada sekarang sudah
sangat membantu.