Autofac ASP.Net Core'da nasıl kullanılır

Bağımlılık enjeksiyonu, gevşek bağlamayı kolaylaştırır ve test edilebilirliği ve bakımı destekler. ASP.Net Core, minimalist bir bağımlılık enjeksiyon konteyneri ile bağımlılık enjeksiyonu (bir tür kontrol tersine çevrilmesi) için yerleşik destek sağlar. Bununla birlikte, yerleşik konteyner, tam teşekküllü bir bağımlılık enjeksiyonu veya kontrol kabının ters çevrilmesi özelliklerinin çoğundan yoksundur.

Bunun üstesinden gelmek için, ASP.Net Core'da üçüncü taraf kapsayıcıları kullanabilirsiniz. Başka bir deyişle, yerleşik kabı üçüncü taraf bir kapsayıcıyla kolayca değiştirebilirsiniz. Autofac, bağımlılıkları çözmek için kullanılabilen bir kontrol konteynerinin ters çevrilmesidir. Bu makale, ASP.Net Core'da Autofac ile nasıl çalışabileceğimize dair bir tartışma sağlar.

Visual Studio'da bir ASP.Net Core projesi oluşturun

Öncelikle Visual Studio'da bir ASP.Net Core projesi oluşturalım. Sisteminizde Visual Studio 2017 veya Visual Studio 2019'un kurulu olduğunu varsayarsak, Visual Studio'da yeni bir ASP.Net Core projesi oluşturmak için aşağıda özetlenen adımları izleyin.

  1. Visual Studio IDE'yi başlatın.
  2. "Yeni proje oluştur" u tıklayın.
  3. "Create new project" penceresinde, görüntülenen şablon listesinden "ASP.Net Core Web Application" öğesini seçin.
  4. Sonrakine tıkla.
  5. "Yeni projenizi yapılandırın" penceresinde, yeni projenin adını ve yerini belirtin.
  6. Oluştur'u tıklayın.
  7. "Create New ASP.Net Core Web Application" penceresinde, çalışma zamanı olarak .Net Core'u ve üstteki açılır listeden ASP.Net Core 2.2'yi (veya üstü) seçin.
  8. Proje şablonu olarak "Web Uygulaması" seçin. 
  9. Burada bu özellikleri kullanmayacağımız için "Docker Desteğini Etkinleştir" ve "HTTPS için Yapılandır" onay kutularının işaretli olmadığından emin olun.
  10. Kimlik doğrulamasını da kullanmayacağımız için Kimlik Doğrulamanın "Kimlik Doğrulama Yok" olarak ayarlandığından emin olun.
  11. Oluştur'u tıklayın.

Bu, Visual Studio'da yeni bir ASP.Net Core projesi oluşturacaktır. Autofac ile çalışmak için bu projeyi bu makalenin sonraki bölümlerinde kullanacağız.

Autofac'i ASP.Net Core projenize yükleyin

Autofac'i kurmak kolaydır - NuGet'ten yükleyebilirsiniz. Bu yazının yazıldığı tarihte, Autofac'in mevcut sürümü 4.9.2'dir. Autofac ile çalışmak için Autofac.Extensions.DependencyInjection paketini de yüklemelisiniz. Bu, Autofac ile çalışmak için gerekli bağımlılıkların kurulu olmasını sağlayacaktır.

Yukarıda oluşturduğunuz ASP.Net Core Web Uygulaması projesini seçin, ardından NuGet Paket Yöneticisi aracılığıyla Autofac.Extensions.DependencyInjection öğesine sağ tıklayıp yükleyin. Kurulum sırasında istenebilecek tüm lisans sözleşmelerini kabul edin. Alternatif olarak, NuGet Paket Yöneticisi Konsolu'na aşağıdaki komutu girerek bu paketi yükleyebilirsiniz:

Install-Package Autofac.Extensions.DependencyInjection

ASP.Net Core uygulamanızda bir sınıf oluşturun

Bağımlılık enjeksiyonunu göstermek için çalışmamız gereken bazı nesnelere ihtiyacımız olacak. Aşağıdaki GetMessage yönteminin bildirimini içeren IAuthorRepository arabirimini göz önünde bulundurun.

 genel arabirim IAuthorRepository

    {

        string GetMessage ();

    }

