Makale Özeti

C#.NET de bu yazımızda 3 katmanlı mimari konu başlıklı oldukça önemli bir konsepti sizlerle paylaşacağım. Bu metot kod bakım/onarım kolaylığı açısından oldukça kullanışlı bir yöntemdir. Genel anlamda bu yöntemi gerek teorik gerek pratikte ve programatik olarak ele alacağız.

Makale

Merhaba değerli arkadaşlar,

C#.NET de bu yazımızda 3 katmanlı mimari konu başlıklı oldukça önemli bir konsepti sizlerle paylaşacağım. Bu metot kod bakım/onarım kolaylığı açısından oldukça kullanışlı bir yöntemdir. Genel anlamda bu yöntemi gerek teorik gerek pratikte ve programatik olarak ele alacağız. 
 
----------------------------------------------------------------------------------------------------------------------------

GENEL BAKIŞ

Konumuzu irdelerken genel başlık hatları aşağıdaki gibi olacaktır;

1-       Katman

2-       3 Katmanlı Mimari Tasarım Bileşenleri

3-       Örnek Uygulama: 3 Katmanlı Mimari Konseptinin uygulandığı örnek bir uygulama  


1-KATMAN:

Katman, aynı veya çoklu sunucular üzerinde  DLL,EXE vb. farklı kurulum bileşenlerinin fiziksel olarak birbirinden ayrılması anlamını belirtir. Katman(layer/tier) kavramını daha iyi kavramak adına aşağıdaki şekil üzerinde açıklamalarımızı gerçekleştirebiliriz: 3 katmanlı mimari, 3 layer architecture in C#.net Yukarıda şeklimize baktığımızda Veri Katmanının, Sunum katmanıyla herhangi bir yön bağlantısı bulunmamaktadır. Bu şekli iyice irdelediğimizde şunu söyleyebiliriz, Burada Tanımlanan veriye iş mantığını eklemek için Veri katmanından (Data Layer), Sunum katmanına (Presentation Layer) geçişten sorumlu bir ara katman vardır ve bu ara katmana İş Katmanı (Business Layer) denilmektedir. Bu yüzden eğer her bir katmanı fonksiyonlarına göre ayırırsak aşağıdaki gibi bir sonuç çıkarabiliriz: sunum katmanı,ara katman, veri katmanı, presentation layer, middle layer,business layer, data layer

ALT KATMANLAR

Bir katmanı açıklarken, aynı veya çoklu sunucular üzerinde  DLL,EXE vb. farklı kurulum bileşenlerinin fiziksel olarak birbirinden ayrılması anlamını belirtir. Açıklamamızda fiziksel olarak birbirinden ayrılması KATMAN tanımını net olarak ortaya koymaktadır.

Alt katmanlar ise; Kullanıcı ara yüzü katmanı, iş mantığı katmanı, Veri tabanı erişim katmanı ve farklı birer namespace (isim uzayı) sahip olması gibi bileşenlerinin mantıksal olarak birbirinden ayrılması anlamını belirtir.

 

tier vs. layer in C#  

 

2-  ÜÇ KATMANLI MİMARİ TASARIM BİLEŞENLERİ

Yukarıdaki açıklamalarımızın ışığında Katman kavramını fiziksel bileşenlerin toplamı olarak ifade etmiştik. Bundan dolayı katmanlarımızı 1-       Veri Katmanı ( Data Layer) 2-       İş Katmanı ( Business Layer) 3-       Sunum Katmanı (Presentation Layer) Olmak üzere 3’e ayırabiliriz. Bu katmanlarda kullanılan alt bileşenler ise şekildegösterildiği gibidir.

different between tier and layer, katman ve alt katman arasındaki fark

3 katmanlı mimari de işlemler en alt katman olan Veri Katmanından başlayarak ara katman olan İş katmanına oradan da en son Sunum katmanında kullanıcıyla etkileşimi gösteren Sunum katmanına doğru sonlanır.

