https://www.youtube.com/watch?v=6qMDB_72ofo&t=2537s

Neden Multitier (Çok katmanlı)?

  • Ölçeklenebilir
  • Yüksek kullanılabilirlik
  • Güvenlik
  • Hata toleransı
  • İzleme
  • İleti
  • Ön hazırlık

DataSnap ile Çoklu Katman

  • Esnek sunucu mimarisi barındırma
  • Rol bazlı kimlik doğrulama ve yetkilendirme
  • Güvenli taşıma ve iletişim süzgeci
  • REST clients ve RESTful arayüzü
  • Callbacks
  • Çoklu client tipleri

FireDac Database Erişimi

  • Delphi’nin, Rad Studio’nun veri tabanı bileşeni
  • Yüksek performans, kolay kullanım, kurumsal veri erişimi
  • Universal data acces

IBLite Ücretsiz

  • InterBase in ücretsiz sürümü
  • Windows, OS X, İOS ve Android desteği
  • InterBase ToGo ya upgrade imkanı

           -Full encryption desteği

           -Database limiti içermez

Rest Bileşen Özellikleri

REST:  Web servis kullanımıdır.

  • Kapsamlı HTTP client

          -Asenkronize işletim

          -Proxy bağlantısı

          -HTTPS

  • Kimlik doğrulama

          -Basic, OAuth1, OAuth2

  • JSON

          -Ayırma biçimlendirme

          -JSON - TObject , TObject- JSON

  • Hızlı Örnekleme

          -LiveBindings

          -Zaman işletimi tasarımı

REST Servisleri

  • REST API’lerine kolayca bağlanır.
  • REST Client Library
  • REST Debugger

TRESTClient, TRESTRequest, TRESTResponse components

 

DEMOLAR

File > New > Others > DataSnap >DataSnap REST Application>ok.

Windows > Stand - alone GUI application > VCL Application > Next >(bunları işaretliyoruz)→ Server methods class- Sample methods - Sample web files > TDSServerModule > Project Location→ D:\projeler\webinar\restsrv\RestServer\srv >Finish. Önümüze hazır bir REST sunucu mevcut. Kaydediyoruz, FormUnit1→uMainSrv. Object inspector > Form1> name → FrmMainSrv. ProjectGroup1 > srv.exe > sağ tuş > Show in Explorer. Delphinin bizim için bir sürü dosya oluşturduğunu görüyoruz. ServerMethodsUnit1 → buraya kendimize deneme amaçlı bir fonksiyon tanımlayalım.


public
   {Public declarations }
   Function EchoString(Value : String) : string;
   Function ReverseString(Value : String) : string;
   Function Topla (a,b : integer) : integer;
end;

Ctrl +C basıp bizim için tanımlanan fonksiyona gidip kodumzu yazıyoruz.


Function TServerMethod1.Topla(a,b : integer) : integer;
begin
   Result:= a +b;
end;
end.

Bu kısmı Rest sunucusunun çalışıp çalışmadığını test etmek ve kendi fonkyiyonumuza kısa bir örnek olması açısından yapıyoruz. Çalıştırıyoruz açılan pencerede; Start > open browser. Açılan web sayfasında; Server Functions > TServerMethods1 > Topla’ya tıklıyoruz değer giriyoruz > execute. Alt tarafta Json bize result(sonuç) dönmüş oluyor, işlem ve sonucunu görüyoruz. Biz bu ekrandan kullanıyoruz fakat harici bir uygulama bunu  nereden görecek? sorusunun cevabını öğrenelim.

localhost : 8080/ServerFunctionInvoker → bu şimdiki ekranımız

localhost 8080/datasnap/rest/TServerMethods1/  → Buraya kadar olan sunucu sabit, bu adresi girip devamında istediğimiz parametreleri girebiliriz.

/topla/33(1.parametre)/ 1(2.parametre) →  enter > ekranda Result 0:34 sonucunu görüyoruz. Kapatıp  uygulamamızı durduruyoruz >stop.

