Middleware nedir?
Middleware, istek ve yanıtları işlemek için uygulama boru hatlarına bir araya getirilen yazılımdır. Her bileşen:
- İsteği boru hattındaki bir sonraki bileşene iledip iletmeyeceğinize karar verin.
- İş, boru hattındaki bir sonraki bileşen çağrılmadan önce ve sonra yapılabilir.
İstek delegeleri, her HTTP isteğini işleyen bir istek boru hattı oluşturmak için kullanılır.
İstek delegeleri Çalıştır, Harita ve Kullan uzantı yöntemleriyle yapılandırılır. Ayrı bir istek delegesi bir inline anonim yöntemde (inline middleware olarak adlandırılır) veya yeniden kullanılabilir bir sınıfta tanımlanabilir. Bu yeniden kullanılabilir sınıflar ve hatlı anonimleştirme yöntemleri ara yazılım veya ara yazılım bileşenleridir. İstek akışındaki her ara yazılım bileşeni, boru hattındaki bir sonraki bileşeni çağırmaktan ve uygunsa bağlantı kısa devresini çağırmaktan sorumludur.
HTTP modüllerini ara yazılıma taşımak, önceki sürümlerde (ASP.NET) ASP.NET Core ile istek boru hatları arasındaki farkı açıklar ve daha fazla ara yazılım örneği sunar.
IApplicationBuilder kullanarak bir middleware pipeline oluşturun
ASP.NET Core istek süreci, aşağıdaki şekilde gösterildiği gibi bir dizi istek delegesinden oluşur (yürütme süreci siyah ok işaretini takip eder):
Her delege, bir sonraki delegeden önce ve sonra eylemler gerçekleştirebilir. Delege ayrıca talebi bir sonraki delegeye iletmemeye karar verebilir; bu da istek boru hattında kısa devre olarak adlandırılır. Kısa devre genellikle gereksiz işleri önlediği için tercih edilir. Örneğin, statik dosya ara yazılımı, statik bir dosya talebi döndürüp boru hattının geri kalanını kısa devre yapabilir. İstisna yönetimi delegeleri, sonraki boru hatlarında istisnaları yakalamak için pipeline'ın erken aşamasında çağrılmalıdır.
En basit şey muhtemelen tüm talepleri yönetecek bir delege ASP.NET Core uygulaması kurmaktır. Bu senaryo, gerçek istek pipeline'ı içermez. Bunun yerine, her HTTP isteği için anonim bir yöntem çağrılır.
İlk uygulama. Çalıştır delege pipeline'ı sonlandırır.
Böyle bir kod var:
Tarayıcı üzerinden erişildiğinde, gerçekten ilk uygulamada olduğu anlaşılıyor. Çalıştırma işlemi pipeline'ı sonlandırır.
Uygulama ile birden fazla isteği devredebilirsiniz. Kullanım birbirine bağlıdır. Bir sonraki parametre, boru hattındaki bir sonraki delegeyi temsil eder. (Unutmayın, bir sonraki parametreyi çağırmadan pipeline'ı sonlandırabilirsiniz.) Genellikle aşağıdaki örnekte gösterildiği gibi, bir sonraki delegasyondan önce ve sonra işlemler yapabilirsiniz:
Aşağıdaki gibi sonuçlara erişmek için tarayıcı kullanmak
Talep delegesinin yürütme emrinin yukarıdaki akış şemasını takip ettiği görülebilir.
Not:
Yanıt müşteriye gönderildikten sonra, bir sonraki kişiyi aramayın. Invoke。 Yanıt başladıktan sonra, HttpResponse'taki değişiklikler bir istisna oluşturur. Örneğin, yanıt başlıkları, durum kodları vb. ayarlamak bir istisna oluşturur. Bir dahaki aramadan sonra yanıt gövdesini yazın.
anlaşmanın ihlaline yol açabilir. Örneğin, içerik-uzunluğunda tanımlanan içerik uzunluğundan daha fazla yazmak.
Duyarlı içerik biçimlendirmesi bozulmuş olabilir. Örneğin, bir CSS dosyasına bir HTML dipleri yazabilirsiniz.
HttpResponse.HasStarted, yanıt başlığının gönderilip gönderilmediğini ve/veya gövdenin yazıldığını göstermek için faydalı bir ipucudur.
Yerleşik ara yazılım
ASP.NET Core aşağıdaki ara yazılım bileşenleriyle birlikte gelir:
| Middleware | Açıklama | | Doğrulama | Kimlik doğrulama desteği mevcuttur | | CORS | Alanlar arası kaynak paylaşımını yapılandırma | | Yanıt Önbellekleme | Önbellek yanıt desteği mevcuttur | | Tepki Sıkıştırması | Yanıt sıkıştırmasını desteklemek | | Rota | İstek yönlendirmesini tanımlama ve kısıtlama | | Oturum | Kullanıcı oturum yönetimi sağlar | | Statik Dosyalar | Statik dosya ve dizin taraması desteği sağlar | | URL Yeniden Yazma Middleware | URL'leri yeniden yazmak ve yönlendirme desteği istemek için kullanılır |
|