2017-03-03 13 views
22

Nach dem Lesen über asp.net Core Middleware, bin ich verwirrt, wann sollte ich Filter und wann sollte ich Middlewares verwenden, wie sie das gleiche Ziel zu erreichen scheinen. Wann sollten Middleware anstelle von Fitlern verwendet werden?asp.net Kern Middleware vs Filter

+1

Diese Dokumentation zielt auf diese spezielle Frage ab. https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters#using-middleware-in-the-filter-pipeline – Nkosi

Antwort

16

Es gibt ein Video darüber auf Kanal 9: ASP.NET Monsters #91: Middleware vs. Filters. Um das Video zusammenzufassen:

Die Ausführung der Anfrage beginnt und wir haben eine Middleware, und eine andere Middlerware, denken Sie daran wie die "Russische Puppen in Puppen" und schließlich die Routing-Middleware tritt und dann Anfrage geht in die MVC Pipline. enter image description here Also, wenn Sie nicht den Kontext von MVC benötigen (sagen wir, Sie sind besorgt über Ablauf und Ausführung, wie reagieren auf Header einige Pre-Routing-Mechanismus, etc.) dann Middlewares.
Wenn Sie jedoch den Kontext von MVC benötigen und gegen Aktionen arbeiten möchten, verwenden Sie Filter.

18

Middleware operiert auf der Ebene von ASP.NET Core und kann auf jede einzelne Anfrage reagieren, die in die Anwendung kommt.

MVC-Filter werden dagegen nur für Anforderungen ausgeführt, die an MVC gesendet werden.

Wenn ich zum Beispiel erzwingen wollte, dass alle Anfragen über HTTPS erfolgen müssen, müsste ich dafür eine Middleware verwenden. Wenn ich einen MVC-Filter machte, der das tat, konnten Benutzer immer noch z.B. statische Dateien über HTTP.

Aber andererseits kann etwas, das Anfragedauern in MVC-Controllern protokolliert, absolut ein Aktionsfilter sein.