top of page
Ara

Katmanli Mimari ( Layer Architecture )

  • oezdemirseda
  • 28 Haz 2015
  • 2 dakikada okunur

Bu yazimda bir katmanli mimari örnegi yaparak aciklayacagim.

Katmanli mimari bir Solution da ayni islevi gören benzer yapilarin ayni projeler icerisinde yer almasidir. Yani; bir mimaride kullanilacak olan tüm yapilarin ayri projeler icerisinde tek bir solutionda toplanmasi katmanli mimariyi oluturur.

Katmanli mimarinin kullanimda sabit bir katman sayisi yoktur. Yazan kisiye bagli olarak cesitli sayida katmanlardan olusabilir.

Benim yapacagim örnek ;

-Entities

-Interface Business Logic Layer

-Business Logic layer

-Presantation Layer

katmanlarindan olusacak.

Örnege baslamadan önce bu katmanlarda neler yer alacagini aciklayim;

Entities Katmaninda :

Veriyi cekecegim databasedeki tablo yapilarina benzeyen siniflarimizi olusturacagiz. Burasini kalip gibi düsünebiliriz. Mesela Northwind database`inden Products tablosuna ait verileri cektik ve bunu bir nesnenin icine atmak istedik. Evet tüm hersey object sinifindan türediginden bunu da bir object nesnesi icine atabiliriz ama davranislari object nesnelerinin davranislari ile kisitli kalir yani; ProductName vs. gibi attribute lerini kullanamayiz. Bundan dolayi tüm bu özellikleri kullanabilecegimiz bir nesneye ihtiyacimiz var. Bu nesneyi ise bir siniftan instance alacagimiz icin öncelikli olarak sinifini olusturmaliyiz. Gelen veriyi üstünde saklayacagimiz nesnelerin instance alinacagi siniflarin bulanacagi katman Entities katmani olacaktir.

Presantation Layer :

Bu katmanda sadece kullaniya yönelik olan yapilar bulunacak. Mesela az sonra yapacagim örnekte son kullanicin görecegi windows form uygulamalari bu katmanda yer alacak.

Business Logic Layer :

Presantation katmaninda ihtiyacimiz olacak olan methodlari bu sinifta tanimlayacagiz mesela az önce Northwind database`indeki Products tablosundan bahsetmistik. Bu tablodan veri cekmek isteseydik büyük ihtimalle Kategorilerine göre ürünleri aramak isterdik. Ve bunu yazacagimiz katman Business Logic Layer olacakti.

Interface Business Logic Layer :

Bu katman Business Logic layer`in sablonu olacak yani Business logic layer da kullanacagim siniflarin burada interface`lerini tanimlayacagim.

Aslinda bu sinifin amaci sudur;

Cok kisi calisilacak olan bir projede kullanicin göreseli belirlenir yani formlar olusturulur. Arka kisimdaki kodlar yazilmadan sadece görsel sekilde. Entities de sadece siniflar olusturulur fakat icleri bostur. Interface Business Logic Layer`da da form katmaninda ihtiyac olacak olan methodlar belirlenir ve yazilir. Fakat bu sinif sablon görevi gördügünden sadece methodlar isimsel ve islevsel olarak belirlenmistir. Islevini yerine getirmiyordur henüz daha business logic layer yazilmadigindan.

Böylece her katmani ayri bir yazilimci kodlarken Form katmanini yazan yazilimci business logic layer`daki methodlar henüz yazilmadigindan interface business logic layer daki interface türünden nesneler kullanir. Böylece tüm methodlara ulasabilir ve kendi katmanini yazabilir. Projenin sonunda ise Business Logic Layer da yazildiktan sonra interface`ler türünde olusturulmus degiskenler siniflarin controctur`inda Business Logic Layer`a cast edilirler.

yine Products sinifi üstünden az önceki method örnegimden gidersek

Interface Business Logic Layer;

public IProducts

{

List<Products> kategorisineGoreAra(Categories kategori);

}

Presantation Layer;

public Form1 : Form

{

IProducts productsNesnesi;

public Form1()

{

listBoxunIciniDoldur();

}

listBoxunIciniDoldur()

{

ListBox1.DataSource=productsNesnesi.kategorsineGoreAra(Beverages);

//Beverages kategorisine ait tüm ürünleri listox a yazdiracak.

}

}

seklinde presantation katmani yazilir daha sonra

Business Logic Layer;

ProductsBll

{

List<Products> kategorisineGoreAra(Categories kategori)

{

return context.Products(p=>p.CategoryID==kategori.CategoryID).toList();

}

}

seklinde yazilir. Ve bu method artik calisir hale geldikten sonra präsantation katmanindaki formun controctur`ina

productsNesnesi= new ProductsBll();

yazilarak presantation katmani da calisir hale getirilir.

public Form1 : Form

{

IProducts productsNesnesi;

public Form1()

{

productsNesnesi= new ProductsBll();

listBoxunIciniDoldur();

}

listBoxunIciniDoldur()

{

ListBox1.DataSource=productsNesnesi.kategorsineGoreAra(Beverages);

//Beverages kategorisine ait tüm ürünleri listox a yazdiracak.

}

}

Kisacasi henüz daha katmanlarin kodlari yazilmadan interfaceler sayesinde methodlarina ulasilir ve kullanilir. Calisi hale ise yazildiktan sonra cast etme islemi ile getirilir.


 
 
 

Comments


© 2023 by The Book Lover. Proudly created with Wix.com

  • Facebook B&W
  • Twitter B&W
  • Google+ B&W
bottom of page