C# N-Tier Architecture(Çok(n) Katmanlı Mimari)

Bu yazımda C#’ta çok katmanlı mimari yapısından bahsedeceğim.Kodlamalar sırasında işimizi kolaylaştıracak katmanlar mevcuttur.Genelde üç katman yapısı standarttır.İhtiyaca göre katman sayısı arttırılıp azaltılabilir.Çok katmanlı mimarinin tercih edilme nedeni proje yönetiminin kolay olması,ekip çalışmasına uygun olması,hata yönetiminin kolay olması vs. gibi nedenlerden tercih edilir..Şimdi gelin bu katmanlar nedir, nasıl kullanılır görelim.

Genel olarak standart üç katman vardır demiştim.Ben bu yazımda bu standart katmanları tanıtacağım.

  • DAL(Data Access Layer)-Veri Erişim Katmanı
  • BL(Busines Layer)-İş Katmanı
  • PL(Presentation Layer)-Sunum Katmanı

Genel prensip, veritabanı işlemleri DAL tarafından, o veritabanının kullanılıp data manipülasyonlarının yapılması işlemi de BL tarafından yapılmalı ve sonuçlar PL ye gönderilmelidir.Sunum katmanın da,kod arkasında sadece verilerin gösterilmesini sağlayan kodların yazılması makbuldür.Yani sunum katmanın da veritabanı ile ilgili hiçbir işlem olmamalıdır.
Bu katmanlar oluşturulurken klasörler içinde oluşturulabileceği gibi, eğer birden fazla projede kullanılması hedefleniyorsa dll ler olarakta oluşturulabilirler.Yazacağımız uygulamayla ilgili bilgi vermek gerekirse Northwind tablosunda çalışacağız.PersonelId,Adi,SoyAdi,Unvan ve Sehir kolonlarını çekeceğiz.
Şimdi bu katmanların nasıl kullanıldığına sırasıyla bakalım.
DAL(Data Access Layer)-Veri Erişim Katmanı için bir sonraki sayfaya geçiniz.

Bunlar da hoşunuza gidebilir...

