Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TMS Web Core - JSON ile Çalışmak Bölüm 1/2
#1
Merhaba Arkadaşlar,

Bir önceki makalede TMS Web Core ürününün nasıl bir ürün olduğu hakkında genel bir bakış edinmiştik. Bu makalede de JSON veri okuma ile ilgili bir örnek yapacağız. WebCore, doğası gereği JSON ve REST servisleri ile çalışmak için hazır bileşenler ile geliyor. Peki neden JSON'u seçtim? Çünkü şu anda web servislerde XML-SOAP kullanımı yavaş yavaş yerini JSON'a bırakıyor. Örneğin, Biz kendi yaptığımız yazılımın Trendyol'a ürün yollama, bilgi güncelleme vb. tüm işlemlerini JSON ile hallediyoruz. O yüzden JSON Önemli.

öncelikle, bu makalede tüm dünyada yazılımcıların test ve prototip aşamalarında kullanabileceği JSON örnekleri barındıran aşağıdaki ücretsiz web servisini kullanacağız :
https://jsonplaceholder.typicode.com

Bu sitede aşağıdaki örnek JSON verileri var :

ixsq5tw.jpg

Burada da ben kendime örnek olarak "Albums" servisi üzerinden albüm isimlerini çekeceğim. Bu şekilde sorguladığımda aşağıdaki bir JSON  verisi beni karşılıyor: 

9xhgevd.jpg

Bu JSON verisinden örneğin "Title" yani "Başlık" değerlerini alıp ekranda bir liste kutusunda gösterelim.
Bunun için TMS WEB REST sekmesinde en başta TWebHTTPRequest nesnesini formumuza yerleştirelim :

f3j9ik7.jpg

TWebHttpRequst'in verileri okuduktan sonra "Response" , yani sonuç verilerini hangi veri türünde, nasıl istediğimizi de belirleyebiliriz :
Ben "Default" olarak bıraktım.

pmkhwfb.jpg

Peşinden formuma Bir adet buton ve bir adet de WebListBox ekliyorum. Formumuz aşağıdaki gibi basit bir form olacak :

jy34enx.jpg

"Kayıtları Oku" dediğim butonun OnClick olayına aşağıdaki kodu yazıyorum:

WebHttpRequest1.URL := 'https://jsonplaceholder.typicode.com/albums';
WebHttpRequest1.Execute;


Peşinden, WebHttpRequest1 bileşenimizin "Response" olayına, aşağıdaki kodu ekliyorum. Bu kod, yukarıda bahsettiğim web servisinden albümlerin title değerlerini alarak liste kutumuza ekleyecek ve mesaj olarak da kaç tane başlık eklediğini bildirecek :

Procedure TForm1.WebHttpRequest1Response(Sender: TObject, AResponse: string);
var
    js : TJSON;
    ja : TJSONArray;
    jo : TJSONObject;
    i  : integer;
begin
    js := TJSON.Create;

    try
        ja := TJSONArray(js.Parse(AResponse));

        ShowMessage('Alınan Kayıtlar :' + inttostr(ja.Count));

        for i := 0 to ja.Count - 1 do
        begin
            jo := TJSONObject(ja.Items[i]);
            WebListBox1.Items.Add(jo.GetJSONValue('title'));
        end;
    finally
        js.Free;
    end;
end;

Uygulamamı çalıştırıp da Butona tıkladığımda önce kaç tane kayıt okuduğunu söyleyecek :

7as789x.jpg

ve peşinden de forma eklediğimiz liste kutusunda her bir albüm başlığını listeleyecektir :

hiom6ol.jpg

Görüldüğü üzere çok çok basit ve kolay bir şekilde JSON verimizi kullanabildik. 
JSON dışında normal veritabanları ve REST servislerine bağlanıp veri çekebilmek için TMS Web Core'un WebRequest dışında aşağıdaki bileşenleri de var :

56xw5ba.jpg

ve sonrasında Edit'ten Liste kutularına, Combobox'tan Grid'e kadar aklınıza gelebilecek her türden veri gösterimi bileşeni de mevcut. 

Bu makalede TMS Web Core ile basitçe bir JSON web servisinden veri okumayı anlatmaya çalıştım. Görüldüğü gibi, çok basit şekilde kullanabiliyoruz. Web Core'un diğer uygulama geliştirme tiplerinde (Mesela TMS Web Core  - Miletus Application) şeklinde bir proje geliştirdiğinizde native olarak bazı veritabanlarına da bağlanabiliyorsunuz. Ama uzunca bir süredir geliştirdiğimiz tüm projelerde native (doğrudan) bir bağlantı ihtiyacı hiç duymadık. JSON hem XML Web servislerine göre daha az yer kapladığı hem de  veri alma/gönderme süreçleri çok hızlı olduğu için şu anda tüm projelerimizde baştacı konumunda. Üstelik şu anda çoğu API sağlayan web hizmeti de (Mesela Trendyol) sadece JSON kabul ediyor ve sadece JSON olarak örnekler veriyorlar.

