Yazalım Dillerinde Çok(n) Katmanlı Mimari ve Modülerlik (N-Tier Architecture)

Yazılımı bir meslek olarak veya ilerleyen teknolojiyi de takip ederek gelişime açıksanız vazgeçilemeziniz olacak bir yapıdan bahsetmek istiyorum. Kurumsal firmalarında benimsediği bu diyagram çalışma kolaylığı ve iş takibini kolaylaştırmasının yanında nesne yönelimli çalışmaya yatkınlık açısından da kullanmak gerek.

N katmanlı mimari ayrıca çok katmanlı mimari olarak da bilinir, çünkü yazılım işleme, veri yönetimi ve sunum işlevlerini fiziksel ve mantıksal olarak ayrı tutmak için tasarlanmıştır. Bunun anlamı, bu farklı işlevlerin çeşitli makinelerde veya kümelerde barındırılması, kaynakların paylaşılmadan hizmetlerin sağlanmasının ve bu hizmetlerin en yüksek kapasitede sunulmasının sağlanması anlamına gelir. N katmanlı mimari adındaki “N”, 1’den herhangi bir sayıya karşılık gelir.

Bunun nedeni, bir bölümde çalışırken yaptığınız değişikliklerin diğer işlevleri etkilememesidir. Ve eğer bir sorun varsa, nereden çıktığını kolayca tespit edebilirsiniz.

N Katmanlı Mimariye Derinlemesine Bakalım

N katmanlı mimari, bir uygulamanın üç farklı kademeye bölünmesini içerir . Bunlar;

  1. mantık katmanı,
  2. sunum katmanı ve
  3. veri katmanı.

Peki bu n takmanlı mimarinin MVC modelleme sisteminden farkı nedir ? Farklı katmanlar arasındaki tüm iletişimi kolaylaştıran bir orta katmana veya bir mantık katmanına sahip olması nedeniyle MVC çerçevesinden farklıdır. MVC çerçevesini kullandığınızda, gerçekleşen etkileşim üçgendir; mantık katmanından geçmek yerine, model katmanına görünüm katmanına erişirken modele ve görünüm katmanlarına erişen kontrol katmanıdır. Ek olarak, kontrol katmanı gereksinimleri kullanarak bir model oluşturur ve sonra bu modeli görünüm katmanına iletir.

N Katmanlı Mimari

N Katmanlı Mimarinin Faydaları Nelerdir?

Yazılımınız için n katmanlı mimari kullanmanın birkaç faydası vardır. Bunlar ölçeklenebilirlik, yönetim kolaylığı, esneklik ve güvenliktir.

  • Güvenli: Üç katmandan her birini farklı yöntemler kullanarak ayrı ayrı güvence altına alabilirsiniz.
  • Yönetimi kolay: Her bir katmanı ayrı ayrı yönetebilir, diğer katmanları etkilemeden her katmanı ekleyebilir veya değiştirebilirsiniz.
  • Ölçeklenebilir: Daha fazla kaynak eklemeniz gerekirse, diğer katmanları etkilemeden katman başına yapabilirsiniz.
  • Esnek: İzole edilebilmesi, ölçeklenebilirliğin yanı sıra, her aşamayı gereksinimlerinizin gerektirdiği şekilde genişletebilirsiniz .
  • Daha verimli gelişme. Her kademede farklı ekipler çalışabileceğinden, N-katmanlı mimari geliştirme için son derece kolay. Bu şekilde, tasarım ve sunum uzmanlarının sunum katmanında ve veritabanı uzmanlarının veri katmanında çalıştığından emin olabilirsiniz.
  • Yeni özellikler eklemek kolaydır. Yeni bir özellik tanıtmak istiyorsanız, diğer katmanları etkilemeden uygun katmana ekleyebilirsiniz.
  • Yeniden kullanımı kolaydır. Uygulama bağımsız katmanlara bölündüğünden, her yazılımı diğer yazılım projeleri için kolayca yeniden kullanabilirsiniz. Örneğin, aynı programı kullanmak, ancak farklı bir veri kümesi için, sadece mantığı ve sunum katmanlarını çoğaltabilir ve ardından yeni bir veri katmanı oluşturabilirsiniz.

