Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Tevfik adlı bir eğitimcinin sunduğu, çok katmanlı mimari yapısını banka uygulaması örneği üzerinden anlattığı bir yazılım eğitim içeriğidir.
- Video, çok katmanlı mimarinin temel prensiplerini açıklayarak başlıyor ve ardından Windows Forms üzerinden geliştirilen, SQL Server veritabanı ile çalışan bir banka uygulamasını detaylı olarak incelemektedir. Eğitim, Presentation Layer, Business Layer, Data Access Layer gibi temel katmanları tanıtarak, bu katmanların birbirleriyle nasıl etkileşime girdiğini göstermektedir.
- Eğitim içeriğinde müşteri ekleme, para transferi, para yatırma ve çekme işlemleri adım adım gösterilmekte, repository pattern, exception handling, veritabanı bağlantıları ve loglama gibi konular detaylı olarak ele alınmaktadır. Ayrıca, kod analizi yaparak transaction işlemleri, müşteri listeleme fonksiyonları ve log dosyalarının nasıl oluşturulduğu da açıklanmaktadır.
- Çok Katmanlı Mimariden Tanıtım
- Çok katmanlı mimari, teknolojinin gelişimi ve kullanıcı isteklerinin artması nedeniyle yazılım projelerinin karmaşıklaşmasına çözüm olarak ortaya çıkmıştır.
- Katmanlı mimari, kodların standart ve düzene göre yazılmasını sağlayarak geliştirme sürecini hızlandırmaktadır.
- Teknolojilerin ve isteklerin hızla ilerlemesi durumunda, katmanlı mimari belirlenmemişse her istek kodu sürekli değiştirme gerektirecektir.
- 01:59Çok Katmanlı Mimaride Temel Katmanlar
- Çok katmanlı mimari en başta üç temel katmana ayrılmış, sonrasında ihtiyaçlardan doğan yeni katmanlar eklenmiştir.
- Üç temel katman, veriye nasıl erişileceği, üstüne nasıl uygulamalar yapılacağı ve kullanıcıya nasıl bir sunum yapılacağı sorularına cevap vermektedir.
- En katmanlı mimari, bu temel katmanların üzerine yeni katmanlar ekleyerek daha fazla ihtiyaçlara göre cevaplar sunmaktadır.
- 03:20Katmanların Görevleri
- Presentation Layer (Sunum Katmanı), kullanıcıyla etkileşim halinde olan katmandır; kullanıcıya verileri gösterir ve kullanıcıdan alınan verileri Business ve Data Access Layer'lara iletir.
- Business Layer, iş yüklerinin yazıldığı ve Data Access Layer'dan çekilen verilerin işlendiği katmandır.
- Data Access Layer, sadece veri tabanı işlemleri yapan katmandır; veri ile iletişim kurulur, veri çekilir ve işlemlerde bulunulur.
- 05:28Katmanların Bağlılığı ve Cross Cutting
- Çok katmanlı mimari yapısında her bir katmanın birbirinden olabildiğince az bağlılığı olması gerekmektedir.
- Örneğin, veritabanı sağlayıcısı değiştiğinde (örneğin SQL Server'dan Oracle'a geçildiğinde) sadece Data Access Layer değişikliğe uğrayabilir, diğer katmanlar etkilenmez.
- Cross Cutting katmanı, diğer üç katmana ait projelerin ihtiyaç duyduğu teknik fonksiyonelleri (loglama, hata yakalama) içeren projeleri barındırmaktadır.
- 07:22Models Katmanı
- Models katmanı, her bir katmanda aynı sınıfların tekrar edilmesini önlemek için tasarlanmıştır.
- Örneğin, alışveriş sitesinde ayakkabı sınıfı her katmanda bulunması gerekiyorsa, bunun yerine Models katmanında tek bir ayakkabı sınıfı tasarlanır.
- Bu şekilde katmanlar arasında tekrar eden kodları engelleyerek kod tekrarını önler.
- 08:46Proje Yapısı ve Veritabanı
- Proje, Presentation Layer ve Core kodları içeren iki ana klasöre ayrılmıştır.
- Core kodları içinde Business Logic, Commons, Data Access ve Models katmanları bulunmaktadır.
- Veritabanında "Customer" ve "Transaction" tabloları bulunmakta olup, müşteri bilgileri ve yapılan işlemler bu tablolarda tutulmaktadır.
- 13:24Modeller Katmanı
- Modeller katmanında Extraction ve Core klasörler bulunur, Core klasöründe ise Customers ve Transaction isimli iki sınıf yer alır.
- Customers sınıfı IDisposable interface'den türemiş olup, kurucu metodunda Transaction tipinde bir liste oluşturarak kompozisyon ilişkisi kurmuştur.
- Transaction sınıfı da IDisposable interface'den türemiş olup, kurucu metodunda bir Customer nesnesi oluşturarak kompozisyon ilişkisini sürdürmüştür.
- 16:40Common Katmanı
- Common katmanında Data, Helpers ve Logger dosyaları bulunmaktadır.
- Helpers dosyasındaki DBHelper sınıfı, veritabanı üzerinde yardımcı metotlar içeren ve bağlantı sağlayıp veri tiplerini dönüştüren bir yapıdır.
- Logger sınıfı, oluşacak hataları ve işlemleri kullanıcıyla geliştirici arasında paylaşmak için loklama yapısı sağlayan bir yapıdır.
- 19:44Loklama Sistemleri
- Loklama yapısı, oluşacak hataları ve işlemleri kullanıcıyla geliştirici arasında paylaşmak için kullanılan bir yapıdır.
- DBLogger sınıfı, veritabanı üzerinde loklama yapmak için oluşturulmuş bir sınıftır ve LockBase soyut sınıfından türemiştir.
- FileLogger sınıfı, dosyalar üzerinde loklama yapısını çalıştıran ve hataları bir dosyaya yazdıran bir sınıftır.
- 23:19Data Access Katmanı
- Data Access katmanında Repository tasarım kalıbı kullanılmıştır, bu kalıp veri tabanı işlemlerinin merkezi bir yerden yapılmasını sağlar.
- IRepository interface'i generic bir yapı kullanılarak tanımlanmış olup, insert, delete, select ve select all gibi metotları barındırmaktadır.
- CustomerRepository ve TransactionRepository sınıfları, IRepository interface'inden türemiş olup, kurucu metodlarında DBHelper yapısını kullanarak veritabanı işlemlerini gerçekleştirir.
- 25:23Projelerin Bağlantılı Kullanımı
- Projeler birbirleri içerisinde kullanılabilmek için başvurular kısmına ekleniyor, bu Python'da kütüphane import etmek gibi düşünülebilir.
- Delete by id fonksiyonu, tbl customers için delete komutu oluşturarak veritabanında silme işlemi yapabiliyor.
- Helper ve diğer metotlar, farklı projelerde oluşturulan sınıflar ve fonksiyonlar bu proje içerisinde kullanılıyor.
- 26:54Transaction Repository ve Data Access Katmanı
- Transaction repository'de transaction sınıfı için interface oluşturulmuş ve helper sınıfları bu proje içerisinde kullanılıyor.
- Data access projesinde delete komutu tbl transaction üzerinden oluşturuluyor ve transaction repository için uyarlanmış şekilde kullanılıyor.
- Business logic katmanında customer business ve transaction sınıfları bulunuyor.
- 28:02Business Logic Katmanının Amacı
- Business logic katmanı, data access'ten çekilen verilerin işlendiği kısım ve data access'e direkt erişim yerine bu katman üzerinden işlemler yapılıyor.
- Customer business sınıfında müşteri ekleme, güncelleme, silme ve seçim gibi işlemler için fonksiyonlar bulunuyor.
- Bu katman içerisinde repository fonksiyonları çağrılıyor ve log, exception yapıları, helper sınıfları kullanılıyor.
- 29:56Sunum Katmanı ve Uygulamanın Çalışma Prensibi
- Sunum katmanı, kullanıcı ile etkileşim halinde olan ve form uygulaması olarak tasarlanmış bir katmandır.
- Uygulama, business logic layer, commons ve modas projelerine başvurarak çalıştırılıyor.
- Bu yapı sayesinde aynı kodlar farklı arayüzlerde (web, mobil) kullanılabilir ve doğrudan verilere erişim yapılmıyor.
- 32:04Arayüz Üzerinden İşlemler
- Arayüz üzerinden müşteri ekleme, transaction oluşturma, deposit ve withdraw işlemleri yapılabiliyor.
- Save customers butonu tıklandığında try-catch yapısı içinde customer business nesnesi oluşturulup insert customer fonksiyonu çalıştırılıyor.
- Müşterileri listeleme ve transaction oluşturma işlemlerinde de benzer şekilde business katmanı üzerinden fonksiyonlar çağrılıyor.
- 35:38Debug Ederek Çalışma Akışı
- Müşteri ekleme işlemi için breakpoint kullanılarak debug ediliyor.
- İşlem sırasında customer business sınıfına, ardından customer sınıfına ve data access layer'e geçiş yapılıyor.
- Repository üzerinden veritabanına bağlantı sağlanıyor ve insert fonksiyonu çalışarak müşteri ekleniyor.
- 38:03Müşteri Ekleme İşlemi
- Müşteri ekleme işlemi sırasında try-catch yapısı kullanılıyor ve customer repository'nin insert fonksiyonu çalıştırılıyor.
- DB Helper sınıfında database'e ekleme yapılırken tip dönüşümleri gerçekleştiriliyor (string, boolean vb.).
- İşlem başarılı olduğunda return true döndürülüyor ve kullanıcıya "Operation Done" (Müşteri eklendi) mesajı gösteriliyor.
- 40:49Veritabanında Müşteri Kontrolü
- Yeni müşteri ekleme işlemi sonucunda veritabanında tbl_customers tablosuna yeni bir müşteri kaydı ekleniyor.
- Eklenen müşterinin aktif durumu true olarak girilmiş, ancak database'e 1 olarak kaydedilmiş.
- Yeni oluşturulan müşteriyi veritabanına ekledikten sonra para aktarma gibi diğer işlemlerde de kullanabiliriz.
- 42:01Müşteri Seçme İşlemi
- Müşteri seçme işlemi için ID girildiğinde select_customer_by_id fonksiyonu çalıştırılıyor.
- Fonksiyon çalıştırıldığında customer business nesnesi oluşturuluyor ve müşteri bilgileri form üzerinde gösteriliyor.
- Müşterinin daha önceki işlemleri transaction sınıfının propertylerinin get metodunu kullanarak getiriliyor.
- 43:31Geçersiz Müşteri ID Durumu
- Geçersiz bir müşteri ID'si girildiğinde (örneğin 18), select_customer_by_id fonksiyonu çalışır ancak müşteri bulunamaz.
- Try-catch yapısı kullanılarak hata yakalanıyor ve loglama yapılıyor.
- Geçersiz ID durumunda form üzerinde müşteri bilgileri boş kalıyor.
- 47:31Geçerli Müşteri ID Durumu
- Geçerli bir müşteri ID'si girildiğinde (örneğin 8), select_customer_by_id fonksiyonu çalışır ve müşteri bilgileri döndürülüyor.
- Müşterinin daha önceki işlemleri transaction listesi olarak getiriliyor.
- Form üzerinde müşteri bilgileri (ad, soyad, bakiye) gösteriliyor ve para aktarımı için gönderici olarak kullanılabilir.
- 50:44Transaction Oluşturma ve İşlemler
- İki müşteri ve girdi miktarı belirtildikten sonra bir transaction oluşturuluyor.
- Transaction içerisinde liste türünde bir customer oluşturuluyor ve bu bir composition ilişkisini temsil ediyor.
- Transaction işlemi başarılı olup olmadığı ile ilgili bilgi veren "mac trans transaction" fonksiyonu çağrılıyor.
- 51:16Transaction İşlemi Detayları
- Transaction fonksiyonu try bloğunda çalışır ve girilen değer boş değilse devam eder.
- Transaction tipinde bir nesne oluşturulur ve içerisinde customers ve transaction listesi bulunur.
- Transaction içerisinde gönderenin balans değeri kontrol edilir ve koşul sağlandığında insert transaction fonksiyonu çağrılır.
- 52:46Veritabanı İşlemleri
- Repo insert fonksiyonu kullanılarak tbl transaction üzerinden bir insert sorgusu oluşturulur.
- Open connection fonksiyonu çalışır ve herhangi bir hata olmazsa işlem başarılı olarak döner.
- Update transaction info fonksiyonu çalışarak transaction listesi güncellenir ve repo update fonksiyonu çağrılır.
- 54:22İşlem Sonuçları ve Kullanıcı Bilgilendirmesi
- Sonuç "success" olarak kullanıcıya verilir ve aktarma işlemi başarılı olduğu bildirilir.
- Müşterinin gönderinin bilgileri güncellenir ve veritabanından çekilen güncel hal tablo olarak gösterilir.
- Transaction id'si 1021 olan 500 lira değerindeki işlem başarılı olarak kaydedilir.
- 56:00Deposit İşlemi
- Deposit tıklanarak yeni bir miktar girildiğinde try bloğunda kontrol edilir ve transaction oluşturulur.
- Deposit money fonksiyonu çalışarak transaction oluşturur ve insert fonksiyonu kullanılır.
- İşlem başarılı olduğunda transaction bilgisi güncellenir ve message olarak "success" gönderilir.
- 58:44Müşteri Listeleme ve Veritabanı İşlemleri
- "Kastım" komutu ile tüm müşteriler listelenir ve kastım nesnesi oluşturulur.
- Repository kullanılarak select all customer metodu çalıştırılır ve veritabanından müşteri bilgileri çekilir.
- Okuma işlemi tamamlandıktan sonra müşteri bilgileri liste olarak gösterilir.
- 1:01:25Log Dosyaları
- Yeni eklenen müşterileri veritabanından çekerken hata alınması, 10 ve 100 id'li müşterilerin veritabanında bulunmamasından kaynaklanmıştır.
- Log dosyaları debug klasörünün içinde oluşturulan logx klasöründe, test klasörünün içinde metin belgesi türünde bulunur.
- Log dosyaları exception handler içerisindeki formatta oluşturulmuştur.