12 Cevaplar

  1. kubra kara dedi ki:

    Merhaba bana çok katmanlı mimari hakkında yardımcı olur musunuz.
    Acil cevap..
    hazır bir programı çok katmanlı mimariye çevirmeyi istiyorum ama yapamıyorum..

    • Gençay dedi ki:

      Merhaba Kübra,
      Çok katmanlı mimari yapısı bir yöntem ya da algoritmadan ziyade adı gibi standart kabul edilebilen bir mimari olduğu için bu konu hakkında detaylı bir projeye şahit olunmadığı sürece tam kapsamıyla anlamlandırılamaz.
      Lakin var olan bir projeyi çok katmanlı mimariye çevirmek diye birşey söz konusu değildir.Çünkü bu mimari bir projenin alt yapısını yani temelini oluşturmaktadır.DAL, BL, Entity vb. katmanlar kullanılmakta ve gerektiği zaman kendi katmanınızı ihtiyacınıza uygun oluşturabilir ve hiyerarşiye entegre edebilirsiniz.Böyle bir mimari alt yapısında proje tercih ediliyorsa, o projeye baştan başlanmalıdır.Var olan projelerin çok katmanlı mimariye uyarlanması çok uğraştırıcı olacak ve bir o kadar da anlamsız.Bunun en büyük sebeplerinden birisi, eylemsel metodların bulunduğu BL katmanına işlemlerin gerekli Entityleri eşliğinde yordamların derlenmesi ve gerekli yerlerde kullanılmasıdır.

      Bunların aksine dişini sıkabilen her türlü kodu ihtiyacı lehine tabikide değiştirebilir.Bu imkansız değil…

      Saygılarımla

  2. SEMA TUFAN dedi ki:

    Sizin çok katmanlı mimari için vermiş olduğunuz örneği uygularken bir hata aldım.
    Error 1 Using the generic type ‘System.Collections.Generic.List Hatası nedenini biliryormusunuz

    • Gençay dedi ki:

      Gördüğünüz gibi bu hata önceden tanımlanmış bir hatadır.Yani bir çok durumda söz konusu hata alınabilir.Haliyle benzer durumlarda olsa, bir çok yerde bu hatayla karşılaşılabilir ve hatanın sebebine ilgili kodlara göz atarak yorum yapmak üç aşağı beş yukarı bir teşhise yol açabilir.O yüzden yazıyı her ne kadar ben yazmış olsam da hatayı nerede, nasıl, ne yaparken aldığınızla ilgili bir bilgi vermeden nedenini soruyorsanız eğer probleminizin çözümüne odaklı bir cevaptan ziyade size tek cevabım bu hatanın genel nedeni olacaktır.

    • Rec dedi ki:

      List’i şu şekilde kullanırsan düzelir;
      List

  3. Batur dedi ki:

    Bu programları uygularken alt alta direk yazıyormyuz hepsini öyle daha iyi anlıcam gibi şuan pek birşey anlamadım, Bu yapının kullanılmasının tek nedeni daha düzenli olması mıdır birde?

    • Gençay dedi ki:

      Bu yapının kullanılmasının tek nedeni düzenli bir kod atmosferi değildir tabi ki de.Bir çok faydası vardır ve profesyonel bir çerçevede standartlara uygun kod olanağı sunmaktadır.Ben 3 5 sayarım, bu mimariyi kullanan ise çok daha fazla faydasına vakıf olacaktır.

  4. Enes dedi ki:

    Merhaba şöyle bir sorum olacaktı şimdi BL de bir baglantı oluşturup açmışsınız yalnız sorgu oluştur methodunu çağırarak ikinci bir baplantı açıyorsunuz birini iş sonunda kapatırken diğeri de kapanıyormu acaba ? yada ikisine de gerek var mı ? Buraya bir açıklık getirebilirseniz memnun olurum.

    • Gençay dedi ki:

      Bu makaledeki kodlamaya göre “SorguOlustur” metodu içerisinde oluşturulmuş SqlConnection nesnesi kapatılmamaktadır. Dikkatiniz doğrultusunda gözden kaçırmış olduğum bir noktaya parmak bastınız. Velhasıl bazen yazılan makalede olayın izahı kodların göz ardı edilmesine sebep olabilmektedir 🙂 Buda zamanında yanlışlıkla gözden kaçmış bir kod fazlalığıdır diyelim…
      Sevgiler…

  5. ertuğrul dedi ki:

    Merhaba Gençay bey, öncelikle çok teşekkürle bilgi paylaşımınız için, ben c# programlama da daha yeniyim, daha doğrusu nesnel programlamada yeniyim. Çok katmanlı mimari kullanımına geçmek için öğrenmem gerekenleri sıralayabilirmisiniz, diller ve o dillerde hangi konular.Çok teşekkürler şimdiden

    • Gençay dedi ki:

      Merhaba Ertuğrul Bey,
      Sorunuza verilecek cevabı nasıl sınırlayacağımı bilemediğim için kısaca aşağıdaki genel maddelere dikkat etmenizi tavsiye edebilirim.

      • Önce dilin Syntax dediğimiz sözdizimi kurallarını iyi bileceksiniz. Anlayacağınız dilin gramerini öğreneceksiniz.
      • Ardından Prosedürel Programlama yapılarını öğreneceksiniz. Bunun için bir kaynak kitap yahut video seçerek OOP’ye kadar olan tüm konuları belirleyebilirsiniz.
      • Bunlar dışında OOP yapılarını tam ve net öğreneceksiniz.

      Ve herşeyden önemlisi programlama için çalışmayı göze alabilmek önemlidir. Çalışmanın verimi içinse doğru kaynak çok daha önemlidir. O yüzden piyasayı araştırınız. En doğru kitap, video, kurum(ki kurumdan öte hoca önemlidir) vs.. kaynakları tarayıp, değerlendirin. Ardından öğrenme sürecine başlayıp, çalışarak, kendiniz birşeyler katarak ve üreterek hızla öğrenmeye başlayabilirsiniz…

      Sevgilerimle…

  6. emre dedi ki:

    classın ismi Personel olsa daha iyi olurmuş. Personeller bir List ismi olur ancak.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.