Nasıl Çalışır ve N Katmanlı Mimarisi Örnekleri

N katmanlı mimari söz konusu olduğunda, üç katmanlı mimari oldukça yaygındır. Bu kurulumda sunum veya GUI katmanına, veri katmanına ve uygulama mantığı katmanına sahipsiniz.

Uygulama mantığı katmanı.   Uygulama mantığı katmanı, tüm “düşünme” nin gerçekleştiği yerdir ve uygulamanızın neye izin verdiğini ve neyin mümkün olduğunu bilir ve diğer kararları verir. Bu mantık katmanı aynı zamanda veri katmanına veri yazan ve okuyan katmandır.

Veri katmanı. Veri katmanı, uygulamanızda kullanılan tüm verilerin depolandığı yerdir. Verileri bu katman üzerinde güvenli bir şekilde saklayabilir, işlem yapabilir ve hatta birkaç saniye içinde hacimler ve veriler arasında arama yapabilirsiniz.

Sunum katmanı.   Sunum katmanı kullanıcı arayüzüdür. Bu, yazılım kullanıcısının gördüğü ve etkileşime girdiği şeydir. Gerekli bilgiyi girdikleri yer burasıdır. Bu katman ayrıca, kullanıcının farklı eylemlerini mantık katmanına aktararak, veri katmanı ve kullanıcı için bir geçiş görevi görür.

En sevdiğiniz web sitesinde gezindiğinizi hayal edin. Sunum katmanı, gördüğünüz Web uygulamasıdır. Bilgisayarınızdan eriştiğiniz bir Web tarayıcısında gösterilir ve Web uygulamasını anlamanıza olanak sağlayan CSS, JavaScript ve HTML kodlarına sahiptir. Giriş yapmanız gerekiyorsa, sunum katmanı kullanıcı adı, şifre ve gönder düğmesi için kutuları gösterir. Formu doldurup gönderdikten sonra, tüm bunlar mantık katmanına aktarılacaktır. Mantıksal katman JSP, Java Servlets, Ruby, ASP.Net ve diğer programlara sahip olacaktır. Mantıksal katman bir Web sunucusunda çalıştırılabilir. Ve bu örnekte, veri katmanı, MySQL, NoSQL veya PostgreSQL veritabanı gibi bir tür veritabanı olacaktır. Bunların hepsi ayrı bir veritabanı sunucusunda çalıştırılır. 

Ve üçten fazla kademeye sahip n-katmanlı mimari modelleri de var . Bunlar;

  • Servisler – baskı, rehber veya veri tabanı servisleri gibi
  • İş alanı – Java, DCOM, CORBA ve diğer uygulama sunucusu nesnesini barındıran katman.
  • Sunum katmanı
  • Müşteri katmanı

İsterseniz Gelin ASP.NET için bir örnek yapalım

ASP.NET ÖRNEĞİ

Varlıklar Katmanı (Entities Layer)

Varlıklar katmanı, veritabanındaki tablo eşlemeleri, DTO’lar (Veri Aktarım Nesneleri) veya ASP.NET MVC Modelleri gibi uygulamanın diğer tüm projelerinde kullanılan tüm varlıkları içerir. Bu katmandaki sınıfların çoğu POCO (Plain Old CLR Objects).

Veri erişim katmanı(Data Access Layer)

Veri Erişimi katmanı, Veritabanında Öğeleri Oluşturma, İade Etme, Güncelleme, Silme (CRUD) için işlevler içerir. Bu katmanda ADO.NET, nHibernate veya Entity Framework gibi teknolojileri kullanabilirsiniz.

Yukarıdaki işlemler için gereken varlıklar veya veritabanı tablosu eşleme sınıfları yukarıda açıklanan Varlıklar katmanından referans alınacaktır.

Bu katman yalnızca İşletme Bileşenleri katmanı tarafından paylaşılmalıdır. Visual Studio’da, katman bir “Sınıf Kütüphanesi” proje tipi ile temsil edilecektir.

İş Bileşenleri Katmanı (Core Tire)(Business Components Layer )

