Asp.net çekirdek orta yazılımını okuduktan sonra, filtreleri ne zaman kullanmalıyım ve aynı amaca ulaşıyor gibi göründükleri için ara yazılımları ne zaman kullanmalıyım? Kurulum yerine ne zaman ara yazılım kullanılmalıdır?
Asp.net çekirdek orta yazılımını okuduktan sonra, filtreleri ne zaman kullanmalıyım ve aynı amaca ulaşıyor gibi göründükleri için ara yazılımları ne zaman kullanmalıyım? Kurulum yerine ne zaman ara yazılım kullanılmalıdır?
Yanıtlar:
Kanal 9'da bununla ilgili bir video var: ASP.NET Monsters # 91: Middleware vs. Filters . Videoyu özetlemek için:
Talebin yerine getirilmesi başlar ve bir ara yazılımımız ve başka bir ara yazılımımız var, bunu "oyuncak bebeklerin içindeki Rus bebekleri" gibi düşünün ve sonunda yönlendirme ara yazılımı devreye girer ve ardından talep MVC hattına girer.
Dolayısıyla, MVC bağlamına ihtiyaç duymuyorsanız (diyelim ki akış ve yürütme konusunda endişeleriniz var, başlıklara bazı ön yönlendirme mekanizmalarına yanıt vermek gibi), o zaman ara yazılımları kullanın .
Ancak, MVC bağlamına ihtiyaç duyuyorsanız ve eylemlere karşı çalışmak istiyorsanız, filtreleri kullanın .
Middleware, ASP.NET Core seviyesinde çalışır ve uygulamaya gelen her bir istek üzerine hareket edebilir.
MVC filtreleri ise yalnızca MVC'ye gelen istekler için çalışır.
Örneğin, tüm isteklerin HTTPS üzerinden yapılması gerektiğini zorunlu kılmak isteseydim, bunun için bir ara yazılım kullanmam gerekirdi. Bunu yapan bir MVC filtresi yaptıysam, kullanıcılar yine de örneğin HTTP üzerinden statik dosyalar isteyebilir.
Ancak diğer yandan MVC denetleyicilerinde istek sürelerini kaydeden bir şey kesinlikle bir eylem filtresi olabilir.
middleware
MVC bağlamı ardışık düzen içinde kullanılabilir hale gelmeden önce yürütülür . Yani, örneğin bir ActionFilter durumunda veya öğesine middleware
erişimi yoktur . Erişiminiz olan şey , istek ve yanıta ilişkin eylemler gerçekleştirmenize olanak tanıyan erişimidir. Model bağlama henüz gerçekleşmediğinden, ara yazılım kullanmak, bir doğrulama işlevini çalıştırmak veya değerleri değiştirmek için uygun olmayacaktır. hangi denetleyici veya eylemin çağrıldığına bakılmaksızın her talepte de çalışacaktır.ActionExecutingContext
ActionExecutedContext
HttpContext
Middleware
Öte yandan, filters
başlangıçta genel olarak filtreyi kaydetmediğiniz sürece yalnızca belirli eylemler ve denetleyiciler üzerinde çalışır. İçeriğe tam erişiminiz olduğundan, denetleyiciye ve eylemin kendisine de erişebilirsiniz.
Kaynak ve örnek: dotnetcultist.com