Çok Katmanlı Mimari Nedir? Neden Kullanılır?Beğen

Çok katmanlı mimari sık kullanılan temel bir mimaridir. Özellikle basit web uygulamalarında uygulanan n-layer ve n-tier olarak farklı 2 kavrama karşılık gelmektedir. Bu iki kavram birbirinden farklıdır.

1. N-Layer:

Genelde uygulamanın 3 katmana ayrılmasıdır. Sunum (presentation), iş (business or logic), veri erişim (data access) katmanları temel katmanlardır. Sırasıyla kısaca PL, BL ve DAL diye adlandıralım. Katmanlar aynı işlem tarafından sunulmakta fiziksel olarak değil ama mantıksal olarak ayrılmış durumdadır. .Net için örnekleyecek olursak uygulamanın 3 farklı kütüphaneden (dll) den oluşması gibi, Java için ayrı package (jar) öğeleri gibi. Açık çok katmanlı mimaride; katmanlar, bağımlı olduğu diğer tüm katmanlara erişim sağlayabilir (PL>>BL & PL>>DAL gibi). Kapalıda ise her katman sadece bir sonrakine erişim sağlayabilir (PL>>BL>>DAL). Bu 3 temel katman dışında ihtiyaca ve tasarıma bağlı olarak başka katmanlar da (Facade, Controller, Proxy vb.) eklenebilir. Ayrıca tüm katmanların erişebileceği (helper, exception vb. sınıfların yer aldığı) ortak bir katman kullanımı da sık tercih edilmektedir.

  • Presentation Layer: Sadece UI ile ilgili işlemlerden sorumludur. İş mantığı ile ilgilenmez.
  • Business/Logic Layer: İş kuralları, karar aşamaları vb. bu katmandadır. En yüklü katmandır.
  • Data Access Layer: Veriye erişimden (ilişkisel veritabanı, nosql, file vb.) sorumludur. UnitofWork-Repo, DAO vs. patternler burada uygulanabilir. Ana görevi veriyi okuyup nesne olarak iş katmanına iletmek veya iş katmanından gelen direktife göre veri yazma işlemi yapmaktır.

Seperation of Concerns (Türkçesi; herkes kendi işine baksın, kimse kimsenin ayağına dolanmasın) prensibine hizmet eder.

2. N-Tier:

N-Layer yaklaşımından farklı olarak katmanların fiziksel olarak da ayrılmasıdır. Her katman birbirinden bağımsız farklı bir uygulama gibi düşünülebilir. Farklı makinelerde veya aynı makinedeki farklı işlemler (process) tarafından yürütülen hizmetler, servisler şeklinde düşünülebilir. .Net platformu ile örnek verecek olursak bir web uygulaması UI katmanı için bir Asp.Net MVC uygulaması, iş katmanı için bir Web API uygulaması, veri katmanı için de bir WCF uygulaması gibi. Her bir katman birbirinden fiziksel olarak bağımsızdır.


N-Tier mimarinin avantajları:

  • Yazılımı n-tier yaklaşımı ile katmanlara ayırmak ölçeklenebilirlik anlamında avantaj sağlar. İlgili katman birden çok makineye deploy edilebilir.
  • Veri bütünlüğü ve güvenliği sağlar. İstemci en arkadaki veri katmanına direkt erişim sağlayamaz.
  • Yeniden kullanılabilirlik artar.
  • Yük dengelemek daha kolaydır.
  • Yapı kurulduktan ve olgunlaştıktan sonra yönetimi ve sürdürülmesi daha kolaydır. Herhangi bir katmandaki değişiklik diğer katmana minimum etki verecektir.

Dezavantajları;

  • Başlangıçta yapının kurulması ve oluşturulma maliyeti yüksektir. Tasarıma daha çok efor verilmesi gerekir.
  • Katmanlar birbirleri ile ağ üzerinden haberleşeceği için ağ trafiği yükselecek, ağ süreleri de çalışma sürelerine eklenecektir.
  • Yeni bir özellik için tüm katmanlarda gerçekleştirme gerekeceği için karmaşıklık ve efor artacaktır. Ör: sisteme yeni bir nesne eklemek istediğimizde veri katmanında bu nesnenin veri tarafı için gerçekleştirilmesi, iş katmanında veri taşıyıcı nesnenin (dto) oluşturulması ve veri katmanından gelen nesnenin dönüştürülmesi, UI için de benzer şekilde ViewModel oluşturulması gibi.


Bu 2 yaklaşım birlikte hibrit olarak da kullanılabilir. Örnek bir mimari (2-tier & n-layer):

1. Kullanıcı Arayüzü (UI) işlevini yerine getirecek bir Asp.Net MVC uygulaması (frontend tier).

2. Rest ve Soap servis hizmeti verecek bir WCF uygulaması (backend tier), bu tier içerisinde fiziksel olarak birbirine bağlı Web Service >> Logic (Business) >> Data katmanları (layers)

Yorum Yaz
00:00:00
Saturday 15 Jan 2017
Altın Sözler
“Sürekli çevresinde dönüp durduğun şeyi en çabuk kaybedersin.”
Web hosting by Somee.com