https://www.youtube.com/watch?v=Hq0rBpIiDBk&list=PLtQEDTztkhBf3J7h5kH9odBj-HYZGxdAb&index=4

1-Datasnap Nedir?

  • Datasnap çoklu katman uygulama geliştirmenizi sağlayacak bir orta katman (iş katmanı)’dır.
  • İster masaüstü uygulama geliştirin, ister mobil uygulama geliştirin iş mantığının üzerinde çalıştığı, güvenliğinin sağlandığı, sunumunun sağlandığı katmandır.
  • Kısaca veriye nerede istersen, nasıl istersen öyle ulaşmanın yolu Datasnap teknolojisidir. (Datasnap: Your data where you wabt it, how you want it)

2-Datasnap Kullanım Avantajları;

  • Güvenlik
  • Ölçeklenebilirlik

3-Datasnap Bize Ne Sağlar?

  • Bu çok katmanlı (multitier) teknolojide birkaç ana makine(server) kullanılabilir.[Veritabanı sunucusu, uygulama sunucusu]
  • Pek çok farklı cihazın bir ya da birkaç ana makinadan kontrolü sağlanabilir.[Maliyetler ve zamandan tasarruf]
  • Uygulama geliştirme hızı
  • Datasnap ile her işletim sisteminde çalışan client programları yazabilmek mümkün.
  • **Rol bazlı kimlik kontrolü…

DataSnap Stok Uygulaması

File > New > Others > DataSnap > DataSnap Server

Datasnap Rest Application: Servislerle haberleşen bir sunucu hazırlıyor.

Açılan ekranda Windows seçiyoruz çünkü şimdilik Linux’ta görsel ekran tasarlayamıyoruz. Next > Forms Application > VCL Aapplication > (Bunları işaretliyoruz)→ HTTP - TCP/IP - Authentication - Authorization - Server methods class - Sample methods > Next > TDSServerModule > Finish → Sunucumuz hazırlandı. Bizim için açılan sunucuda 1 adet Server Method ve 1 adet Server Containar mevcut. Server Methods, Client ile haberleşmenin sağlandığı yerdir. Form1’in olduğu sayfayı uMain diye isimlendirerek dosyalarımızı kaydediyoruz. Project1→ DsSrv olarak değiştirdik(İsimlendirmeleri kendi isteğinize göre de oluşturabilirsiniz). DsServer > Sağ tuş > Add new > Others > Database > Data Module . Data modulumüzü kaydediyoruz, uDmod plarak isimlendiriyoruz name> fmDmod. uDmod > Palette > FDConnection1 ekliyoruz, üzerine çift tıklıyoruz bir pencere açılıyor. Driver ID > MSSQL . Database ismimizi SQL Server manager’dan  alıyoruz. Server kısmına Database’imizin ismini yazıyoruz. SQL Server manager ‘a ne yazıyorsak aynı adresi kopyalayıp server’ a yazıyoruz. User name ve password de doldurup >ok tıklıyoruz. MSSQL bağlantımız sağlanmış oluyor.

