Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 3/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firedac Hakkında
#1
Uygulamalarında Firedac kullanmış arkadaşlarımın, müspet & menfi görüşlerini alabilirmiyim ? Var ise, tecrübelerinizi paylaşmanızı rica edeceğim. Delphi çıktığından bu yana,her zaman Delphi'nin veri erişim katmanı bileşenlerini (DAC) kullanan birisi olarak, artık Firedac'ı detaylı kullanmayı düşünmeye başladım. Çok uzun zamandır ADO kullanıyordum ve Firedac'da güzel bazı özellikler gördüm. Neden bu kadar bekledim derseniz, kişisel tercih. Teknoloji'nin her zaman biraz oturmasını ve olgunlaşmasını beklerim Wink 
Eğer var ise, 3rd party DAC'lar ile kıyaslama tecrübelerinizi de aktarabilirsiniz. Özellikle SDAC & Firedac makbule geçebilir  Smile
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Merhaba,
FireDAC'ı derinlemesine inceleme fırsatım olmadı, UniDAC'ı yaklaşık olarak 7 yıldır aktif bir şekilde kullanıyorum. 
Cross bağlantılarda UniDAC vs. FireDAC;
FireDAC ücretsiz - UniDAC ücretli
FireDAC Mobil platformda doğrudan bağlantıya izin vermiyor. - UniDAC İzin veriyor.
FireDAC SQL Monitörü az gelişmiş. Smile Bir çok konfigürasyon gerektiriyor. - UniDAC hiçbir konfigürasyona gerek kalmadan, DataModule'e bir Monitor nesnesi atmanız yeterli oluyor.
FireDAC'ta henüz göz atamadığım haddinden fazla nesne var. - UniDAC'ta az sayıda nesne var.
FireDAC'ın JSON ve noSQL konusunda, UniDAC'tan daha iyi olduğunu söyleyebilirim. DataSet'leri sunucudan, istemciye Base64 ve JSON formatında gönderiyor. İstemci tarafında ise  doğrudan (tek satırda) MemTable DataSet'ine aktarabiliyorsunuz.
Her iki component setinin ADO'dan çok çok iyi olduğunu rahatlıkla söyleyebilirim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(22-11-2017, Saat: 11:44)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
FireDAC'ı derinlemesine inceleme fırsatım olmadı, UniDAC'ı yaklaşık olarak 7 yıldır aktif bir şekilde kullanıyorum. 
Cross bağlantılarda UniDAC vs. FireDAC;
FireDAC ücretsiz - UniDAC ücretli
FireDAC Mobil platformda doğrudan bağlantıya izin vermiyor. - UniDAC İzin veriyor.
FireDAC SQL Monitörü az gelişmiş. Smile Bir çok konfigürasyon gerektiriyor. - UniDAC hiçbir konfigürasyona gerek kalmadan, DataModule'e bir Monitor nesnesi atmanız yeterli oluyor.
FireDAC'ta henüz göz atamadığım haddinden fazla nesne var. - UniDAC'ta az sayıda nesne var.
FireDAC'ın JSON ve noSQL konusunda, UniDAC'tan daha iyi olduğunu söyleyebilirim. DataSet'leri sunucudan, istemciye Base64 ve JSON formatında gönderiyor. İstemci tarafında ise  doğrudan (tek satırda) MemTable DataSet'ine aktarabiliyorsunuz.
Her iki component setinin ADO'dan çok çok iyi olduğunu rahatlıkla söyleyebilirim.

Teşekkür ederim Fesih bey. Unidac benim yaklaşım tarzıma çok da uymuyor. Ben her zaman kullanacağım veritabanının tüm özelliklerinin desteğini ararım. Bu bağlamda SQL Server için Unidac yerine SDAC tercih ederim, ya da MySQL için Unidac yerine MyDAC tercihi daha yerinde olur. Elbette bu tercih; uygulama, "uygulama her türlü database'e destek vermeli" gibi bir saçma düşünce etrafına bina edilmiyor ise.

Şu ana kadar Firedac'da görüp de beğendiğim bir kaç özellik var. Async executing, query cancellation, cached updates (tüm componentlerde), TVP(Table Valued Parameters) desteği...

Bu özellikleri ve daha fazlalarını tecrübe eden arkadaşlarım var ise, tecrübelerinden istifade etmek memnuniyet verici olur.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
Kimse bu güzel Framework'ü ciddi anlamda incelemedi mi yani ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
Tuğrul bey biz unidac'cıyız Smile İnsan neye alışırsa uzun süre onunla devam etmek istiyor.
Aktif ve güncelleme desteği vermek zorunda olduğumuz eski projeleri başka bir DAC bileşenine çevirme kararını vermek zor bir karar. Yeni başlanacak projeler için Delphi ile gelen yetenekli bir DAC bileşeni kullanmak daha mantıklı ama alışkanlıklar bazen ağır basabiliyor.
Cevapla
#6
Bir ara uni database kullanacak birşeyler yapma gereği duymuştum.
Dolayısı ile hangisini kullanayım diye 3-5 test yapmıştım.Sonuçta firedac daha yavaş ve çok memory kullanıyordu.
Zaten Firedac eski ANYDAC o zamanlardada aşırı memory kullanımı mevcuttu.
Embarcaderro alıp baya bir elden geçirdi.Şu anki son durum nedir aktif olarak kullanmadığım için bilemem.
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...





Cevapla
#7
Merhaba,

Çok katmanlı mimari ile geliştirdiğimiz tüm projelerimizde kullandığımız Data Access katmanının yapısını ADO'dan FD'a çevirmemiz sadece 15 dakikamı aldı hocam. Business katmanının verileri işleme açısından AdoQuery AdoSP (ve diğerleri) komponentleri de yerlerini FdQuery FdSP (ve diğerleri)ne bıraktı.

