Asp.Net Core Middleware Nedir ?

  1. cemmm
    7
    1128
    20.12.2019 18:22:00

    Middleware Nedir arkadaşlar, Asp.Net Core ile gelen bu yeni kavram ne oluyor tam olarak ?

    asp.net-core asp.net-core-mvc 3 ay önce 443 Görüntüleme

( 2 ) Cevap

  1. webmaster34
    4
    297
    23.12.2019 11:07:00

    Asp.Net Core da ki Middleware den bahsedecek olursak, uygulamamıza gelen http requestlerine karşı nasıl bir cevap verileceğini denetleyen ara katmandır. Örneğin uygulamada bir hata olduğu zaman, kullanıcıya sayfalarımız nasıl gözükmeli, yada nasıl gözükmesi gerektiğini nasıl ayarlayabiliriz konusunda bize yardımcı olacak teknolojidir.

    asp net core middleware nedir

    Bir diğer deyişle Middleware, requestleri ve responseları işlemek için uygulama kanalına (application pipeline) monte edilen yazılım bileşenleridir(software components). Her bir bileşen (component), isteğin pipeline içindeki bir sonraki bileşene iletilip iletilmeyeceğini denetler, seçer. Havalimanı kontrolleri gibi düşünebiliriz. Önce xray den geçeriz, sonra kimliğimiz ile biletimizi alır, bavulumuzu teslim ederiz, sonra ikinci kapıya geçeriz, kapıdaki görevliye bileti gösterince geçebiliriz,görevli göz ucuyla kontrol eder, sonra yine xray cihazı kontrolleri, son olarak uçağın kapısında bilet geçerlilik kontrolü sonra uçağa biniş.

    ASP.NET Core Middleware'in her bir parçası bir nesnedir (object). Her bir parçanın özel, odaklanmış ve sınırlı bir rolü/görevi vardır. Uygulamamızın uygun davranışlar sergilemesi için de bu parçaların bir çoğuna ihtiyacımız olacaktır.

    Örneğin Asp.Net Core projesinde default olarak eklenen ve kullanılan Middlewarelere göz atalım.

    > app.UseHttpsRedirection();

    Uygulamanıza gelen HTTP isteklerini otomatik olarak HTTPS e çevirir. Uygulamanıza sadece HTTPS üzerinden yani SSL sertifikası ile gelinmesini istediğinizde kullanabilirsiniz.

    > app.UseStaticFiles();

    Static Fileları enable eder, css, javascript vb gibi dosyaları yani, mesela bu Middleware'i kullanmazsanız, yorum satırı yaparsanız, sayfalarınızda css,javascript vb kodların çalışmadığını görebilirsiniz.

    • derbeder app.UseWelcomePage();, açılışta Hoşgeldiniz sayfasını görüntülemek için kullanılan Middleware

    • Yorum Ekleyin

  2. derbeder
    1
    189
    24.12.2019 11:19:00

    Middleware

    Evet Asp.Net Core ile adını duymaya başladık, belki diğer teknolojilerde bu kavram vardı yada yoktu bilemiyorum fakat, yakın zamanda ASP.NET Core, Middleware olarak adlandırdığı yeni bir konsepti tanıttı ve hayatımıza getirdi.

    Middleware aslında, Asp Net Core uygulamasında gelen her istek üzerine çalıştırılan bir component yada bir class dan başka bir şey değildir.

    Hatırlarsak klasik ASP.NET de request pipeline'ın parçaları arasında HttpHandlers, HttpModulesler vardı. Middleware her bir isteğin(requestin) yapılandırılması ve çalıştırılması noktasında HttpHandlers ve HttpModules'e benzemektedir.

    ASP.NET Core uygulamasında çok sayıda Middleware kullanabilirsiniz, bunların bir kısmı .net core içinde standart olarak gelirken, bazılarını Nuget üzerinden kurarak erişebilirsiniz, bazılarını da kendiniz yazabilirsiniz.

    Middleware'i Configure Etmek

    Middleware configure işlemleri için, Startup class kullanılır. Bu sınıf içinde Configure metodu vardır ve bu metot da IApplicationBuilder sınıfının bir instancendan yararlanılır.

    Örneğin aşağıdaki örnekte sadece bir tane Middleware configure edilmiştir ve gelen hertürlü requeste

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //middleware configure etmek
    
        app.Run(async (context) =>
        {              
            await context.Response.WriteAsync("Her gelen requeste bu cevabı dönerim!!");
        });
    
        // test için diğer Middleware ları kaldırdık ;)
    }
    

    Run() Method'unu anlayalım

    Run metodu IApplicationBuilder üzerinde yer alan extension metoddur ve parametre bir RequestDelegate'in imzasını bekler.

    Örneğin

    public class Startup
    {
        public Startup()
        {
        } 
    
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
             app.Run(MyMiddleware);
        }
    
        private Task MyMiddleware(HttpContext context) 
        {
            return context.Response.WriteAsync("Her gelen requeste bu cevabı dönerim! ");
        }
    }
    

    Ancak yukardaki yöntem asenkron değil, asenkron olması için kodlarımızı şöyle değiştirebiliriz ;

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
         app.Run(MyMiddleware);
    }
    
    private async Task MyMiddleware(HttpContext context) 
    {
        await context.Response.WriteAsync("Her gelen requeste bu cevabı dönerim! Ve Asenkronum ");
    }
    

    Bu kodu iyice sadeleştirmek ve tek satıra indirmek istersek ;

    app.Run(async context => await context.Response.WriteAsync("Her gelen requeste tek satırda cevap!") );
    

    Use() Method'unu anlayalım

    Birden çok Middleware yapılandırmak için, Use() metodu kullanılır. Sadece Run kullanılırsa bir sonraki configure edilen çalışmaz.

    app.Use(async (context, next) =>
    {
        await context.Response.WriteAsync("Selamlar, Ben 1. Middleware!");
    
        await next();
    });
    
    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Selamlar, Ben 2. Middleware!");
    });
    

Cevabınız