1-  Veri Katmanı (Data Layer): Basit olarak bir uygulamanın veri depolayan sunucusudur. Bu katman; Veri tabanı tabloları, XML dosyaları ve diğerleri dediğimiz Uygulama verisinin depolanması anlamını taşıyan çeşitli bileşenler içerir.

 

2-  İş Katmanı (Business Layer) : Sunum katmanı ile Veri katmanı arasında köprü olarak çalışır. Bütün veriler sunum katmanına geçmeden önce İş katmanından geçer. İş Katmanı; İş mantığı katmanı, Veri erişim katmanı ve Değer nesneleri ve iş mantığına eklenen diğer nesnelerin toplamıdır.

 

3-  Sunum Katmanı (Presentation layer): Bir uygulama ile kullanıcıların etkileşimde olduğu katmandır. Sunum katmanı; Shared UI (User Interface) kodları, Code behind ve kullanıcıya bilgiyi göstermek için tasarımın(görselliğin) kullanılması gibi bileşenleri içerir.

BUS,VO,DAO

 

Yukarıda ki şeklimiz, 3 katmanlı mimari ile 3 alt katmanlı mimarinin karışımıdır denilebilir. Bu şeklimize göre açıkça Katman ile Alt katman kavramları arasındaki farkı görebiliriz. Her bir bileşen birbirlerinden bağımsızdır. Bu vasıtayla uygulamamıza ait kod yapısının tamamını değiştirmeden hatalı olan veya değiştirmek istediğimiz kısmı kolaylıkla değiştirebiliriz.

3 Katmanlı Mimari veya Katmanlı Mimari metodu aynı proje/uygulama üzerinde çalışmakta olan bir çok yazılım geliştiriciye ciddi anlamda kolaylıklar sağlamaktadır. Çünkü bazı modüller başka bir projede yeniden kullanılabileceğinden dolayı geliştiriciye kolaylık sağlayan bir yapı inşa etmiş olur. Proje için bir test durumu göz önünde bulunduracağımız zaman projenin mimari yapısı için Test etme olayı oldukça önemlidir.  

3  -  C#.NET’TE ÜÇ KATMANLI MİMARİ DEMO WINDOWS UYGULAMASI

Öncelikle Veri tabanımıza ilişkin işlemleri yapabilmemiz için ilk etapta SQL Server Studio Management da Deneme adlı bir veri tabanı oluşturuyoruz.

Deneme adlı veri tabanımızda tblKullanicilar adlı bir tablomuz bulunacak ve bu tablo içinde aşağıdaki sütunlarbulunacaktır.

tblKullanicilar,database

Demo uygulamamıza ait basit bir tblKullanicilar tablosu oluşturduk. Şimdi veritabanımızı Visual Studio ortamında Server Explorer ortamında entegre edelim.

SQL server management Studio bağlanma biçimimize göre Data Connection nesnesi üzerine sağ click yaparak çıkan seçeneklerden Add Connection yolunu izliyoruz. Ve karşımıza çıkan formda Server adımızı (3 nolu seçenek) yazarız. Çoğunlukla lokalde çalışıldığından dolayı .\SQLEXPRESS yazılarak yapılabilir. Ve sonrasında Windows yada SQL Server Authentication kimlik doğrulama seçeneklerinden biriyle 7 numaralı seçenekteki gibi üzerinde çalışacağımız Veri tabanımızın adını seçiyoruz.

server explorer cisual studio 2010, data connection  

 

vs 2010, katmanlı mimari

 

Yukarıdaki şekilde gördüğünüz gibi Veri tabanımızda bulunan tblKullanicilar adlı tablonun nesneleri ve diğer yandan Visual Studio kod geliştirme platformunda Solution Explorer ortamında eklediğimiz Katmanlı Mimari nesnelerini görmekteyiz.

Görüldüğü gibi C# programlama diliyle oluşturulan;

BUS adlı dosyamızın altında kullaniciBUS.cs

