Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Generics (soysallar) ve TCustomAttribute kullanımı ve RTTI
#11
(06-11-2018, Saat: 18:45)mustafaozpinar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(06-11-2018, Saat: 17:18)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMakale için teşekkürler, fakat şu olayın ne için kullanıldığını hala anlamış değilim. Basitçe yapılabilecek bir iş için tekrar yeni bir katman oluşturup VT deki alanları tek tek tekrardan yazmanın mantığı nedir ?

Pardon VT'den veri tabanını kastettiğinizi şimdi anladım. Bu işlem özellikle REST ya da SOAP sistemlerle uğraşırken,  server kısmında çok kullanılan, ya da kullanmak zorunda kalınan şeyler.
Çünkü db'den bir tabloyu okuyup bunu JSON'a çevirerek karşı tarafa göndermeniz gerekiyor. İşte bu işlemleri serialization denilen sistematikle yapıyorsunuz, yapmak zorunda kalıyorsunuz. Bunu kullanmazsanız eğer her gönderdiğiniz mesajı kendiniz oluşturup göndermeniz gerekiyor. 

Zaten makalenin başındaki eleştiri bu bakış açısınaydı. "Bunlara ne gerek var ki? Ne güzel yazıyoruz işte!" mantığına. Yanlış anlamayın, ben de uzun süre bu mantıktaydım! Sonra DotNet'le, C#'la yakınlaşmaya başladım, burada MVC-WCF üzerinde bazı yazılımlar yaptım. Bunlardan sonra Delphi'ye döndüğümde, orada kullanılan tüm reflection(RTTI), CustomAttribute vb. yapıların Delphi'de de olduğunu gördüm. Evet Delphi'yi modernleştirmişler, ancak 2way geliştirme sistemi aynen kaldığı için kimse bunları kullanmamış. Varsa yoksa bileşenler denilmiş. Embarcadero'da bile bir düzine kişiyi geçtiğinizde hepsi bileşenlere odaklanıyorlar. Elbette bileşenler önemli, ama herkesin şunu anlaması lazım: artık eski yazılım dünyası yok. Delphi'ciler bu şekilde giderlerse eski Cobol'cuların akıbetine uğrayacaklar. Kendilerini yenilemek zorundalar. Bu yenilenme ya Delphi içinde yazılım paradigmasını değiştirerek olacak, ya da (bunu Delphi'ciler beceremezse) Delphi yok olacak bizler de başka yazılım ortamlarını kullanır hale geleceğiz. 
FMX elbette çok önemli bir atılım, ancak bazı şeyleri gözden kaçırmamak lazım. FMX çok katmanlı, C/S, remote sistemler için tasarlanmış bir framework. Grid'i bizim bildiğimiz manada çalışmıyor. Çünkü tasarlayanlar bunun REST mimarisinde client tarafta çalışacağını öngörmüşler. Tüm ağırlığı buraya vermişler. REST sistem söz konusu olunca bir anda RTTI, serialization, CustomAttribute vb kavramlar öne çıkıvermiş. Oysa biz halen Android'den Sql sunucuya doğrudan bağlanıp veri çekmeye çalışıyoruz. Oysa Embarcadero bize inanılmaz kolaylıklar sağlayacak çok gelişmiş bir REST motoru, bunu destekleyen çok verimli bir FireDac db erişim sistemi, artı bunlarla iletişim kurarak çok basit bir şekilde veri alıp, bunu yeni hayatımıza soktukları ve TObjectList'ten veri alabilmeyi sağlayan LiveBinding sistemiyle FMX UI'a aktarabilmeyi sağlayan framework sunmuş. 

Sonuç olarak aslında şunu söyleyebilirim, bu bir konsept, ve bu konseptte de yazılım böyle yapılıyor. 

Peki neden böyle yapılıyor'a verilecek pek çok cevap var. Ama netice olarak gidiş bu doğrultuda. Bu doğrultuda gitmek istemeyenler de eninde sonunda mecbur kalacaklar.

Şimdi eski bir anımı hatırladım, Turbo Pascal 5.5 (sanırım 5.5'tu) ile ilk defa Pascal evrenine OOP kavramı girmişti. Borland bunun üzerinde o kadar çok durmuştu ki ben de ona yönelmek zorunda hissettim kendimi. O zaman üzerinde ne kadar çalıştımsa da netice itibariyle bana fazladan verdiği birşey olmadığını düşündüm. Ancak gelişmelerden kopmamak için bunu bir konsept olarak kabul ettim. Ve OOP üzerine tool'lar library'ler vs. yazdım. Elbette şu anda yazdığımız yazılımları o eski yapısal-prosedürel programlama yapısıyla yapmamız mümkün değil.

Ayrıca örneğin Repository Pattern'i görseniz, burada VT'nin objeleri var, bir de aynısını WCF'deki web service ayağı için yazıyorsunuz. Ancak tabii orada Entity Framework var, o tablolardan Entity class'ları otomatik olarak oluşturuyor. Fakat diğerini kendiniz yazıyorsunuz!

Neyse sağlıcakla kalın!

İşte şimdi oldu hocam, teşekkürler. Bu yapıları hiç kullanmadım şimdiye kadar, fakat dediğiniz gibi kullanmak zorunda kalıcaz mecburen. Birkaç ay önce REST sunucu olayına giriştik, EticariPlus programını REST ile yazmaya başlamıştım zaten fakat REST server kısmını sağolsun bir arkadaşım yazdı ben onun yazdığı serveri istediğim veritabanına bağlanıp kullanıyorum. Kaynak kodlarını incelemedim hiç, neler kullanmış ne yapmış, fakat Generic kullandığını söylemişti, bununda JSON olayında kolaylık sağladığından bahsetmişti, siz yazınca hatırladım. Yalnız müthiş kolaylık sağlıyor programı yazarken, VT güvenliği, erişim kolaylığı, çalışma hızı mükemmel oluyor. Birkaç Fonksiyon , memtable ve db grid yada string gridler ile rahatça program yazabiliyorsunuz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#12
Merhaba,
Yeni bileşen ve sınıflar daha kolay alternatifler sunuyor.
   
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
#13
Evet büyük kolaylık sağlıyor, lakin hazır kod ile yapmaktansa kendi yapımızı oluşturmayı tercih ediyoruz. Biraz fazla kod yazıyoruz ama en azından nerede ne yaptığını anlayabilmek adına kontrolün bizde olması fazladan güven sağlıyor.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#14
(07-11-2018, Saat: 10:46)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEvet büyük kolaylık sağlıyor, lakin hazır kod ile yapmaktansa kendi yapımızı oluşturmayı tercih ediyoruz. Biraz fazla kod yazıyoruz ama en azından nerede ne yaptığını anlayabilmek adına kontrolün bizde olması fazladan güven sağlıyor.

Bu teknolojilerin çıkışı 2005'lere kadar dayanıyor. Bunların iyi olmadığını söylemiyorum (muhakkak ki kendilerini güncelleye güncelleye günümüze kadar gelmiştir), fakat bir sorgu da değişen bir alan için veri tabanı katmanında SQL sorgusunda (function veya Stored Procedure) ve ilgili sınıfta bir güncelleme yapmanız gerekiyor. Aksi durumda o alana ulaşamazsınız. 
En büyük sorun, kurumsal uygulamalarda bu durum dökümante edilmediğinde, farklı bir proje grubunun bu yapıya adapte olması da oldukça zaman alacaktır. 
Daha büyük kurumsal uygulamalarda (her modülün farklı proje grupları tarafından geliştirildiği kurumlar), onay mekanizması (bir alanın eklenmesi) yavaş yürüyecektir. Bu da zaman kaybına neden olacaktır.
Delphi, bana göre bu tip çözümler ile RAD ünvanını koruyor.
Delphi IDE'sinde nerede ne yapıldığını görmek için Find Reference özelliğini kullanmanız yeterli olacaktır.
   
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

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Server : Tablo Değişkeni Kullanımı (Running Total, Yürüyen Bakiye Örneği) uparlayan 5 727 22-03-2018, Saat: 12:28
Son Yorum: hi_selamlar
  Delphi Direktif Kullanımı narkotik 3 481 12-03-2018, Saat: 00:44
Son Yorum: mcuyan
  StringReplace Kullanımı Hk. Halil Han Badem 0 432 13-01-2018, Saat: 22:33
Son Yorum: Halil Han Badem
Lightbulb Virüs Total API Kullanımı Halil Han Badem 4 619 03-10-2017, Saat: 13:55
Son Yorum: engerex
  Delphi ile .Net Ortamında geliştirilen dll içerisindeki fonksiyon kullanımı yhackup 5 1.132 27-09-2017, Saat: 16:32
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi