ASP.NET Core Middleware Kullanarak Request/Response Pipeline Oluşturma

ASP.NET Core Middleware Kullanarak Request/Response Pipeline Oluşturma

ASPNET Core'da Middleware'ler, HTTP isteklerinin ve yanıtlarının yönetiminde kullanılan yazılımlardır Middleware'ler, bir zincir oluşturarak isteklerin işleme sırasını belirler ve isteklerin doğrulanması, güvenliği, değiştirilmesi gibi işlemleri gerçekleştirir Middleware zinciri, isteklerin nasıl işleneceğine dair kuralları takip eder ve istenmeyen bir Middleware varsa kaldırılabilir ya da istenen Middleware pipeline'a dahil edilebilir Middleware kullanarak, web uygulamalarının performansı iyileştirilir ve işlemlerin yürütülmesi daha hızlı ve düzenli hale getirilir Middleware pipeline'a ekleme işlemi, UseMiddleware metodu kullanılarak gerçekleştirilir ve pipeline'dan kaldırma işlemi ise RemoveMiddleware metodu kullanılarak yapılabilir

ASP.NET Core Middleware Kullanarak Request/Response Pipeline Oluşturma

ASP.NET Core, web uygulamaları oluşturmak için kullanılan güçlü bir çerçevedir. Bu çerçevenin bir parçası olan Middleware, HTTP istekleri ve yanıtlarının işlemlerinde kullanılır. Middleware, web uygulamalarında özel yazılımlar yaratarak, istek ve yanıtların işleme sırasını belirler.

Middleware'lar, HTTP isteklerinin işlemesinde bir zincir yaratarak çalışır. Bu zincirdeki her işlem ayrı bir middleware olabilir ve isteklere özel işlemler tanımlanabilir. Bu sayede, isteklerin ve yanıtların işlenmesi belirli bir sıraya göre gerçekleştirilir. Middleware zinciri, istek ve yanıtların nasıl işleneceğine dair belirli kuralları takip eder. Bu kurallara göre, isteklerin hangi middleware'ler tarafından işleneceği ya da yanıtların hangi middleware'ler tarafından oluşturulacağı belirlenir.


Middleware Nedir?

Middleware, ASP.NET Core içindeki işlemleri yöneten yazılımların çalışması için verilen ad olarak açıklanabilir. Bu yazılımlar, web uygulamasına gelen isteklerin işlenmesinde kullanılır ve HTTP isteklerinin işleme konularak HTTP yanıtının oluşturulmasında kullanılan bir zincirler yaratır.

Özetle, ASP.NET Core Middleware, HTTP isteklerinin işlemesine yarayan bir ara yazılımdır. Bu yazılım sayesinde işlemlerin basit bir şekilde takibi sağlanır ve uygulamanın performansı iyileştirilir.


Middleware Nasıl Çalışır?

ASP.NET Core'da Middleware, web uygulamalarının HTTP isteklerinin ve yanıtlarının yönetilmesinde kullanılan bir yazılımdır. Middleware'lar, HTTP istekleri zinciri boyunca çalışan birçok küçük işlemi içeren bir zincir oluşturur. Bu işlemler, istek ve yanıt nesnelerinin değiştirilmesi, doğrulanması, güvenliği sağlanması ve kayıtların tutulmasıyla ilgili olabilir.

Middleware'ların çalışması, gelen taleplerin işlemesi ve HTTP yanıtlarının oluşturulması sırasında gerçekleşir. Bir istek geldiğinde, middleware'lar zincirindeki her bir middleware, isteği işleme konusunda belirli bir görevi yerine getirir. Ardından, HTTP yanıtı oluşturulurken middleware'ların zinciri tekrar çalıştırılır ve her bir middleware, gelen isteğin yanıtını belirli bir şekilde değiştirir.

Bu sayede, middleware'lar web uygulamasının işlemesini yönetir ve işlemleri birbiri ardına yürütmek için bir zincir oluşturur.


Middleware Zinciri Nedir?

ASP.NET Core'da, web uygulamasının gelen isteklerin işlemedeki sırasıdır. Middleware'ler, bir zincir oluşturarak HTTP isteklerinin işlenmesi için bir sıra yaratır. Böylece, istekler Middleware'lar arasında sırayla işlenir ve elde edilen sonuçlar da aynı şekilde sıraya konulur. Middleware zinciri, gelen HTTP isteklerine ne yapılacağına karar verir ve hedeflenen sonucu elde etmek için istekleri yönetir.

Middleware zincirinde birçok farklı Middleware bulunabilir. Bunlardan bazıları, yönlendirme gibi işlevleri yerine getirirken, bazıları ise istekleri tamamlamak için gerekli olan işlemleri gerçekleştirir. Middleware zinciri, ASP.NET Core'da her zaman belirli bir sıraya göre çalışır ve her bir Middleware, işlemlerin önceden belirlenmiş bir sırayla yürütülmesini sağlar.

Middleware zincirinde istenmeyen bir Middleware varsa kaldırılabilir ya da istenilen bir Middleware de pipeline'a dahil edilebilir. Bu sayede, isteklerin yönetimi tamamen kullanıcının elindedir. Middleware zinciri, ASP.NET Core'da aktif olan istekleri izlemek ve yönetmek için olmazsa olmaz bir ara yazılımdır. Bu Zincirin kullanımı, işlemlerin daha hızlı ve düzenli yürütülmesini sağlar.


Middleware Zincirine Çalışma Ekleme

ASP.NET Core'da Middleware'ları pipeline'a eklemek oldukça kolaydır. Sadece Configure metodunun içinde, UseMiddleware metodu çağırılarak ilgili middleware pipeline'a eklenir.

YA oyunları için middleware oluşturup pipeline'a eklemek gerekiyor ise, öncelikle middleware'in Invoke metodunu yazmanız gerekiyor. Ardından, pipeline'ın neresine ekleneceği belirlenir ve son olarak UseMiddleware metodu kullanılarak middleware pipeline'a eklenir.

Örneğin, YA oyunlarına yeni bir loglama middleware'i eklemek istiyoruz. İlk olarak, middleware'in Invoke metodunu yazarak loglama işleminin gerçekleştirilmesini sağlarız. Daha sonra Configure metodu içerisinde, middleware'in pipeline'ın neresine ekleneceğini belirleyebiliriz. Son olarak UseMiddleware metodu ile middleware pipeline'a eklenir.

Kod Örneği
public class LogMiddleware{    private readonly RequestDelegate _next;    public LogMiddleware(RequestDelegate next)    {        _next = next;    }    public async Task Invoke(HttpContext context)    {        Console.WriteLine($"LOG: {context.Request.Path} requested");        await _next.Invoke(context);    }}public void Configure(IApplicationBuilder app, IWebHostEnvironment env){    app.UseMiddleware<LogMiddleware>();    app.UseRouting();        // other middlewares}

Yukarıdaki örnekte, LogMiddleware adında bir middleware sınıfı yaratılmıştır. Bu sınıf Invoke metodunu içerir ve loglama işlemini gerçekleştirir. Configure metodunda ise, middleware pipeline'a eklenir ve sonrasında routing middleware'i pipeline'a eklenir.

Böylece YA oyunlarına loglama işlevi eklenmiş olur ve pipeline üzerinde loglama middleware'i de yer almış olur.


Middleware Zincirinden Çalışma Kaldırma

Middleware zinciri, herhangi bir ASP.NET Core web uygulaması tarafından kullanılabilen bir yapıdır. Bu yapı, gelen isteklerin işlenmesinde kullanılan farklı middleware'ların bir araya gelerek oluşturduğu bir zincirdir. Ancak, bazı durumlarda middleware zincirindeki gereksiz bir çalışmanın çıkarılması gerekebilir. Bu durumda, ASP.NET Core Middleware kullanılarak bazı çalışmaların filtrelenebilmesi mümkündür.

Middleware zincirinden çalışma kaldırma işlemi oldukça kolaydır. İlk olarak, pipeline'a hangi çalışmanın eklendiğini ve hangi sırada olduğunu kontrol etmek önemlidir. Bu sayede, kaldırılacak çalışmanın adını belirlemek daha kolay olacaktır. Daha sonra, middleware kaldırma işlemi gerçekleştirilebilir.