Business Components katmanı, uygulamanın tüm temel işlevlerini içerir. Amaç, Veri Erişim Katmanına maruz bırakılan yöntemlere uygulanan tüm özel mantığı Sunum Katmanı’na veya Hizmet Katmanı’na yönlendirilmeden önce tutmaktır. Dizileri listelere dönüştürme, matematiksel hesaplamalar veya değişken dönüşümler gibi işlemler bu katmanda yapılır.

Yukarıdaki işlemler için gerekli olan varlıklara Varlıklar katmanından ve veritabanı işlemi yöntemlerine Veri Erişim katmanından referans verilecektir.

Bu katman sadece Sunum Katmanı veya Servis Katmanı tarafından paylaşılmalıdır. Visual Studio’da, katman bir “Sınıf Kütüphanesi” proje tipi ile temsil edilecektir.

Hizmetler Katmanı(Services Layer)

Hizmetler Katmanı, İş Bileşenleri Katmanını API olarak üçüncü taraf sistemlere sunma imkanı sunar. 
Örneğin, mobil bir uygulamayla veritabanınızdaki ürünlerle ilgili bazı verileri paylaşmak istiyorsanız, bu katman bundan sorumlu olmalıdır. Ancak, bu katman zorunlu değildir. Uygulamanızın başka bir sistemle veri paylaşmayacağını düşünüyorsanız, bu katman oluşturulmamalıdır.

Daha önce de söylediğim gibi, bu katmana maruz kalması gereken yöntemler Business Components Layer’dan referans alınmıştır ve bu katman yalnızca Sunum Katmanı ve diğer üçüncü taraf sistemleri tarafından paylaşılmalıdır.

Bu katmanda WCF Servisleri, Web Servisleri veya ASP.NET WebAPI gibi teknolojileri kullanabilirsiniz.

Sunum Katmanı(Presentation Layer)

Sunum Katmanı, uygulamanızın kullanıcı arayüzünü barındırmaktan sorumludur. Örnek olarak, bu katmanda tüm .aspx sayfalarına ve .ascx kullanıcı denetimlerine JavaScript ve CSS dosyalarıyla birlikte sahip olacaksınız. Veritabanından veri almaktan sorumlu olan yöntemlere yalnızca doğrudan Business Components katmanından veya Services katmanından referans verilecektir.

Bu katmanda ASP.NET WebForms veya ASP.NET MVC gibi teknolojileri kullanabilirsiniz.

NOT: Bu katmanın doğrudan veritabanı çağrıları veya Veri Erişimi katmanına doğrudan erişime açık tutulduğundan emin olun.

Ortak Bileşenler Katmanı(Common Components Layer)

Ortak Bileşenler Katmanı, yukarıdaki katmanlardan herhangi birinde kullanılabilecek tüm ortak kitaplıkları veya işlevleri içerir. Örneğin: doğrulama işlevi, güvenlik kitaplıkları, şifreleme araçları veya istisna kayıt sınıfları bu katmana eklenebilir.

Bu isteğe bağlı bir katmandır ve yukarıda açıklanan katmanlara bağımlılık olmaması zorunludur, çünkü bu katman birden fazla projede derlenebilir ve paylaşılabilir.

Bu katmanları bir projede kullanacak olursak içerikleri aşağıdaki gibi olacaktır.

  1. WebProjesi.Entities (veritabanındaki tablo işlemleri, DTO’lar (Veri Aktarım Nesneleri) veya ASP.NET MVC Modelleri)
  2. WebProjesi.Data (Entity Framework işlemleri CRUD vb.)
  3. WebProjesi.Core (Temel İşlemler )
  4. WebProjesi.Common (Tüm Katmanları ilgilendiren işlemler)
  5. WebProjesi.Services (Web services)

Bu yazımda hiç kod yazamadım ama çok önemli bir konu olduğu için de değinmeden edemedim. Öyle zannediyorum ki bundan sonraki yazılarımda daha çok kod üzerinde yoğunlaşmaya çalışacağım. Umarım Bu makalede sizlere bir şeyler katabilmişimdir. Okuduğunuz için teşekkür ediyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir