Asp .Net Core 3.1 Custom Middleware and Dependency Injection

Merhaba arkadaşlar, bugün sizlere .net core Dependency Injection ve Custom Middleware yapısından bahsederek basit birer örnek yapacağız.

Dependency Injectionu bağımlılıkları azaltarak daha modüler ve geliştirilebilir kodlar yazmak için kullanırız. Asp .Net Core Dependency Injection yapısını kendi içerisinde barındırır. (Dışarıdan kütüphanelerde kullanılabilir; Autofac, SimpleInjection gibi).

Kendi içerisinde ki Dependency Injection için temelde üç farklı instance üretme metodu vardır. Kısaca bunlardan bahsederek hem constructor injection, hemde manuel injection yöntemiyle örnek yapacağız.

Image for post
Image for post
Injections-stackify

AddSingleton: Uygulama lifecycle boyunca tek bir instance olarak çalışır.

AddScoped: Request içerisinde bir instance oluşur.

AddTransient: Her çağrıldığında yeni bir instance oluşturur.

Startup.cs ,ConfigureServices metodu içerisinde servislerimizi register edelim.

Servislerimizi register ettikten sonra farklı kullanım yöntemleri vardır. Ben manuel injection ve constructor injection yöntemini göstermek istiyorum.

Dependency injection için basit bir örnekle iki farklı yöntemi gösterdik. Şimdi custom bir Middleware yazarak servisleri burada register edelim ve bunu ConfigureServices altında kullanalım.

Ayrıca Configure metodunda çağırmak içinde bir Middleware yazarak “test” route ekleyelim.

ApiMiddlewareExtensions sınıfımız içerisinde servis injectionlarımızı bize döndüren AddServiceInjections metodumuzu yazdık.

Artık bu metodu ConfigureServices altında çağırarak kullanabiliriz.

Aynı şekilde ednpoint routelarına test yazıldığında ekrana “Successfully registered custom route” yazdıran basit bir yapı kuralım.

Commentlediğim yerlerde daha complex yapılar için basitçe bu yapıyı nasıl kullanabileceğinizi gösterdim.

Şimdi aynı şekilde Startup altında Configure sınıfında bu metodu çağırarak kullanabiliriz.

Şimdi aşağıdaki komut ile projemizi ayağa kaldırarak kontrol edelim.

dotnet run 
Image for post
Image for post
Injection Sample
Image for post
Image for post
Middleware Sample

Gördüğünüz gibi projemiz sorunsuz şekilde çalışıyor.

Size elimden geldiği kadar basit ve sade bir şekilde .Net Core dependency injection ve middleware yapısından bahsetmeye çalıştım, umarım faydalı olmuştur.

Aşağıda kaynak kodu ve farklı kaynakları paylaştım, inceleyebilirsiniz.

Kaynak Kod: https://github.com/EnesAys/NetCoreMiddlewareandDI

Kaynaklar

Software Developer at Sosyopix

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store