  • Middleware Kaldırma

ASP.NET Core Middleware kullanarak, middleware zincirinden bir çalışma kaldırmak oldukça basittir. Yapılması gereken ilk adım, Middleware sınıfını yaratmaktır. Bu sınıf, pipeline'a eklenecek middleware'ların temel yapı taşını oluşturur. İkinci adım ise, pipeline'a eklenebilecek bir sonraki middleware'ın çalışmalarını barındıran bir fonksiyon yaratmaktır. Bu fonksiyonda, pipeline'a kaldırmak istediğiniz çalışmayı direkt olarak çıkarabilirsiniz. Son olarak, Configure fonksiyonu içerisinde middleware'ın pipeline'a yüklenmesi sağlanır ve kaldırılacak olan çalışma filtrelenebilir.

AdımAçıklama
1Middleware sınıfı yaratma
2Kaldırılacak olan çalışmayı filtrelenecek olan fonksiyonun yaratılması
3Configure fonksiyonu içerisinde kaldırılacak çalışmanın pipeline'dan çıkarılması

Bu şekilde, middleware zincirinden istenilen çalışma rahatlıkla çıkarılabilecektir. Çalışmaların pipeline'da gereksiz bir şekilde işletilmesinin önüne geçmek, uygulamanın daha hızlı çalışmasını sağlayacak ve daha verimli olmasına yardımcı olacaktır.


Middleware Yaratma ve Kullanma

ASP.NET Core'da middleware yaratmak ve kullanmak oldukça kolaydır. İlk olarak, bir middleware oluşturmak için bir sınıf yaratmanız gerekir. Bu sınıfın Configure veya ConfigureAsync metodunu uygulaması gereklidir.

Sonra, ConfigureServices veya Configure metodlarındaki nesne örneklerinin Middleware'leri kullanabileceğinden emin olmak için middleware'leri kullanın. Middleware zincirine bir middleware eklemek için, Configure metoduna app.UseMiddleware() kodunu ekleyebilirsiniz.

Middleware oluştururken kullanabileceğiniz parametreler şunlardır:

