Yorumları: 616
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.270
Uzman
19-12-2016, Saat: 15:30
Merhaba arkadaşlar,
Delphi ile 3 katmanlı mimari kullanımı öğrenmek için nereden başlamalıyım.
Hangi componentler kullanılıyor,
XML/JSON hangisini kullanmalı,
temel olarak client/server uygulamalarından farkı nedir,
resim,belge v.s xml/json ile aktarılabiliyormu.
Hız olarak client/server dan hızlımı?
“Do. Or do not. There is no try.”
Yorumları: 4.224
Konuları: 379
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 16.975
Üstad
19-12-2016, Saat: 15:44
(Son Düzenleme: 19-12-2016, Saat: 16:01, Düzenleyen: TescilsizUzman.
Sebep: Yazım yanlışları
)
Merhaba,
Üç katmanlı mimariden ziyade, yapacağınız gereksinim analizine göre ihtiyacınız olan Multi-Tier (birden fazla katmanlı mimari) yapıyı belirlemelisiniz.
Multi-Tier mimarilerinin tümü temelde Client - Server yapısındadırlar.
Çünkü asıl verilerin barındığı bir sunucu ve farklı cihaz veya kullanıcıların isteklerini sağlayan bir istemci sistemi vardır.
Bunların en başında (Embarcadero'nun göz bebeği) DataSnap gelmektedir.
Veri iletişim protokolü ve yapısı konusunda kuşkusuz en doğru yöntemlerden biri JSON'dur.
JSON veriyi bir metinsel yapıda gönderir/alır, biçimsel olarak Obje yapılarına benzer, Delphi ile kolayca anlamlandırılabilir. (System.JSON ve REST.JSON)
Binary (her tür dosyayı) destekler.
Component olarak;
JSON için doğrudan System.JSON ve REST.JSON kullanılabilir,
DataSet bileşenlerinden FireDAC için TFDJSONDataSets, TFDJSONDataSetsWriter/TFDJSONDataSetsReader, TFDStanStorageJSONLink gibi sınıf yapıları kullanılabilir,
DataSnap için ise Indy ve Remobjects SDK kullanılabilir.
Yorumları: 616
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.270
Uzman
https://www.youtube.com/user/DelphiUniversity/videos
Buradaki linkten başladım farklı kaynak önerilerine açığım pdf olur video olur.
“Do. Or do not. There is no try.”
Yorumları: 120
Konuları: 3
Kayıt Tarihi: 10-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.701
Programcı
Merhaba,
Çok katmanlı mimariler Sunucu - İstemci mimarisinden farklıdır. Her katmanın kendisine ait bir görevi vardır. Çok kabaca söyleyecek olursak aşağıdaki gibi bir yapı olur:
1. Veri katmanı: Burası verinin tutulduğu yerdir. Tahmin edebileceğiniz gibi genelde bir ilişkisel veri tabanı sistemi kullanılır. SQL Server, MySQL vs gibi. Bunu basit bir veri tabanı olarak düşünmeyin, çünkü bu katmanı da siz programlıyorsunuz. Yani buraya elle de yanlış kayıt girilememeli. Ayrıca illa ilişkisel veri tabanı olmak zorunda değil, hiyerarşik ve NoSQL veri tabanı da olabilir.
2. Business Logic katmanı: Bütün iş kurallarının yazıldığı katmandır. Bu kısımda bütün kurallar kontrol edilir. Örneğin istemci basit bir emir verir: Kasadan x carisine y TL öde. Bu katman, bütün yetkiler ve kuralları kontrol eder, önce kasadan çıkış hareketi yapar, sonra cariye giriş hareketi yapar ve sonucu istemciye bildirir. Dikkat edecek olursanız istemci sadece kasadan para öde emri verdi. Verinin nasıl tutulduğunu, hangi işlemlerin yapıldığını, hangi yetkiler ve kurallar olduğunu söylemedi.
3. İstemci katmanı: Son kullanıcı tarafından kullanılan programdır. Kimi durumlarda ara yüz tasarımları bile Business Logic katmanından gelir. Herhangi bir kural yazmanız gerekmez. Örneğin fatura numarası girmeden fatura kaydı yapılamaz dediniz. Kullanıcı yeni bir fatura girerken bu katman fatura no girilmiş mi diye kontrol etmez. Etmesine gerek yok, çünkü bunu Business logic katmanı kontrol edecek (ve hatta aslında etmemeli).
Katman sayısı çok daha fazla olabilir. Örneğin programı 10.000 kişi aynı anda kullanacak diyelim. O zaman business katmanı birden fazla bilgisayara kurulur, araya bir katman daha eklenir (Load & Balance), istemci bu katmana bağlanır, bu katman da en az işi olan business logic katmanına aktarır.
Çok katmanlı mimarileri Model - View - Controller ile karıştırmayın. MVC, bir proje içinde yapılan bir tasarlamadır. Çok katmanlı mimarilerde fiziksel olarak da farklı konumlar kullanılabilir. Örneğin veri katmanı İstanbul'da, business logic katmanı İzmir'de, istemci katmanı ise mobil uygulama, Windows uygulama veya web sitesi olabilir.
Çok katmanlı mimarileri tasarlaması da, kodlaması da zordur. Özellikle business logic ile istemci katmanları sık sık birbirine karıştırılır ve programcılar bazen kuralları istemciye yazar (farkında olmadan ve/veya client/server mimarinin getirdiği alışkanlıktan).
Peki Delphi bunun neresinde? Delphi ile her katman için bir şeyler yapabilirsiniz. Bunun için kendi kütüphaneleri de var (Datasnap gibi). Bana soracak olursanız Datasnap iyi bir fikir değil. Eğer Datasnap kullanıyorsanız istemcileriniz de Delphi ile yazılmalı ki Danasnap'in avantajlarını kullanabilesiniz. Ama bu da bizim istemci katmanını kısıtlıyor. Bunun yerine standart web hizmetlerini (SOAP) veya Datasnap'ten bağımsız REST sunucu yapabilirsiniz. Her ikisinin de iyi ve kötü yanları vardır. Hangisinin seçileceği de projeye göre değişecektir. Eğer çok iddialı iseniz bunlardan farklı olarak kendi protokolünüzü de yazabilirsiniz. Sonuçta yapılan işlem basittir: TCP/IP protokolü ile iki program arasında veri alışverişi. Bunu sohbet programı yazmaktan bir farkı yoktur. Yani her türlü veri (buna resim, müzik gibi binary dosyalar da dahil) gönderip alabilirsiniz. Bu arada başka kütüphaneler de var. Örneğin mORMot, KbmMW gibi. Remote Objects firmasının da ürünleri var, ama o Delphi.NET kullanıyor sanırım.
Katmanların nasıl çalışacağı katı kurallara bağlı değildir. Örneğin bazı kimseler bütün kuralların veri tabanı katmanına yazılması gerektiğini düşünür. Ama siz projeye göre farklı hareket edebilirsiniz.
Çok katmanlı mimariler, Client/Server mimarilere göre yavaştır. Araya giren her katman da sistemi biraz daha yavaşlatır. Bu mimari hızı değil, veri güvenliği, sistem güvenliği, yük ve denge, kuralların yönetilmesi gibi farklı konuları ön plana çıkarır.
Benim tavsiyem işe SOAP sunucu ile başlamanızdır. Delphi'de bunun bir sihirbazı da var. Bence VCL Application seçin (debug etmesi kolay olur), mimarinin mantığını kavrayın. Gerisi zaten yavaş yavaş gelecektir.
İyi çalışmalar
Yorumları: 822
Konuları: 8
Kayıt Tarihi: 17-11-2016
Rep Puanı: 1.660
Programcı
bende kendime özel bir katman oluşturum ne kadar doğru yapıyorum bilmiyorum bu konuda fikir verebilirseniz iyi olur ufak veri alışverişi için IdTCPServer kullanıyorum yaklaşık 50 karakter veriler için daha fazlası için SOAP üzerinden olsa iyi olur diye düşüyorum.
aynı procede ikisinde kullanmak ne kadar mantıklı, IdTCPServer bir tık daha hızlı gibi geliyor ama yüklü verilerde hata verebiliyor. yoğun trafik alırsa dayanabilir mi bilmiyorum.
Yorumları: 117
Konuları: 6
Kayıt Tarihi: 27-08-2016
Rep Puanı: 884
Acemi
(21-12-2016, Saat: 13:02)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Eğer Datasnap kullanıyorsanız istemcileriniz de Delphi ile yazılmalı ki Danasnap'in avantajlarını kullanabilesiniz.
istemcilerin delphi ile yazılmalı kısmını anlayamadım.
One of the major software engineering challenges is managing change.