FDConnection1 > Properties >Login Prompt > False (sürekli şifre sormaması için yaptık). FDQuery1 ve FDQuery2 ekliyoruz. FDQuery1 >name→ QDepo - FDQuery2 >name → QStok. QDepo >  çift tıklıyoruz açılan pencereye yazıyoruz → select * from depo > execute > ok. Verilerin geldiğini görüyoruz. QStok > çift tıklıyoruz açılan pencreye yazıyoruz → select * from stok > execute >ok. QStok ve QDepo dan active kısmını true işaretliyoruz. Use unit > Udmod.pas → ekliyoruz. ServerMethodsUnit1 > Palette > DataSetProvider1 ve DataSetProvider2 ekliyoruz. DataSetProvider1 >name→ dspDepo - DataSetProvider2 > name → dspStok. Dataset’lerini seçiyoruz. dspStok > Dataset → fmDmod. QStok - dspDepo > Dataset → fmDmod. QDepo bağladık ve kaydediyoruz. Çalıştırıyoruz ve çalıştığını görüyoruz.

 Client kısmında sunucunun çalışıp çalışmaması önemli bir noktadır Client kısmını yazmaya başlayabiliriz.  ProjectGroup kısmına sağ tuş >  Add new Project > Multl Device > Blank Application. Artık 2 projemiz var hangisini seçersek onun üzerinde çalışma yapabiliyoruz. Client kısmını seçiyoruz ve kaydediyoruz, DsClint klasörüde açıyrouz ve kaydediyoruz. Unit2 → uClnMain olarak kaydediyoruz. Project2 → DsClint olarak kaydediyoruz. ProjectGroup1 → WebinarDatasnap olarak kaydediyoruz. uClnMain > Palette > BindNavigator1 - BindNavigator2 -  Grid1 - Grid2 ekliyoruz. BindNavigator1 > align > top - name → navDepo. BindNavigator2 >align > bottom -  name→ navStok. Grid1 > align > top -  name→ GridDepo. Grid2 > align >  bottom - name → GridStok . Pallete > toolbar içine button1 ekliyoruz. Button1 >align >top - name → btnConnect. Palette >SQL Connection1 > Driver > Datasnap, Driver’ın önüne gelen ok’a tıklayarak Host >name’e gidiyoruz kendi Ip’mizi yazıyoruz. SQL Connection ile Datasnap Server’a bağlandık. DsProvider Connection1 ekliyoruz, > properties > SQLConnection > SQL Connection1 seçiyoruz. Server Class Name için Server Mehods Unit1’e gidip code kısmındaki class adını kopyalayıp alıyoruz ve Server Class Name’e yapıştırıyoruz. 2 Adet Client Data Set ekliyoruz. Client Data Set1 > name → cdsDepo - Client Data Set2 > name → cdsStok. cdsStok >Provider name→ dsStok - Remote Server → DSProviderConnection1. cdsDepo >Provider name → dspDepo - Remote Server →DSProvider Connection1. Bağlantı işlemi tamamlanıyor. cdsDepo sağ tuş > Bind visuals. Live Buildings Designer penceresi açılıyor bağlantılarımızı yapıyoruz. cdsDepo’yu →navDepo ve GridDepoya (yıldızdan yıldıza sürükleyerek) bağlıyoruz. cdsDepo BindSourceDB1’in içine otomatik alınıyor. cdsStok’u → navStok ve GridStok’a bağlıyoruz. Yan taraftan düzenleye tıklayarak daha düzenli halde görebiliyoruz. Database bağlantılarımız tamamlanmış oluyor pencereyi kapatıyoruz. Ekran dolu ve karışık geliyorsa gözünüze Hide Object diyerek nesneleri gizleyebiliyoruz. Bağlantıyı runtime açmak için Button→ BtnConnect kod yazmamız gerekiyor.


procedure TForm2.BtnConnectClick(Sender:TObject);
begin
   if not SQLConnection1.Connected then
     SQLConnection1.Conneccted : = True;
   if not cdsDepo.Active then
     cdsDepo.Open;
   if not cdsStok.Active then
     cdsStok.Active then
end;
end.

Connection’ların kapalı olup olmadığından emin oluyoruz mobil uygulamaya connection’u kapalı göndermezsek apk hiçbir zaman başlamaz.

Çalıştırıyoruz ve Datasnap Serverdan runtime olarak verilerin geldiğini görüyoruz.

Master detail bağlantı için Palette > DataSource1 > name → dsDepo - Dataset > cdsDepo. cdsStok>Properties > Master Source >dsDepo- Master Fields>…> Stok_kodu ve Depo_Id > add > ok diyoruz, fieldsleri kendi otomatik dolduruyor. Çalıştırıyoruz Id’lerin kodlarının düzenlenmiş olduğunu görüyoruz. Uygulamayı mobil cihaza gönderiyoruz. DsClnt.exe > Target Platforms > Android > Burada cihazımızı göreceğiz. Cihazda debug mod açık olması gerekiyor android haberleşme için. Cihazdan onay vermemiz gerekiyor bağlantı için. Android cihazı seçip uygulamayı gönder diyoruz. Apk açılıyor ve BtnConnect’e tıklayarak verileri görüyoruz. Burada da griden veri girişi sağlayabiliyoruz. Veri girişi için kullandığımız yöntem, sunucu tarafında girilecek veriler için fonksiyon oluşturuyoruz. Fonksiyonun içerisine verileri parametre olarak ekleyerek giriyoruz. Master detail bağlantılar oldu ekrandan veri girişini yaptık.