Ado'yu halâ tercih ettiğimiz ve tahminime göre yaklaşım olarak benzer fikirlerde olduğumuz için ben halâ seviyorum. FMX projelerde FD kullanma imkanı buldum. Kararlılık açısından herhangi bir sorunu bulunmuyor. Sadece kullanacağımız DB'nin konfigürasyon farklılıkları için şekil almak, işlem vermek gerekiyor.

Bir örnek üzerinden götürürsem; Sqlite kullanan bir mobil projemizde vt üzerine insert'te bir kısıtlama yaşatmadığı halde, o verileri tekrar nesneye doldurup uzak sunucuya json/xml olarak gönderim sağlayacağımızda query sonucundan dönen ilk 50 satırı alıp gönderiyordu. Bu işlemin sebebi Sqlite veritabanının limitli veri çekmesinden kaynaklanan bir olay olduğunu keşfettim (araştırmalar sonucunda). (Bkz: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol)

Bu tarz meseleler dışında derinlemesine kullanım yapmadığım için çok aman aman farklılıklarla karşılaşmadım. Temel sistematisi ADO'yu referans alarak geliştirildiği için küçük terminoloji farklılıkları olabilir. VCL için Caption iken FMX için Text olması gibi. (VCL için Alignment alClient iken FMX için Client olması gibi.)

İnşallah faydalı açıklamalar olmuştur.

İyi günler diliyorum.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#8
Konuyu hortlatayım  Smile 

 Yakın bir zamanda DevArt'ın MyDac component setini satın aldık. DevArt ürünleri için "thread-safe & multi-threaded" demesine rağmen ben bir sıkıntı yaşıyorum. Bu sıkıntı belki de MyDAC yerine FireDAC kullanmama neden olacak.

Yine sizlerin tecrübelerine müraacaat etmek istiyorum; ancak ondan önce ne yapmaya çalıştığımı ve nasıl yapacağım hakkında neden bir fikrim olmadığını izaha gayret edeyim.

Öncelikle kısaca yapmak istediğim;
  • Formun üzerine bir adet TMyStoredProc koymak. (Design time'da içine field'larımı doldurabileyim ve field'larımı özelleştirebileyim, grid tasarımlarını yapabileyim vs.)
  • Bu TMyStoredProc'u Open eder iken (bu bir select stored procedure'si) işlemin uzun sürebilme ihtimaline binaen; TMyStoredProc'u bir thread içinden açmak. (Arkadaşlar bizim componentlerimiz thread-safe dedikleri için).
  • Eh bir thread içinde veritabanı erişimi, ayrı bir connection gerektirir(Thread'e özgü bir connection). Bu bilgiye istinaden, thread içinde bir connection create ediyor; TMyStoredProc'un Connection'unu bu bağlantı nesnesine eşitliyor, ardından procedure'ü Open ediyor ve Connection'unu yeniden orjinal connection'a çekip; geçici connection'u Free ediyorum. Tabii böyle olunca, doğal olarak gelen Data kayboluyor.
 Özet ile benim yapmak istediğim şey, formun üzerinde bir component olarak bulunan bir TMyStoredProc'u bir başka thread içinden açabilmek. Bu sayede uygulamamın ana thread'i bloklanmayacak ve kullanıcı çok uzun sürebilecek işlemleri durdurabilecek.

 FireDAC'da bu istediklerimin hepsi var. Ancak gördüğüm kadarı ile DevArt'ın ürünlerinde Asenkron Çalıştırma desteği yok. Durum öyle olunca da kendi asenkron yapımızı oluşturmamız gerekiyor.

 Sizlerin bu hususta bir tecrübesi oldu mu ? Insert, Update, Delete stored procedure'leri için bir thread içinde işlem yapmak basit; lâkin durum select için formun üzerindeki bir bileşeni thread içinde kullanmak olunca, biraz farklılaşıyor.

Her türlü yorumunuz ilgi ile takip edilecektir Rolleyes

Not: Neden bir fikrim olmadığı hakkındaki malümatı belirtmeyi unutmuşum. Ben DevArt componentlerini geliştiren ekibin içinde olsaydım; büyük olasılıkla Open çağrımı yapıldığı anda ilgili thread id'yi elde eder, main thread'den farklı ise içeride bir connection create eder ve o connection üzerinden yürürdüm. Ama tabii adamların neyi nasıl implemente ettiklerini henüz bilmiyorum. Bu nedenle bir fikrim yok henüz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
unidac ile FireDAC arasında sitebilite ve hız farkı var mı merek ediyorum FireDAC kullanıyorum bir sorunla karşılaşmadım, unidac direk db bağlanma dan dolayı ne gibi avantajları var merak ediyorum hız ve performans olarak
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  JSON Bilgi Talebi, RAD 10 Seattle Yeni JSON Özellikleri Hakkında eroniko 4 138 13-10-2018, Saat: 21:59
Son Yorum: eroniko
  ClassType hakkında adelphiforumz 1 96 11-10-2018, Saat: 22:27
Son Yorum: sabanakman
  Inherited Formlar Hakkında Bilgi Talebi adelphiforumz 5 153 11-10-2018, Saat: 10:28
Son Yorum: adelphiforumz
  Firedac bileşenleri hakkında canbir 2 373 06-10-2018, Saat: 02:06
Son Yorum: Lord_Ares
Shocked Çoklu Dil Desteği Hakkında SercanTEK 10 356 28-08-2018, Saat: 13:24
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi