C# (C Sharp)

Yazılım Katmanı Nedir ve C#’ta Nasıl Kullanılır?

5 Dakika Okuma Süresi.

Yazılım katmanı, bir yazılım uygulamasının farklı işlevlerinin ve sorumluluklarının ayrı bileşenlere veya modüllere bölünmesi anlamına gelir. Bu, bir uygulamanın yapısal olarak bölünmesini sağlar ve genellikle daha esnek, sürdürülebilir ve yönetilebilir bir kod tabanı oluşturur. Farklı katmanlar, uygulamanın farklı bölümlerinin birbirinden bağımsız olarak geliştirilmesine ve test edilmesine olanak tanır.

En yaygın katmanlı mimari, üç katmanlı mimari (Three-Tier Architecture) olarak bilinir. Bu mimari genellikle şu üç ana katmandan oluşur:

  1. Sunum Katmanı (Presentation Layer): Kullanıcı arayüzü ve etkileşimler bu katmanda gerçekleşir.
  2. İş Mantığı Katmanı (Business Logic Layer): Uygulamanın iş kurallarının uygulandığı katmandır.
  3. Veri Erişim Katmanı (Data Access Layer): Veritabanı veya dış veri kaynaklarıyla etkileşim bu katmanda yapılır.

Katmanlı Mimarinin Avantajları

Öncelikle, katmanlı mimarinin sağladığı avantajlara değinmek istiyorum. Bir projede katmanlı yapı kullanmanın neden bu kadar popüler olduğunu anlamak, yazılım geliştirme sürecinizde daha bilinçli tercihler yapmanızı sağlayacaktır:

  • Sürdürülebilirlik: Katmanlar arasında belirgin bir ayrım olduğu için, bir katmanı güncellerken diğer katmanları etkilemeden işlem yapabilirsiniz. Bu da kodun bakımı ve güncellenmesi sürecinde büyük bir kolaylık sağlar.
  • Test Edilebilirlik: Katmanlı yapı sayesinde her katmanı ayrı ayrı test edebilirsiniz. Örneğin, veri erişim katmanını izole bir şekilde test edebilir ve veritabanına bağlanmadan mantığınızı doğrulayabilirsiniz.
  • Yeniden Kullanılabilirlik: Katmanlı yapı, kodun tekrar kullanılabilir olmasını sağlar. Bir iş mantığı katmanını farklı projelerde kullanmanız mümkün olabilir.

C# ile Yazılım Katmanlarını Kullanmak

C# dilinde katmanlı mimarinin nasıl kullanılacağını anlamak için basit bir örnekle ilerleyelim. Diyelim ki bir müşteri yönetim sistemi (CRM) geliştiriyoruz ve bu sistemde kullanıcı bilgilerini veritabanından çekmek, iş mantığını uygulamak ve son olarak kullanıcıya sunmak istiyoruz.

1. Sunum Katmanı (Presentation Layer)

Bu katman, kullanıcı arayüzünü içerir. C#’ta genellikle bir Windows Forms ya da ASP.NET MVC uygulaması ile bu katmanı temsil edebilirsiniz. Örneğin, bir form üzerinden kullanıcıdan bilgi alır ve iş mantığı katmanına iletebilirsiniz.

public class CustomerController
{
    private CustomerService _customerService;

    public CustomerController()
    {
        _customerService = new CustomerService();
    }

    public void DisplayCustomer(int customerId)
    {
        var customer = _customerService.GetCustomerById(customerId);
        Console.WriteLine($"Customer Name: {customer.Name}");
    }
}

Burada CustomerController, kullanıcının etkileşimde bulunduğu sınıfı temsil eder. Kullanıcı bir müşteri ID’si girdiğinde, CustomerService’i çağırarak müşteri bilgilerini alır ve ekranda görüntüler.

2. İş Mantığı Katmanı (Business Logic Layer)

İş mantığı katmanı, uygulamanın ana işlevselliğinin olduğu katmandır. Müşteri bilgilerini alıp üzerinde işlem yapacağımız yer burasıdır.

public class CustomerService
{
    private CustomerRepository _customerRepository;

    public CustomerService()
    {
        _customerRepository = new CustomerRepository();
    }

    public Customer GetCustomerById(int id)
    {
        var customer = _customerRepository.GetCustomerById(id);

        // İş mantığı: Örneğin, müşteri 18 yaşından küçükse özel bir mesaj dönebiliriz.
        if (customer.Age < 18)
        {
            throw new Exception("Customer is under 18 years old.");
        }

        return customer;
    }
}

Burada, CustomerService sınıfı iş mantığını uyguluyor. Veritabanından müşteri bilgisini alıyor ve müşteri bilgileri üzerinde iş kurallarını uyguluyor.

3. Veri Erişim Katmanı (Data Access Layer)

Son katman, veritabanı veya dış veri kaynaklarına erişimin sağlandığı yerdir. Bu katmanda Entity Framework, ADO.NET gibi veri erişim teknolojilerini kullanabilirsiniz.

public class CustomerRepository
{
public Customer GetCustomerById(int id)
{
// Veritabanı işlemleri burada yapılır.
// Bu örnekte sadece sahte veri dönüyoruz.
return new Customer { Id = id, Name = "John Doe", Age = 25 };
}
}

Veri erişim katmanında, gerçek veritabanı sorgularını yürütebilir ya da sahte veriyle test yapabilirsiniz. Bu örnekte, sadece basit bir müşteri nesnesi döndüren bir fonksiyon yazdık.

C#’ta Katmanlı Mimariyi Kullanmanın Önemi

Bu katmanlı yapı, uygulamanızın gelişimini hızlandırır ve kodunuzu daha düzenli hale getirir. Özellikle büyük projelerde katmanlı mimari kullanmak, kod karmaşıklığını azaltır ve projenin bakımını kolaylaştırır. Ayrıca, test süreçlerini daha etkin hale getirmek için katmanlar arasındaki bağımlılıkları izole edebilirsiniz.

Bir başka önemli nokta ise, her katmanın kendi sorumluluğunu taşımasıdır. Örneğin, veri erişim katmanı sadece veritabanı işlemlerini yürütmeli, iş mantığı katmanı sadece iş kurallarını uygulamalı ve sunum katmanı yalnızca kullanıcı etkileşimlerini yönetmelidir. Bu ayrımı doğru yapmak, projenizin sağlıklı bir şekilde büyümesine katkı sağlar.