Dolayısı ile, TMS Web Core'un sunduğu bu işlevsellik bize yetiyor ve artıyor bile. 

Buraya kadar okuduysanız teşekkür ederim. Bu ürüne çok inanıyorum, IntraWeb'ten UniGUI'ye geçtiğimde yaşadığım o inanılmaz hissi şu anda UniGUI'den TMS Web Core'a geçtiğim günden beri yaşıyorum. TMS'de bu ürüne çok eğiliyor. Harika bir dökümantasyon var. 900 sayfalık geliştirici rehberi PDF si var. Ayrıca haricen "TMS Web Core" isimli yazılmış bir kitap var. Bir de TMS Web Core için yapılmış harika bir görüntülü eğitim seti var. Yani ürünün gidişatı çok iyi. 

Bu da şu demek, TMS Web Core ile ilgili makale serimiz devam edecek Smile

Sevgiler, Saygılar.
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#2
Elinize sağlık hocam, teşekkür eder paylaşma motivasyonunuzun daim olmasını dilerim.
Cevapla
#3
Elinize sağlık, çok teşekkürler. Ben de uzun süredir TMS Web Core kullanıyorum, farklı bir deneyim.

TMS'nin bu ürüne bu kadar eğilmesi bana- sanki ürünü Emba'ya satacaklar, FMX ile web derleme özelliği gelecekmiş- gibi geliyor. FMXLinux'dan sonraki hamle web sanki Smile
Cevapla
#4
Teşekkürler. Stres testi yaptınız mı hiç çok kullanıcılı sistemlerde sonuç nasıl acaba
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#5
(11-03-2022, Saat: 08:41)narkotik Adlı Kullanıcıdan Alıntı: Teşekkürler. Stres testi yaptınız mı hiç çok kullanıcılı sistemlerde sonuç nasıl acaba

Hayır stres testi yapmadım, ama bazı ağır yük içeren işlemleri zamanlayıcı (timer) kullanarak çalıştırdım ve herhangi bir sorunla karşılaşmadım. Şu anda TMS Web Core ürünü ile geliştirilmiş bir uygulama, yaklaşık 20 katlı bir plazada, her katta en az 9 kişi ve dışarda çalışan onlarca saha personeli dahil olmak üzere aktif olarak çalışıyor. Günde birkaç kez de binlerce kayıt içeren JSON formatlı veri aktarımları yapılıyor. Bugüne kadar tek bir kez bile sistemde hata oluşmadı, bir kişi bile sorun var diye aramadı. UniGui ile yapılmış bir önceki versiyonda haftada bir kez uygulamadan mutlaka çıkıp girmem gerekiyordu.
Ama aklıma soktunuz, müsait bir zamanda stres testi de yapayım Smile
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#6
Big Grin 
Verdiğiniz referans kullanıcı sayısı gayet iyi  Smile Müsait bir zamanda oturup deneyeceğim konularınız ile bilgileniyoruz. Devamını bekliyoruz.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#7
Bence stres testine gerek yok gibi, neden derseniz; 
TMS diyor ki: "Modern SPA (Single Page App) web application model. Pure HTML5/CSS3/Javascript based applications" Kaynak: RADical Web
Yani doğal HTML5/CSS3/Javascript üçlüsünü stres testine tabi tutmaya gerek yok.
Begin : = end / 2;
Cevapla
#8
Emeğinize sağlık uzun süredir bende unigui kullanıyorum fazla kaynak tüketimi ve belli dönemlerde anlamsız yere restart gereksinimi oluyor.
TMS özellikle dağıtım da sadece html ve js dosyaları ile herhangi bir sunucuda (linux,win) yayına alına bilmesi ilgimi çekti.
Cevapla
#9
(11-03-2022, Saat: 12:10)iyarar Adlı Kullanıcıdan Alıntı: Emeğinize sağlık uzun süredir bende unigui kullanıyorum fazla kaynak tüketimi ve belli dönemlerde anlamsız yere restart gereksinimi oluyor.
TMS özellikle dağıtım da sadece html ve js dosyaları ile herhangi bir sunucuda (linux,win) yayına alına bilmesi ilgimi çekti.

