Bu yazımda biraz üç katmanlı mimariden bahsetmek istiyorum.
Tabi ki katman sayısını üçle sınırlamak doğru değil ama başlangıç için bence en
ideali üç katman.
Yazılımı Neden Katmanlara Ayırıyoruz?
Aslında cevap herkesin aklına geldiği gibi yönetimi ve
bakımı kolaylaştırmak. Şimdi aklınıza bir yazılım getirin bu yazılım
veritabanına bağlı olsun. Bu yazılımın tüm kodu bir iki sınıfa sığdırılmış
olsun, ve bir zaman sonra yazılımın veritabanına bağlantısında bir hata olduğu
ortaya çıksın. Böyle bir durumda tüm kod açılacak içinden zorlukla veritabanı
ile ilgili kod bulunacak, gerekli yer düzeltilecek tüm proje baştan derlenecek.
Ve tam bu anda yanlışlıkla arayüzü sağlayan kodun bir kısmını sildiğinizi
farkediyorsunuz. Onca kod arasından uğraşıp sildiğiniz kodun ne işe yaradığını
bulacaksınız tekrar yazıp tekrar derleyeceksiniz. Bu hem size hem de işini
yaptığınız kişiye zamana mal olacak.
Peki bundan nasıl kurtulacaksınız?
Cevap şu en başta yazılımı tasarlarken her işi ayırmalı ve
mümküm olan en küçük ve en özel sınıfları amaçlamalısınız. İşte bu durumda da
çeşitli iş öbekleriyle karşılaşacaksınız. Bazı sınıflar veritabanı ile iletişim
kurarken bazıları iletişim kurmuş bu sınıflardan gelen verileri işleyecek ve
bunları arayüze yani görünen kısma taşıyacak. İşte tam burada katmanlı mimari
devreye giriyor, yapılan işe göre sınıflar kategorize ediliyor. Konumuz olan üç
katmanlı mimaride adından da anlaşılacağı üzere 3 katman vardır. Bunlar:
. Veri Katmanı
. İş Katmanı
. Arayüz (Sunum) Katmanı
Veri katmanı:
Veri katmanı adı üstünde veri ile ilgilenir başka hiçbir şey
yapmaz. Database ve Stored Procedure ler bu katmandadır.
Önemli nokta: bu katmanda asla verilerle işlem yapılmaz.
İş Katmanı:
Veri katmanından alınan veriler buradaki sınıflarca
işlenmelidir. Burda her türlü işlem yapılır. Hesaplamalar, verilerin değişimi
vb… Ve ancak bu katmanın işi bitince veriler veritabanına aktarılmak üzere veri
katmanına ya da gösterilmek üzere arayüz’e yollanır.
Bu katmanda herhangi bir veri depolanmamalı, arayüze sonuç
bastıracak kodlar bulunmamalıdır. Sadece veriyi almalı, işlemeli sonucu geri
dönüş değeri olarak döndürmelidir.
Arayüz (Sunum) Katmanı:
Verilerimiz İş katmanında işlendi, ve ekrana sonuçların
bastırılması gerekiyor. İş katmanından gelen verileri bu katmandaki sınıflar
aracılığıyla alıp ekrana bastırıyoruz veya ilgili başka bir programa
aktarıyoruz. Yani bu katman sadece programın üreteceği son değerin
şekillerdirilmesi(anlaşılır hale getirilmesi) ve gösterilmesi işinden sorumlu.
Bu katmanda da hiçbir veri işleme işi yapılmamalı sadece iş
katmanından gelen veriler biçimlendirilerek sunulmalıdır.
Üç katmanlı mimari işte bu kadar asıl iş projeyi üç katmanlı
hale gelebilecek şekilde moduler olarak tasarlayabilmekte. Bu sağlandığı
takdirde Sadece veri tabanımızda sorun varsa veri katmanındaki ilgili sınıfa
gidebilir değişikliği yaparız ve programın geri kalanı bu değişimden hiç
etkilenmez. Bu şekilde tasarım aynı zamanda takım çalışmasına atılan ilk
adımdır. Her programcı başka katmanlarla uğraşabilir, örneğin ben iş katmanını
yazarım, kod yazmaktan anlamayan bir sanatçı da arayüzü tasarlar. Gelecek
verilerin şekli belli olduğu için, bunu yaparken zorluk da çekmeyecektir.