MVC Core'da BLL katmanının UI katmanından çağrılması

Instance Alarak İş Katmanı Kodlarını Kullanmak

Bu yöntemde, iş katmanında bulunan sınıfın örneğini (instance) direkt olarak controller katmanında oluşturuyorsunuz. Yani, controller sınıfı, iş katmanının sınıfını doğrudan çağırarak işlemleri gerçekleştiriyor. Bu yöntem oldukça basittir ve hızlı bir şekilde kullanılabilir. Ancak, dezavantajı, controller ve iş katmanları arasında sıkı bir bağlantı oluşturmasıdır. Bu durum, bağımlılıkların yönetilmesini ve test edilebilirliği zorlaştırabilir.

Ancak bu yöntemin dezavantajı, her zaman aynı arkadaşa gitmek zorunda kalmanızdır. Başka bir arkadaşınızın yardımına ihtiyacınız olduğunda, o arkadaşla doğrudan bağlantınız olmadığı için sorununuzu çözmek zorlaşır. Ayrıca, her zaman aynı arkadaşa bağımlı olmak, işlerin karmaşıklaşması durumunda yönetimi zorlaştırabilir.

// İş katmanında CustomerService sınıfı

namespace BusinessLayer

{

    public class CustomerService

    {

        public void AddCustomer(string name, string email)

        {

            // Burada müşteri ekleme işlemleri yapılır

        }

    }

}

 

// Controller katmanında kullanım

using BusinessLayer; // İş katmanını eklediğiniz isim alanını burada belirtin

 public class CustomerController

{

    public void CreateCustomer(string name, string email)

    {

        // İş katmanında bulunan CustomerService sınıfını örnekleyin

        var customerService = new CustomerService();

 

        // CustomerService sınıfındaki AddCustomer metodunu çağırın

        customerService.AddCustomer(name, email);

 

        // Diğer işlemleri burada devam ettirebilirsiniz

    }

}

Dependency Injection (Bağımlılık Enjeksiyonu) ile Çalışmak

Bu yöntemde, iş katmanı sınıfını controller katmanına doğrudan bağımlı olmadan, dışarıdan enjekte edersiniz. Yani, iş katmanı sınıfı, controller tarafından alınan bir bağımlılık olarak kullanılır. Bu yöntem, kodun daha esnek ve bakımı kolay hale gelmesini sağlar. Bağımlılık enjeksiyonu, iş katmanının nasıl oluşturulduğunu veya kimin tarafından oluşturulduğunu bilmeden sadece servisi (yani iş katmanını) kullanmanıza olanak tanır.

Dependency injection, arkadaşlarınızın sizi ziyarete gelmesi yerine, sizin ihtiyaç duyduğunuz yardımı almak için bir arkadaşınıza bir mesaj bırakmanıza benzetilebilir. Yani siz, hangi yardıma ihtiyacınız olduğunu belirtirsiniz ve arkadaşınız size yardım eder. Bu şekilde, bağımlı olduğunuz arkadaşınızı doğrudan zorunlu kalmadan değiştirebilir ve başka arkadaşlarınızdan da yardım alabilirsiniz.

namespace BusinessLayer

{

    public interface ICustomerService

    {

        void AddCustomer(string name, string email);

    }

 

    public class CustomerService : ICustomerService

    {

        public void AddCustomer(string name, string email)

        {

            // Burada müşteri ekleme işlemleri yapılır

        }

    }

}

 

using BusinessLayer;

 

public class CustomerController

{

    private readonly ICustomerService _customerService;

 

    // Bağımlılıkları enjekte edin

    public CustomerController(ICustomerService customerService)

    {

        _customerService = customerService;

    }

 

    public void CreateCustomer(string name, string email)

    {

        // ICustomerService üzerinden iş katmanındaki metotları kullanın

        _customerService.AddCustomer(name, email);

 

        // Diğer işlemleri burada devam ettirebilirsiniz

    }

}

Bu aşamada, bir dependency injection konteyneri kullanarak iş katmanını controller katmanına enjekte etmeniz gerekecektir. Örneğin, .NET Core'da yerleşik olarak gelen IServiceCollection'ı kullanarak bu işlemi gerçekleştirebilirsiniz:

// Startup.cs dosyasında ConfigureServices metodu

using BusinessLayer;

 

public void ConfigureServices(IServiceCollection services)

{

    // ICustomerService için CustomerService sınıfını kaydedin

    services.AddScoped();

 

    // Diğer servisleri burada ekleyebilirsiniz

}

Öğrenciye örnek olarak anlatmak gerekirse: Bu yöntem, bir öğretmenin okulda ders verdiği ve herhangi bir öğrenci ders almak istediğinde öğretmenin adını bir kağıda yazıp öğrencilere dağıtması gibidir. Öğrenci, ders almak için öğretmeni çağırabilir ve öğretmenin kim olduğu veya nerede olduğu önemli değildir

Hangi Yöntemi Tercih Etmeliyiz?

Dependency Injection ile çalışmak, genellikle daha iyi bir tercih olabilir. Bu yöntem, kodun daha modüler ve test edilebilir olmasını sağlar. Ayrıca, yazılımınızda değişiklik yapmak istediğinizde, bağımlılık enjeksiyonu sayesinde tek bir yerde (örneğin, Program.cs dosyasında) değişiklik yaparak tüm uygulamaya etki edebilirsiniz.

Yani, bağımlılık enjeksiyonunu kullanmak, kodunuzun daha iyi yönetilmesini ve bakımının daha kolay olmasını sağlar. Bu, büyüyen ve karmaşıklaşan projelerde özellikle önemli bir avantajdır. Ancak, küçük ve basit projelerde, instance alarak iş katmanı kodlarını kullanmak hızlı ve kolay bir çözüm sunabilir.

Sonuç olarak, proje boyutu, karmaşıklığı ve gelecekteki büyüme beklentileri göz önünde bulundurularak Dependency Injection yöntemini tercih etmek genellikle daha iyi bir yaklaşımdır. Bu sayede kodunuz daha düzenli, test edilebilir ve bakımı daha kolay olacaktır.

Telefon +90 505 747 42 84
Email info@devedijital.com
Adres
Tacettin Veli Mahallesi Halit Narin Caddesi Bahadır Plaza Kat:11 Daire:41 38230 Deve Dijital Melikgazi/Kayseri/Türkiye