Tabi biz şimdi TMS Web Core ürününü övsek de, daha düne kadar UniGUI kullanıyorduk. Yani burada yazdıklarımızdan UniGUI'nin kötü bir ürün olduğu anlamı çıkmasın. Gayet de başarılı bir ürün. Bir sürü de proje yaptık. Ama taşınabilirlik sorunları, arada bir durduk yere kilitlenmesi ve restart etme gereksinimi duyulması, kullanıcı sayısı arttıkça yavaşlama sorunları, resim yüklemeleri sırasında oluşan render bekleme süreleri, gerçek anlamda bir platform bağımsızlığı sunamaması ve esneklik sorunları yüzünden ben şu anda TMS'ye geçtim. Temelde HTML+CSS+JS üçlüsü üzerinde çalıştığı için, mesela HTML içinde kendi kullanmak istediğiniz framework'leri, CSS şablonlarını özgürce kullanabiliyorsunuz. Yani kodlama sırasında 'esnek' olabilmek büyük bir rahatlık. UniGUI'de de böyle şeyler yapabilmek mümkün, ama hem çok uğraştırıcı, hem de mesela şu anda bir uygulamam Linux sunucu üzerinde çalışmak zorunda. UniGUI ile bunu yapabilmem imkansızdı. Sonuç olarak TMS inanılmaz bir esneklik sağlıyor.

Aynı form, aynı bileşenler, aynı kodlar ve aynı sonuçları döndüren 2 farklı web uygulaması geliştirerek yaptığımız testte, UniGUI ile yaklaşık 15 sn. sonuç beklerken, TMS'de 3 saniye içinde herşey elimizde oluyordu. Ama bu UniGUI kötü demek değil, onun da sağladığı bir çok avantaj var. Vakit bulabilirsem, ikisi ile bir karşılaştırma tablosu yapmayı düşünüyorum.
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#10
(11-03-2022, Saat: 12:41)rmzgenius Adlı Kullanıcıdan Alıntı:
(11-03-2022, Saat: 12:10)iyarar Adlı Kullanıcıdan Alıntı: Emeğinize sağlık uzun süredir bende unigui kullanıyorum fazla kaynak tüketimi ve belli dönemlerde anlamsız yere restart gereksinimi oluyor.
TMS özellikle dağıtım da sadece html ve js dosyaları ile herhangi bir sunucuda (linux,win) yayına alına bilmesi ilgimi çekti.

Tabi biz şimdi TMS Web Core ürününü övsek de, daha düne kadar UniGUI kullanıyorduk. Yani burada yazdıklarımızdan UniGUI'nin kötü bir ürün olduğu anlamı çıkmasın. Gayet de başarılı bir ürün. Bir sürü de proje yaptık. Ama taşınabilirlik sorunları, arada bir durduk yere kilitlenmesi ve restart etme gereksinimi duyulması, kullanıcı sayısı arttıkça yavaşlama sorunları, resim yüklemeleri sırasında oluşan render bekleme süreleri, gerçek anlamda bir platform bağımsızlığı sunamaması ve esneklik sorunları yüzünden ben şu anda TMS'ye geçtim. Temelde HTML+CSS+JS üçlüsü üzerinde çalıştığı için, mesela HTML içinde kendi  kullanmak istediğiniz framework'leri, CSS şablonlarını özgürce kullanabiliyorsunuz. Yani kodlama sırasında 'esnek' olabilmek büyük bir rahatlık. UniGUI'de de böyle şeyler yapabilmek mümkün, ama hem çok uğraştırıcı, hem de mesela şu anda bir uygulamam Linux sunucu üzerinde çalışmak zorunda. UniGUI ile bunu yapabilmem imkansızdı. Sonuç olarak TMS inanılmaz bir esneklik sağlıyor.

Aynı form, aynı bileşenler, aynı kodlar ve aynı sonuçları döndüren 2 farklı web uygulaması geliştirerek yaptığımız testte, UniGUI ile yaklaşık 15 sn. sonuç beklerken, TMS'de 3 saniye içinde herşey elimizde oluyordu. Ama bu UniGUI kötü demek değil, onun da sağladığı bir çok avantaj var. Vakit bulabilirsem, ikisi ile bir karşılaştırma tablosu yapmayı düşünüyorum.


*İlk makaleyi şimdi okudum, yukarıda yazdığım çoğu konun cevabının olduğunu gördüm, soruları diğer konuya taşıyorum.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBroker ve TMS Web Core ile REST WEB API Yaklaşımı 2 delphi.developer 0 150 04-03-2024, Saat: 16:14
Son Yorum: delphi.developer
  WebBroker ve TMS Web Core ile REST WEB API Yaklaşımı delphi.developer 3 360 14-02-2024, Saat: 15:22
Son Yorum: parlakcuma
  TMS Web Core - Database bcore 5 620 08-02-2024, Saat: 14:07
Son Yorum: bcore
  TMS Web Core - Genel Bakış rmzgenius 61 18.916 22-01-2024, Saat: 18:47
Son Yorum: delphi.developer
  TMS Web Core : Güzel Özellikler-2 rmzgenius 13 3.273 08-01-2024, Saat: 11:57
Son Yorum: rmzgenius



Konuyu Okuyanlar: 1 Ziyaretçi