  • HttpContext: işlem gereksinimleri verilerine erişim sağlar.
  • Func: diğer middleware zincirindeki işlemlere devam etmek için kullanılır.

Middleware zincirine eklendikten sonra, middleware'e özgü seçenekleri ayarlamak için Configure metodunu kullanabilirsiniz. Bu iletişim metodları, middleware'lerin zincirindeki pozisyonlarını belirlemede yardımcı olur.

Bunlar, ASP.NET Core'da bir middleware yaratmak ve kullanmak için temel adımlardır. Bu adımları takip ederek, istediğiniz herhangi bir işlevi yerine getiren middleware oluşturabilirsiniz.


Mevcut Middleware'lerin Kullanımı

ASP.NET Core platformu, web uygulamalarının geliştirilmesinde kullanılan ve HTTP istekleri için pipeline oluşturulmasını sağlayan birçok hazır middleware sunar. Bu middleware'ler kullanımı kolay ve özelleştirilebilir bir yapıda olması nedeniyle çok tercih edilmektedir. Bunlardan biri static files middleware'dir. Bu middleware, müşteriye sadece statik dosyalar sunar.

Diğer bir middleware olan routing middleware, HTTP isteklerini yönetmek için kullanılır. Routing işlemleri sayesinde gelen isteklerin hangi endpoint'e yönleneceği belirlenir. Bu sayede uygulama, istekleri doğru şekilde işleyebilir. Bu middleware'lerin yanı sıra, authorization middleware, exception handling middleware ve loggin middleware gibi pek çok farklı middleware de kullanılabilir.

Bu default middleware'ler, web uygulamalarında kullanılan işlemlerin daha hızlı ve güvenli bir şekilde yönetilmesini sağlar. İhtiyaca göre özelleştirilebilir ve yapılandırılabilir olduğu için, dilediğiniz zaman bu middleware'leri kullanabilir ve uygulamanızın performansını arttırabilirsiniz.


Static Files Kullanımı

Static Files Middleware Kullanımı

Static Files Middleware, müşterilere sadece statik dosyaların servis edilmesinde kullanılan bir ara yazılımdır. Bu middleware, CSS, JavaScript, HTML, resimler ve diğer statik dosyaları tarayıcılara doğru bir şekilde sunabilir. Bu ara yazılım, uygulamada statik dosyaların kullanıcılar tarafından kullanılabilmesine olanak tanır.

Aynı zamanda, Static Files Middleware, uygulamanın depolandığı klasörleri de belirtebilir. Bunun yanı sıra, istemcinin dosya indirmesi veya dosya yükleme durumlarında kullanılabilecek diğer parametrelerle birlikte kullanılabilir. Ancak, Static Files Middleware'in kullanımı, güvenlik açısından dikkatli bir şekilde ele alınmalıdır. Çünkü, herhangi bir kişi uygulamanın dosyalarına erişim sağlayabilir ve bu, potansiyel bir güvenlik açığına neden olabilir.

Bu middleware, uygulamanın başka bir middleware ile birleştirilerek, örneğin Routing Middleware ile birlikte kullanılabilir. Bu şekilde, kullanıcılara sanal bir dizin oluşturulabilir. Bu sayede, uygulamanın belirli bir bölümüne erişim sağlanması kolaylaşır.


Routing Kullanımı

ASP.NET Core'da Routing Middleware, gelen HTTP isteklerini yönetmek için kullanılır. Gelen bir HTTP isteği varsa, o isteğin hangi işleve yönlendirileceğini belirlemek için kullanılır. Bu sayede, belirlenen işleve yönlendikten sonra istek orada işlenir ve sonucu geri döndürür.

Routing middleware, URL'lerin yönetilmesinde de kullanılır. Örneğin, bir müşteri "/home" sayfasını talep ederse, Routing Middleware önce "/home" URL'ini yönlendirecektir. Bu yönlendirme işlemi, MVC ve Web API gibi diğer middleware'lerin de çalışması için öncelikli bir adımdır.

Routing middleware'in kullanımı için, Startup.cs dosyasında ConfigureServices() methodunda aşağıdaki kod eklenmelidir:

services.AddControllers();services.AddRouting();

Yukarıdaki kod, HTTP isteklerinin yönetiminde kullanılacak Routing Middleware'ı ekler. Ek olarak, AddControllers (), MVC Middleware'ını ekler.

Routing middleware'in tanımlanması için aşağıdaki kod örneği kullanılabilir:

app.UseRouting();app.UseEndpoints(endpoints =>{    endpoints.MapControllers();});

Yukarıdaki kodda, app.UseRouting() ile Routing Middleware'ı kullanarak, uygulamanın routing özelliğinin etkinleştirilmesi sağlanır. endpoints.MapControllers() ise, gelen istekleri uygun Controller'a yönlendirir. Bu sayede, gelen HTTP istekleri, doğru Controller methoduna yönlendirilir ve sonuç olarak geri döndürülür.

Routing middleware, HTTP isteklerinin yönetiminde önemli bir yer tutar ve ASP.NET Core uygulamalarında sıklıkla kullanılır.


Summary

ASP.NET Core Middleware, web uygulamalarında HTTP isteklerinin işleme sürecine yardımcı olan bir ara yazılımdır. Bu sistem yardımıyla isteklerin işlemesi zincirli bir yapıda gerçekleştirilir ve bu sayede isteklerin işleme sürecini adım adım takip etmek mümkündür. Middleware'ler, HTTP istekleri işlenirken zincir halinde arka arkaya işlem görür ve nihayetinde HTTP yanıtı oluşturulur.

ASP.NET Core'ta, önceden belirlenmiş birçok Middleware bulunmaktadır. Bu Middleware'lerin kullanımı ile basit bir şekilde statik dosyaların servisi, HTTP isteği yönetimi ve daha birçok işlem gerçekleştirilebilir. Ayrıca kullanıcının kendi Middleware'lerini oluşturarak uygulama üzerinde daha fazla kontrol sağlaması da mümkündür. Sonuç olarak, ASP.NET Core Middleware, web uygulamalarının HTTP isteklerinin yönetimini kolaylaştıran bir ara yazılımdır.