ASP.NET Katmanlı Mimari (N-Tier Architecture)
Katmanlı mimari (Layered Architecture), yazılım geliştirme sürecinde uygulamanın farklı sorumlulukları birbirinden ayrılarak daha düzenli, bakımı kolay ve esnek bir yapı oluşturmak için kullanılan bir tasarım desenidir. Katmanlı mimari, genellikle dört ana katmandan oluşur, bunlar; Sunum Katmanı, İş Mantığı Katmanı, Veri Erişim Katmanı ve Altyapı Katmanı. Her katmanın kendi sorumlulukları ve görevleri vardır. Aşağıda 4 katmanın özellikleri açıklanmıştır, ancak kurumsal yapıya göre katmanlar çoğaltılabilir veya azaltırlabilir, sorumluluklar değiştirilebilir. Burada genel bir çerçeve çizilmiştir.
Sunum Katmanı (Presentation Layer)
Sorumluluklar:
- Kullanıcı arayüzünü (UI) ve kullanıcı deneyimini (UX) sağlar.
- Kullanıcıdan gelen istekleri alır ve kullanıcıya yanıt verir.
- İş mantığı katmanı ile etkileşime geçerek gerekli verileri alır ve kullanıcıya sunar.
Teknolojiler:
- ASP.NET Core MVC: Model-View-Controller deseni kullanılarak web uygulamaları oluşturulur.
- Razor Pages: Daha basit ve sayfa odaklı web uygulamaları için kullanılır.
- Blazor: Daha dinamik ve etkileşimli kullanıcı arayüzleri oluşturmak için kullanılır.
Örnek:
Bir e-ticaret uygulamasında, kullanıcıların ürünleri görüntülemesi, sepete eklemesi ve ödeme yapması gibi işlemler bu katmanda yönetilir.
İş Mantığı Katmanı (Business Logic Layer)
Sorumluluklar:
- Uygulamanın iş kurallarını ve iş mantığını kapsar.
- Veri doğrulama, iş süreçlerinin yönetimi ve uygulama içi işlemleri gerçekleştirir.
- Sunum katmanından gelen istekleri işler ve veri erişim katmanına gerekli istekleri iletir.
Teknolojiler:
- Services: İş mantığı işlemlerini kapsayan servis sınıfları oluşturulur.
- Dependencı Injection (DI): Servis baımmlılıkları yönetilir ve uygulanır.
Örnek:
Bir e-ticaret uygulamasında, bir ürünün stokta olup olmadığını kontrol etmek, kullanıcıya uygun fiyatları göstermek ve indirimleri uygulamak gibi işlemler bu katmanda gerçekleştirilir.
Veri Erişim Katmanı (Data Access Layer)
Sorumluluklar:
- Veritabanı ile iletişimi sağlar ve veri işlemlerini gerçekleştirir.
- Veri erişimini soyutlar ve iş mantığı katmanına veri sağlar.
- Veritabanı CRUD (Create, Read, Update, Delete) işlemlerini yönetir.
Teknolojiler:
- Entity Framework Core: ORM (Object-Relational Mapping) aracı olarak kullanılır.
- Dapper: Daha hafif ve hızlı bir ORM aracı.
- Repositories: Veri erişim işlemlerini yönetmek için repository deseni kullanılır.
- Unit of Work: Veri tabanı işlemlerinin bütünlüğünü sağlamak için kullanılır.
Örnek:
Bir e-ticaret uygulamasında, ürün bilgilerini veritabanından almak, sipariş bilgilerini kaydetmek ve kullanıcı bilgilerini güncellemek gibi işlemler bu katmanda gerçekleştirilir.
Altyapı Katmanı (Infrastructure Layer)
Sorumluluklar:
- Diğer katmanların ortak olarak kullandığı hizmetleri sağlar.
- Çapraz kesen endişeleri (cross-cutting concerns) yönetir, örneğin logging, caching, authentication, authorization, vs.
- Uygulamanın altyapısal bağımlılıklarını kapsar.
Teknolojiler:
- Logging Frameworks: Serilog, NLog gibi logging kütüphaneleri.
- Caching: Redis, MemoryCache gibi caching çözümleri.
- Authentication/Authorization: ASP.NET Core Identity, OAuth2, OpenID Connect gibi kimlik doğrulama ve yetkilendirme mekanizmaları.
- Messaging: RabbitMQ, Azure Service Bus gibi mesajlaşma sistemleri.
Örnek:
Bir e-ticaret uygulamasında, kullanıcı giriş ve yetkilendirme işlemlerini yönetmek, uygulama olaylarını loglamak ve sık kullanılan verileri önbelleğe almak gibi işlemler bu katmanda gerçekleştirilir.
Katmanlı Mimarinin Avantajları
- Modülerlik: Uygulamanın farklı bileşenleri modüllere ayrıldığı için, her bir modül bağımsız olarak geliştirilebilir ve test edilebilir.
- Bakım ve Geliştirme Kolaylığı: Her katmanın belirli bir sorumluluğu olduğu için, değişiklikler sadece ilgili katmanda yapılır ve diğer katmanlar etkilenmez.
- Yeniden Kullanılabilirlik: Aynı iş mantığı veya veri erişim kodu farklı projelerde tekrar kullanılabilir.
- Test Edilebilirlik: Her katman bağımsız olarak test edilebilir, bu da birim testlerin ve entegrasyon testlerinin daha kolay yapılmasını sağlar.
Katmanlı mimari, büyük ve karmaşık kurumsal uygulamalar geliştirmek için etkili bir yaklaşımdır. Bu yapı sayesinde uygulamalar daha esnek, ölçeklenebilir ve bakımı kolay hale gelir.
Katmanlı Mimarinin Dezavantajları
Katmanlı mimari, projede ihtiyaç doğduğunda geliştirilmesi gereken bir yaklaşımdır. Küçük projelerde gereksiz olabilmektedir.
Büyük projelerde katmanlı mimari, gerektiğinden fazla hiyerarşik yapı veya gereksiz alt iş parçacıklarına bölünme şeklinde geliştirilirse karmaşaya, dolayısıyla dezavantaja dönüşebilmektedir.
Katmanlı mimari, yazılımcının bir bakışta anlayabileceği sadelikte ve basitlikte geliştirilmelidir, yoksa amacının dışında kullanılmış olur ve geliştirilmiş projeyi devralan bir yazılımcı için ek ve sadece projeye özel gereksiz bir eğitim süreci gerekebilir.