Veri tabanı işlemlerini nasıl yapıyoruz kısmına geçiyoruz. Database olarak biz MSSQL kullandık ama herhangi bir veritabanı kullanabiliriz. SQL Server manager’ı açıyoruz, buradan sunucu adresini kopyalıyoruz. Veritabanı nesnelerinin farklı bir yerde olmasını isterseniz srv.dproj-projects >srv.exe >add new > others > Database > Data module ekliyoruz, kaydediyoruz. DataModule > Object inspector > properties > name→frmDmodSrv. uDmod > palette > FDConnection1- FDQuery1. FDConection1 > name → Con - FDQuery1 >name → QDepo.  Con > açılan pencerede DriverID: MSSQL - Server: MSSQL serverda ne yazıyorsak aynısını yazıyoruz, database ,username ve password’ü dolduruyoruz. Test butonuna tıklayarak bağlantıyı kontrol ediyoruz bağlantı tamamsa >ok diyoruz. QDepo’ ya çift tık kodumuzu yazıyoruz > select * from Depo →yazdık > execute, alt kısıma kayıtların geldiğini görüyoruz >ok diyoruz.

Depoya uzaktan nasıl veri ekliyoruz onu öğrenelim.Daha sonra verileri json’a aktaralım. ServerMethodsUnit1’in code kısmına gidiyoruz. bir önceki fonksiyonumuzda nasıl topla fonksiyonu oluşturduysak aynı şekilde ilk bir function tanımlıyoruz.


public
   {Public declarations }
   function Ekle(DepoAdi, DepoTur : String) : Boolean;
end;

Ctrl + C ile fonksiyonumjuza gidiyoruz. Kod yazmaya başlamadan önce ; File > use unit >uDmod.pas >FrmDmod’u ekledik kod satırlarında kullanacağımız için. QDeponun elmenlarının ismini ayarlıyoruz uDmod > QDepo > sağ tuş > Fields Editor açılan pencerde sağ tuş > add all fields, 3 tane fields’ı var onları kodumuza yazıyoruz.


Function TServerMethods1.Ekle(DepoAdi, DepoTur : String) : Boolean;
   begin
   Result:= False;
   with FrmDmodSrv do begin
   QDepo Open();
   QDepoDepo_Adi.Value:= DepoAdi;
   QDepoDepo_Turu.Value := DepoTur;
   QDepo.Post
   Result:= True; // True diyoruz çünkü client kısmında sunucuda bir sıkıntı olmadığını  bilmek için.

srv.droj kısmını açıyoruz ve derliyoruz çünkü kod her değiştiğinde derlememiz gerekiyor. Sunucumuzun geldiğini görüyoruz. Start > Open browser > Server Function > TServerMethods1 >Ekle. DepoAdi(String)→ 3  - DepoTur(String)→3 > Execute. Alt kısımda Result {“DepoAdi” : “3” “Depo Tur” : “3”, “Result” : true } çıktısını görüyoruz.

Diğer harici bir uygulamanın kullanması için;

localhost : 8080/ → sabit kısım

localhost : 8080/datasnap/rest/TServerMethods1/ekle/6/6  > enter  result  0: true ekranda bu değerleride eklediğini görüyoruz.

Bu değerleri delphiden nasıl çekebileceğimize bakalım. Uygulamayı kapatıyoruz, stop diyoruz. ProjeGroups’a geliyoruz sağ tuş > add new Project Delphi > Multi-Device Application > Blank Application. Unit1’in açıldığını görüyoruz kaydet’e tıklıyoruz ve yeni klasör açıyoruz. Yeni klasör> name> dsrestcln olarak kaydediyoruz. Unit1→ uClnMain - Project1→ DsRestClnt. Tek ProjectGroup’un içinde →srv.exe ve →DsRestClnt.exe mevcut bunları birbirinr karıştırmıyoruz. Srv.exe kısmına gidiyoruz çalıştırıyoruz ve açılan pencereyi simge durumuna küçültüyoruz çünkü srv’nin çalışıyor olması gerek veri çek dediğimizde karşıda bir sunucu olması gerekiyor. ResClint tasarlarken; uClnMain’in içine Palette> toolbar , Toolbar’ın içine →Button1. Button1 >align >left - name→BtnGetData. Button1’i veriyi alan bir fonksiyon olarak düşünebiliriz. Palette >Memo1 >align >top , ekranın yarısını kaplayacak şekilde konumlandırıyoruz. Tasarımımız bu kadardı.

