Daha once burada 3-katmanli mimari konusuna ufak bir giris yapmistik. simdi sira bir sonraki adima geldi. Ufak bir ornek gelistirerek olayi biraz daha somut bir hale getirelim.

Ornegimizde Client tarafinda calisacak olan bir uygulamamiz olacak. Server tarafinda ise yazdigimiz clientin haberlesecegi bir application server ve bu serverin iletisim kuracagi veritabani olacak.

Bir onceki yazida da belirttigimiz gibi delphi cephesinde borlandin delphiye entegre olan kendi cozumleri haricinde 3. parti bir cok secenegimiz mevcut. Ben ornekte ASTA adli bilesen setini kullanmaya karar verdim. Bu bilesen setinin en buyuk ozelliklerinden bir tanesi sifir kod yazarak 3- katmanli bir yapiyi olusturmaniza izin verebilmesi. Diger application sunucular mevcut. Bu sunucular veritabanina baglanti yapmak icin kullanilan kutuphaneye gore cesitliliik gosteriyorlar. Asta\Serves klasoru altinda bulabileceginiz bu sunucular

ado
advantage
apollo
bde
ctlib
dbexpress
dbisam
doa
fibplus
flashfiler
ibexpress
ibobjects
msadodac
mySQLDac
nativedb
odac
odbcexpress
postgresdac
serveradmin
servertemplate
sqldirect
zeosmysql

seklinde yer aliyorlar. Biz bu ornegimizde ibexpress bilesenleriyle baglanti saglayan sunucuyu kullanacagimizden ilk once bu sunucunun kaynak kodlarini acip derlememiz gerekiyor. Derleme islemini basarili bir sekilde tamamladiktan sonra Asta3IBExpressServer.exe adli dosyayi tiklayarak calisir hale getiriyoruz. Sunucu kendini otomatik olarak Sytem Traya yerlestirecektir. Simgesine sag tusla tiklayip Properties penceresini acalim.

2.JPG

Setup Database Coonection dugmesine tiklayip Employe.fdb ye baglanmak icin gerekli olan ayarlari yapalim ve Tamam dugmesine tiklayalim.

11.JPG

Ardindan Start Server dugmesine basarak sunucuyu aktif hale getirelim.

3.JPG

Sunucu tarafinda yapacagimiz islemler bu kadardi. Simdi Client Programimizi insa etmeye baslayalim.

Yeni bir proje acip formun uzerine 1 tane ASTAClientSocket 1 tane ASTAClientDataSet 1 tana DataSource 1 tane DBGrid ve 5 tane buton koyalim.

4.JPG

Sunucunun varsayilan ayarlariyla oynamadiysak (port, password vs ) AstaClientSocket uzerinde yapmamiz gereken her hangi bir ayar soz konusu degil. AstaClientDataseti secip SQL ozelligine “Select * from customer” yazalim. Datasource su AstaClientDatasete , DBGRidi de Datasource baglayalim ve AstaClientDatasetin Active ozelligini True yapalim. Iste kayitlar karsimizda…. Henuz hicbir kod yazmadik ustelik :)

5.JPG

Simdi kod yazmaya sira geldi. bu isin en buyuk zorlugu burda. Kodlar cok karmasik ve zor. Kodlari anlamak icin bir kac hafta cebellesmeniz gerekebilir :)

Ekleme :
AstaClientDataSet1.Insert;

Silme:
AstaClientDataSet1.Delete;
AstaClientDataSet1.ApplyUpdates(usmServerTransaction);

duzenleme
AstaClientDataSet1.Edit;

kaydetme
AstaClientDataSet1.ApplyUpdates(usmServerTransaction);

Vazgecme
AstaClientDataSet1.CancelUpdates;

Silme ve update islemini yapabilmek AstaClientDataseti secin ve EditMode ozelligine tiklayin. UpdateTable bolumunden Costumer tablosunu secin, update method kismindan Cached Update secenegini secin ve Primary Key Fiedls bolumunden de CUST_NO alanini isaretleyip OK deyin.

6.JPG

hepsi bu kadar. Programi calistirabilirsiniz :)

ana makinenin (kendi ipniz) ipsini yazdiktan sonra Tamam diyin ve programi gule gule kullanin….

7.JPG

One Response to “Delphi ve 3-Katmanli Mimari - 2”
  1. Midas says:

    ASTA güzel bir middleware yalnız lisanlama politikası çok yalnış. Artık Borland bile server lisansı istemezken ASTA server başına 299$ gibi bir lisans ücreti talep ediyor. Limitsiz lisans ise 7.500$ gibi tuhaf bir fiyata satılıyor. Bu parayı ASTA’ya vereceğime BDS Enterprise alırım DataSnap kullanırım. ASTA kadar iyi değil ama iş görüyor. DataSnap olmadı 400$’a RemObjects SDK , 700$’a DataAbstract, 299$’a kbmmW var, RTC var. Hepsi de ASTA nın yaptığı işi yapıyor. ASTA 2007 yılında olduğumuzu farkedip server başı lisans ücretnin tarihe karıştğını anlması lazım.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>