Aracılığıyla paylaş


Modüller, işleyiciler ve ara yazılım

İpucu

Bu içerik, Blazor .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için ASP NET Web Forms Geliştiricileri için e-Kitap'tan bir alıntıdır.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

bir ASP.NET Core uygulaması, bir dizi ara yazılım üzerine kurulmuştur. Ara yazılım, istekleri ve yanıtları işlemek için bir işlem hattı halinde düzenlenmiş işleyicilerdir. Web Forms uygulamasında HTTP işleyicileri ve modülleri benzer sorunları çözer. ASP.NET Core'da modüller, işleyiciler, Global.asax.cs ve uygulama yaşam döngüsü ara yazılımla değiştirilir. Bu bölümde, bir Blazor uygulama bağlamında ara yazılım hakkında bilgi edineceksiniz.

Genel bakış

ASP.NET Core istek işlem hattı birbiri ardına çağrılan bir dizi istek temsilcisinden oluşur. Aşağıdaki diyagramda bu kavram gösterilir. Yürütme iş parçacığı siyah okları izler.

pipeline

Yukarıdaki diyagramda yaşam döngüsü olayları kavramı yok. Bu kavram, ASP.NET Web Forms isteklerinin nasıl işleneceğinin temelini oluşturur. Bu sistem, hangi işlemin gerçekleştiğini anlamanızı kolaylaştırır ve ara yazılımların herhangi bir noktada eklenmesini sağlar. Ara yazılım, istek işlem hattına eklendiği sırayla yürütülür. Bunlar genellikle Startup.cs yapılandırma dosyaları yerine koda da eklenir.

Katana

Katana'yı bilen okuyucular ASP.NET Core'da kendilerini rahat hissedecekler. Aslında Katana, ASP.NET Core'un türetildiği bir çerçevedir. ASP.NET 4.x için benzer ara yazılım ve işlem hattı desenleri kullanıma sunulmuştur. Katana için tasarlanan ara yazılım, ASP.NET Core işlem hattıyla çalışacak şekilde uyarlanabilir.

Ortak ara yazılım

ASP.NET 4.x birçok modül içerir. Benzer şekilde, ASP.NET Core da birçok ara yazılım bileşenine sahiptir. IIS modülleri bazı durumlarda ASP.NET Core ile kullanılabilir. Diğer durumlarda yerel ASP.NET Core ara yazılımı kullanılabilir.

Aşağıdaki tabloda, ASP.NET Core'daki yeni ara yazılım ve bileşenler listelenmiştir.

Modül ASP.NET 4.x modülü ASP.NET Core seçeneği
HTTP hataları CustomErrorModule Durum Kodu Sayfaları Ara Yazılımı
Varsayılan belge DefaultDocumentModule Varsayılan Dosyalar Ara Yazılımı
Dizin tarama DirectoryListingModule Dizine Gözatma Ara Yazılımı
Dinamik sıkıştırma DynamicCompressionModule Yanıt Sıkıştırma Ara Yazılımı
Başarısız istek izleme FailedRequestsTracingModule ASP.NET Çekirdek Günlüğü
Dosya önbelleğe alma FileCacheModule Yanıtları Önbelleğe Alma Ara Yazılımı
HTTP önbelleğe alma HttpCacheModule Yanıtları Önbelleğe Alma Ara Yazılımı
HTTP günlüğü HttpLoggingModule ASP.NET Çekirdek Günlüğü
HTTP yeniden yönlendirme HttpRedirectionModule URL Yeniden Yazma Ara Yazılımı
ISAPI filtreleri IsapiFilterModule Ara Yazılım
ISAPI IsapiModule Ara Yazılım
İstek filtreleme RequestFilteringModule URL Yeniden Yazma Ara Yazılım IRule
URL yeniden yazma† RewriteModule URL Yeniden Yazma Ara Yazılımı
Statik sıkıştırma StaticCompressionModule Yanıt Sıkıştırma Ara Yazılımı
Statik içerik StaticFileModule Statik Dosya Ara Yazılımı
URL yetkilendirmesi UrlAuthorizationModule ASP.NET Çekirdek Kimliği

Bu liste kapsamlı değildir, ancak iki çerçeve arasında hangi eşlemenin var olduğu hakkında bir fikir vermelidir. Daha ayrıntılı bir liste için bkz . ASP.NET Core ile IIS modülleri.

Özel ara yazılım

Yerleşik ara yazılım, bir uygulama için gereken tüm senaryoları işlemeyebilir. Böyle durumlarda kendi ara yazılımınızı oluşturmak mantıklıdır. Ara yazılımı tanımlamanın birden çok yolu vardır ve en basiti basit bir temsilcidir. Sorgu dizesinden bir kültür isteği kabul eden aşağıdaki ara yazılımı göz önünde bulundurun:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            var cultureQuery = context.Request.Query["culture"];

            if (!string.IsNullOrWhiteSpace(cultureQuery))
            {
                var culture = new CultureInfo(cultureQuery);

                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
            }

            // Call the next delegate/middleware in the pipeline
            await next();
        });

        app.Run(async (context) =>
            await context.Response.WriteAsync(
                $"Hello {CultureInfo.CurrentCulture.DisplayName}"));
    }
}

Ara yazılım, arabirimi uygulanarak veya ara yazılım kuralına IMiddleware uyularak sınıf olarak da tanımlanabilir. Daha fazla bilgi için bkz . Özel ASP.NET Core ara yazılımı yazma.