DAO adlı dosyamızın altında kullaniciADO.cs

VO adlı dosyamızın altında kullaniciVO.cs Nesne dosyaları bulunmaktadır.

İşlemlerimizi Katmanlı Mimari yapısına uygun olarak yapılandırdığımız için bu yapıya uygun programlama tekniklerini göstereceğiz.

dbConnection

dbConnection sınıfı özellikle veri tabanı için SELECT, INSERT, UPDATE, DELETE gibi sorguları yapan veri tabanı sınıfıdır.

Ayrıca veri tabanının açık veya kapalı olduğunu kontrol eden sınıftır. Eğer veri tabanı açık değilse veri tabanını açarak gerekli sorguları gerçekleştirir. Bu sınıfta veri tabanı ile ilgili yapabileceğimiz değişiklikleri ve ayarları daha kolay değiştirebilmek ve yönetmek için app.config dosyasından da yararlanır.

Bir app.config dosyasından ConnectionString nesnesi nasıl çekileceğine dair işlemleri önceki makalelerimizden inceleyebilirsiniz. Gerekli işlemlere ait bağlantı işlemlerimizin başlatılması:

dbconncetion

Buradaki kodlarımızla veri tabanımıza ait bir sorgunun seçilmesi

Veri tabanımıza bir sorgunun eklenmesi:

Veri tabanımızda bulunan verilerin güncellenmesi:

Bu işlemlerimizin tamamını dbConnection sınıfımız içerisinde gerçekleştiririz.

Veri Erişim Nesnesi ( Data Access Object – DAO)

Veri Erişim Katmanı, dbConnection sınıfından geçen ve İş mantığı Katmanından alınan parametrelerin çalışmasını sağlayan sorgu tabanlı bir katmandır denilebilir.

Ve aynı zamanda dbConnection sınıfından İş Mantığı Katmanına basit sonuçları döndüren katmandır.

Değer Nesnesi ( Value Object – VO)

Değer nesnesi, GET ve SET metotlarını içeren bir sınıftan daha fazla bir şey değildir. Özellikle bir sınıftan bir diğerine veri aktarmak için kullanılır. Değer Nesnesi (VO) direkt olarak İş Mantığı Katmanı ile Sunum Katmanına bağlanır. Yukarıdaki şekillerimizi incelediğimizde açıkça görebiliriz ki; Değer nesnesi (VO), Sunum Katmanından GET, İş katmanında ise SET edilmektedir.

Şeklinde belirtebiliriz.

İş Mantığı Katmanı ( Business Logic Layer – BUS)

Veri Erişim Nesnesi (Data Access Object –DAO) ile Sunum Katmanı (Presentation Layer) arasında iletişimi sağlayan bir köprü olarak çalışır. Sunum katmanından alınan bütün kullanıcı değerleri İş Mantığı Katmanına geçer. Sonuçlar, Data Table formatında bir veri sırasında DAO’dan alınır. Fakat BUS’ta bunlar Veri nesnelerine dönüştürülür. Bundan dolayı İş Katmanı sınıfı oldukça önemli bir sınıftır, Çünkü programa yada uygulamaya ait bütün iş mantığı bu katmandadır.

Örneğin; Bir kullanıcı programın iş mantığını güncellemek istediği zaman sadece bu sınıfı güncellememiz gerekir.

Sunum Katmanı (Presentation Layer)

Sunum Katmanı, kullanıcı doğrudan bağlantılı tek katmandır. Sunum katmanı, kullanıcı ile etkileşim içinde olduğundan dolayı uygulamanın pazarlaması açısından oldukça önem arz etmekte olan bir katmandır.

frmLogin.cs

Bir sonraki makalemizde görüşmek dileğiyle faydalı olmasını temenni ederim.


Muhammed ÖNAL

Bilgisayar ve Gömülü Sistemler Mühendisi

RFID Developer Eng.

http://www.muhammedonal.com