Uzaktan fonksiyon çağırma işlemi; Bir tane button ekliyoruz, Button1 >align >top. Hazır fonksiyonlardan da kullanabiliriz kendimiz fonksiyonda yazabiliriz. Daha anlaşılır olması için biz fonksiyon yazıyoruz. Code kısmından public’e gidiyoruz.


public
   {Public declarations}
   function EchoString(Value : string) : string;
   function ReverseString (Value : string) : string;
   function DepoGir (DepoADI : string) : Boolean;
end;

Function’un result’ında boolean koyuyoruz normalde procedure koyarakta bu işlemi yapabiliriz fakat functionda client kısmının verinin girişini anlaması gerekiyor. Fonksiyonun result’ına true döndürerek veri girişi tamamlandı anlamına gelen bir cevap döndürebiliyoruz. İşlem sonunda Shift +Ctrl + C basıp fonksiyonu oluşturduk;


function TServerMethods1.DepoGir(DepoADI : String): Boolean;
begin
end;

Firedac kullandığımız için ön kontrol yapmamızı gerek yok. Fonksiyonun içine standart veri ekleme komutlarını yazıyoruz.


function TServerMethods1.DepoGir(DepoADI : String): Boolean;
begin
   QDepo.Open();
   QDepo.Insert;
   QDepoDepo_Adi.Value : = DepoADI;
  QDepo.Post;
  QDepo.Close;
  QDepo.Open();
end;
end.

Uzaktaki sunucudan parametremizi alabilmemiz için bir tane Sql Server Method ekliyoruz, >name → smDepoGir - Sql Connection > Sql Connection1. ServerMethods’a parametreler geliyor bu parametreleri kullanarak işlemimizi gerçekleştirebiliyoruz. Parametrelerden TServerMethods1.DepoGir seçtik. Parametre adımız> DepoADI. DepoADI parametremizi doldurduktan sonra function çağırabiliriz. Button1 > name→ DepoGir. Edit1 ekliyoruz, parametre adımızı editten alıyoruz. Server Methodu runtime da create edebiliriz. Her çağıracağımız fonksiyon için bir tane server method oluşturmamız gerekmiyor.

DepoGir’e çif tık, kodlarımızı yazıyoruz;


Procedure TForm2.DepoGirClick(Sender : TObject)
begin
smDepoGir.ParamByName(‘DepoADI’).Value : = Edit1.Text;
smDepoGir.ExecuteMethod;
cdsDepo.Close;
cdsDepo.Open;
end;
end.

ServerMethods’un Params ve ParamByName’i var ikisinide kullanabilirsiniz. Params yazarsanız params’ın sıfırıncısı demeniz lazım. ParamByName yazarsanız parametre adını tam olarak yazmanız gerekiyor. Biz ParamByName kullandık, parametremizin adını yazdık ve Server Methods’umuzu execute ederek uzaktaki fonksiyonu çağırmış olduk.

Veriyi anlık görebilmek içinde Client data setleri açıp kapama işlemi yaptık. Çalıştırıyoruz bir tane parametre yazıp DepoGir’e tıklıyoruz ve parametremiz çalışıyor.

Firma Bilgileri


Camart Araştırma Geliştirme Yazılım Otomasyon San. Tic.Ltd. Şti.

Mersis no : 3356 7133 6775 9746

info@camartarge.com

Vergi no : 196 074 62 30

Tel : +90 850 333 80 20

İban (TL): TR30 0020 5000 0085 3809 5000 03

Arge :

Paü teknoloji geliştirme bölgesi (Teknokent)

idari bina d blok no g05 Denizli

 

İban (USD):TR03 0020 5000 0085 3809 5001 01 


Barbaros Mah. Halk Cad. No 47 / 2 34746 Ataşehir İstanbul

İban (Euro):TR73 0020 5000 0085 3809 5001 02 

 
 
 
 
 
 
Harita verileri ©2015 Google

İletişim

Facebook Pinterest Twitter Google+ Dribbble