Palette >Rest Client1 - Rest Request1 - Rest Response. Bu 3 nesne ile herhangi bir web sayfası veya http’de duran nesneyi Rest üzerinden alınabilecek nesneyi alıyoruz.Nesne alma işlemini nasıl yaptığımızı öğrenelim; Object inspector> Base url → bu kısıma adresi yazıyoruz. Bizim adresimiz → localhost8080/datasnap/rest/TServerMethods1 > ana adresimiz bu. Bir değişiklik yapmayı unutmuşuz onun için srv kısmına gidiyoruz > sarch for forms →sol üst köşede 2. > ServerMethodsUnit1.  srv.exe’e sağ tık yapıyoruz > show in Explorer. Buradan bizim internetten kullandığımız hepler class var onu ekliyoruz → UjsonHelper sürükle bırak yapıp projeye ekliyoruz. File >Use unit >  UjsonHelper.pas. ServerMethodsUnit1 kısmına 1 adet function yazıyoruz


public
   {Public declarations}
   Function EchoString(Value : String) : string;
   Function ReverseString(Value : String) : string;
   Function Topla (a,b : integer) : integer;
   Function Ekle(DepoAdi, DepoTur: String) : Boolean;
   Function DepoListele : TJSONArray;

Ctrl +C basıyoruz.


Function TServerMethods1.DepoListele : TJSONArray;
begin
   Result:= FrmDmodSrv.QDepo.ToJSONData;
end;

Sunucumuzu kapatıyoruz(simge durumundaydı). Tekrar çalıştırıyoruz > start > open browser > Server Function > TServer Methods1 > DepoListele > Execute. Depoyu alt kısımda görüyoruz. Query’deki bütün veriyi JSON olarak browserdan görebileceğiz. Aynı özelliği şimdi Delphi içerisinde deneyelim. Sunucu çalışıor. DsRestClint.exe > geliyoruz. uClnMain >RestClient1 >Object inspector > Base Url → adresimizi yazıyoruz. RestRequest1 > Resource → DepoListele - RestRequest1 > sağ tuş >execute açılan ekrandan çalıştığını görüyoruz. RestResponse1 > Content > açılan pencerede datamızın geldiğini görüyoruz. RestResponse > sağ tuş > Clear Response Data  > Yes. RestRequest1’den tekrar çalıştırdığımızda RestResponse’ye  tekrar veri geldiğini görüyoruz bu yüzden bunu kodla sileceğiz. BtnGetData’ya çift tıkla kod satırına gidiyoruz.


procedure TForm1.BtnGetDataClick(Sender : TObject)
begin
RESTRequest1.Execute;
Memo1.Lines.Text:=RESTResponse1.Content;
end;
end.

Çalıştırıyoruz >BtnGetData → veriyi memoda görüyoruz.

Verileri Grid’de Listbox’ta gösterme işlemine geçelim. Palette > Rest Response Data Set Adapter1 ekliyoruz. Gelen değerimizde JSON’ın içinde 2 tane iç içe veri  var. RestRequest1 > sağ tuş >execute >ok. RestResponse1 > Content > burada result tag’ini görüyoruz onun içerisinde bir array var bu array’in içerisindeki değerler bizim almamı gereken değerler. Pencereyi kapatıyoruz. RestResponse1 > Root Element > result [0] yazıyoruz. Palette > Client Data Set1 ekliyoruz. RestResponseDataSetAdapter1 >Object inspector > Data set> Client data set1. Object inspector >Response(veri kaynağı olarak) > RESTResponse1. ClientDataSet1 >sağ tuş > Fields editor, açılan pencerede sağ tuş > add all fields. 2 Veriyi ekranda görüyoruz.Gridde gösterelim. Palette > Grid1 >align >client. Grid1 > sağ tık > Bind visually seçiyoruz , Live Buildings Designer penceresi açılıyor. Grid1’ i Client Data Set’e yıldızlardan sürükleyerek bağlıyoruz ve pencereyi kapatınca Grid’ de verileri görüyoruz.

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