3 Katmanlı Mimari

İbrahim     23 Eylül 2017     1326     6    

3 Katmanlı Mimari Nedir?

Kısaca açıklamak gerekirse, projeyi parçalara ayırmaktır.Şöyle ki, bir projede kullanıcı arayüzüne ait kısımları bir katmanda,veritabanına ait işlemleri bir katmanda,veritabanındaki tabloları temsil eden classları bir katmanda toplayarak projeyi parçalara ayırma işlemidir diyebiliriz.
Genelde üç katman yapısı standarttır.İhtiyaca göre katman sayısı arttırılıp azaltılabilir.

3 Katmanlı Mimariyi Kullanmanın Avantajları

- Yönetimi kolaylaştırır.
- Değişim sürecini hızlandırır.
- Esnek ve özelleştirilebilir bir yapı sağlar.
- Bakım kolaylığı sağlar.
- Geliştiriciler arasında uyum ve geliştirme kolaylığı sağlar.

Neden projelerde 3 katmanlı mimariyi kullanmalıyım?

3 katmanlı mimariyi kullanmadan 100 adet win formlu proje oluşturduğunuzu ve tüm kodları kodladığınızı varsayalım ve web uygulamasına geçmek istediğinizi varsayalım.Bu sefer tüm kodlar iç içe olduğundan,projedeki tüm sayfalar için kodları tekrardan yazmanız gerekecek ya da sql sunucusundan oracle sunucusuna geçeceğinizi varsayalım.Sayfalarda sql bağlantısını yazdıysanız, bunun için yine tüm sayfaların kodlarını tekrardan düzenlemek gerekecek.Bu işlemleri yeniden yazmak kolay değildir, çünkü zaman harcayan bir iştir.

Kullanılmadığında;
Projeye yeni biri katıldığında, projeyi anlamak zorlaşır.
Projenin belirli bir parçasını bulmak zorlaşır.
...

Örnek

'Deneme' adlı windows form projesi oluşturalım.(Bu katman bizim kullanıcı arayüzünüe ait kısımların bulunduğu katmanımız.)

İçersine Views ve Controller adlı 2 klasör oluşturalım.

Oluşan formumuzu views klasörüne atalım.

Formumuzun tasarımıda şu şekilde.

Katmanlı Mimari

Şimdi  'Deneme.Data.Model' adlı class library(sınıf kütüphanesi) oluşturalım.(Bu katman bizim veritabanındaki tablolarımızı temsil eden sınıflarımızın bulunduğu katmanımız.)

İçersinde 'Uye' adlı class oluşturalım ve property'lerimizi ekleyelim.

(Ana projemize 'Deneme.Data.Model' i referans olarak ekliyoruz.)

using System.ComponentModel.DataAnnotations;

namespace Deneme.Data.Model
{
    public class Uye
    {
        [Key]
        public int Id { get; set; }

        public string Ad { get; set; }

        public string Soyad { get; set; }
    }
}

Ardından 'Deneme.Data' adlı class library(sınıf kütüphanesi) oluşturalım.(Bu katman bizim veritabanıyla işlem yapacağımız(CRUD) kısımların bulunduğu katmanımız.)

İçersine 'Context' adlı class oluşturalım.(Burada DbContext sınıfına ulaşmak için entity framework'ü referanslarımıza eklememiz gerekiyor.)

('Deneme.Data' adlı sınıf kütüphanemizin referanslarına Deneme.Data.Model ' i ekliyoruz.Ana projemizin referanslarınada 'Deneme.Data' yı ekliyoruz.)

using Deneme.Data.Model;
using System.Data.Entity;

namespace Deneme.Data
{
    public class Context : DbContext
    {
        public Context() : base("Deneme")
        {
        }

        public virtual DbSet<Uye> Uye { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
}

 

Ana projemizdeki app.config dosyasına connectionStrings'imizi ekliyoruz.

<connectionStrings>
    <add name="Deneme"
      connectionString="Data Source=.;Initial Catalog=Deneme1;Integrated Security=True;Trusted_Connection=true;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

 

Şimdi de 'Crud' adlı bir sınıf oluşturalım.

using Deneme.Data.Model;

namespace Deneme.Data
{
    public class Crud
    {
        Context DB = null;
        public Crud()
        {
            DB = new Context();
        }

        public void Ekle(Uye model)
        {
            DB.Uye.Add(model);
            DB.SaveChanges();
        }
    }
}

 

Bu işlemlerden sonra ana projemize gelip, Controllers içersinde 'Uye' adlı bir sınıf oluşturuyoruz.

using Deneme.Data;
using Deneme.Data.Model;

namespace Deneme.Controllers
{
    public class UyeContoller
    {
        Crud crud = null;

        public UyeContoller()
        {
            crud = new Crud();
        }

        public void Ekle(string ad,string soyad)
        {
            Uye model = new Uye
            {
                Ad = ad,
                Soyad = soyad
            };
            crud.Ekle(model);
        }
    }
}

 

Evettt son işlemimize geldik.Formumuza geri dönüp, ekle butonuna çift tıklayıp kod  bölümüne geçiyoruz.

using Deneme.Controllers;
using System;
using System.Windows.Forms;

namespace Deneme
{
    public partial class AnaForm : Form
    {
        UyeContoller uye;
        public AnaForm()
        {
            InitializeComponent();
        }

        private void BtnKaydet_Click(object sender, EventArgs e)
        {
            uye = new UyeContoller();
            uye.Ekle(txtAd.Text,txtSoyad.Text);
            MessageBox.Show("Başarılı");
        }
    }
}

 

İşlemler bu kadar arkadaşlar.Şimdi projemizi çalıştırıp bir veri ekleyelim.

3(Üç) Katmanlı Mimari

Üç - Çok Katmanlı Mimari

 

Solution Explorer Son hali

Üç - Çok Katmanlı Mimari

Bir sonraki makalemde görüşmek dileğiyle.Umarım faydalı olmuştur.

İNDİR


Etiketler:  
katmanli-mimari-nedir
uc-katmanli-mimari
Katmanli-Mimariyi-Kullanmanin-Avantajlari


Paylaş:  

Bir Cevap Yazın

M

Mustafa Yıldırım 26 Eylül 2017
Elinize sağlık sade ve anlaşılır anlatmışsınız :)

İbrahim Çakal 26 Eylül 2017
Güzel yorumunuz için teşekkürler :)

O

ozan dalbudak 14 Şubat 2018
güzel bir anlatım olmuş elinize sağlık

İbrahim Çakal 19 Mart 2018
Teşekkürler Ozan Bey

İ

İsimsiz. 18 Nisan 2018
Teşekkür ederim.

İbrahim Çakal 18 Mayıs 2018
Yorumunuz için ben teşekkür ederim