AuthorRepository sınıfı, aşağıda gösterildiği gibi IAuthorRepository arayüzünü uygular.

 public class AuthorRepository: IAuthorRepository

    {

        genel dize GetMessage ()

        {

            "Merhaba Dünya" döndür;

        }

    }

Bunun bir havuzun minimalist bir uygulaması olduğuna dikkat edin - yani, tipik bir deponun içerdiği CRUD yöntemlerini içermiyor. CRUD yöntemlerini uygun şekilde uygulamayı size bırakacağım.

Autofac'i ASP.Net Core'da Yapılandırma

Autofac'i yapılandırmak için, Startup sınıfının ConfigureServices yönteminde yapılandırma kodunu belirtmeniz gerekir. ConfigureServices yönteminin çalışma zamanında kapsayıcıya hizmet eklemek için kullanıldığını unutmayın.

İlk adım, gerekli hizmetleri Autofac konteynerine kaydetmek için bir konteyner oluşturucu oluşturmaktır. İlk adım, çerçeve hizmetlerini aşağıda gösterildiği gibi Populate yöntemini kullanarak doldurmaktır.

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populate (hizmetler);

Bir sonraki adım, özel hizmetleri Autofac ile kaydetmektir. Bunu yapmak için, aşağıda gösterildiği gibi konteyner oluşturucu örneğinde RegisterType yöntemini kullanın.

containerBuilder.RegisterType (). As ();

Konteyneri oluşturmak için aşağıdaki kodu yazın.

var container = containerBuilder.Build ();

dönüş konteyneri.Resolve ();

Referansınız için ConfigureServices yönteminin tam kaynak kodu:

public IServiceProvider ConfigureServices (IServiceCollection hizmetleri)

   {

       services.AddMvc ();

       var containerBuilder = new ContainerBuilder ();

       containerBuilder.Populate (hizmetler);

       containerBuilder.RegisterType ().

       Gibi();

       var container = containerBuilder.Build ();

       dönüş konteyneri.Resolve ();

   }

ASP.Net Core'daki denetleyicilerinizde Autofac kullanın

Artık projenizde Autofac kurulup yapılandırıldığına göre, onu denetleyicilerinizde kullanmaya başlayabilirsiniz. Aşağıdaki kod parçacığı, ValuesController'da bağımlılıkları nasıl çözebileceğinizi gösterir.

  genel sınıf ValuesController: ControllerBase

  {

        private IAuthorRepository _authorRepository; 

        genel ValuesController (IAuthorRepository authorRepository) 

        {

            _authorRepository = authorRepository;

        } // api / değerleri AL

        [HttpGet]

        genel ActionResult Get ()

        {

            return _authorRepository.GetMessage ();

        }

     // Diğer eylem yöntemleri

  }

Bağımlılık enjeksiyon ilkesi, kontrol ilkesinin tersine çevrilmesinin bir gerçekleştirilmesidir. Bu bağımlılıkları dışarıdan enjekte etmenize izin vererek bağımlılıkları uygulamadan kaldırmak için kullanılan bir tekniktir. Autofac gibi kontrol konteynerlerinin ters çevrilmesi, kontrol akışını tersine çevirmek için bağımlılık enjeksiyonundan yararlanır ve nesnelerin somutlaştırılması ve yaşam döngüsü yönetiminin otomatikleştirilmesine yardımcı olur.

Bağımlılık enjeksiyonu üç biçim alır: yapıcı enjeksiyonu, arayüz enjeksiyonu ve özellik enjeksiyonu. Bu örnekte, ValuesController sınıfındaki çalışma zamanında bir bağımlılık - yani AuthorRepository türünün bir örneğini - enjekte etmek için yapıcı enjeksiyonu kullandık.

Autofac'in ASP.Net Core'daki varsayılan bağımlılık enjeksiyon kabını değiştirmek için nasıl kullanılabileceğini gördük, ancak yeteneklerinin yalnızca yüzeyini çizdik. Autofac'i gelecekteki yayınlarda daha derinlemesine inceleyeceğim.