web-dev-qa-db-ja.com

asp.netコアミドルウェアとフィルター

Asp.netのコアmiddlwareについて読んだ後、フィルターを使用すべきときとミドルウェアを使用すべきときが同じ目標を達成しているように見えるので、私は混乱しています。いつフィトラーの代わりにミドルウェアを使用する必要がありますか?

57
Arvand

チャンネル9でこれに関するビデオがあります: ASP.NET Monsters#91:ミドルウェアvs.フィルター 。ビデオを要約するには:

リクエストの実行が開始され、ミドルウェアと別のミドルウェアが「人形の中のロシアの人形」のように考えられ、最終的にルーティングミドルウェアが起動し、リクエストがMVCパイプラインに送られます。 enter image description here したがって、MVCのコンテキストを必要としない場合(ヘッダーへのプレルーティングメカニズムなどへの応答など、フローと実行に関心があるとしましょう)、を使用しますミドルウェア
ただし、MVCのコンテキストが必要で、アクションに対して操作する場合は、filtersを使用します。

52
Arvand

ミドルウェアはASP.NET Coreのレベルで動作し、アプリケーションに着信するすべてのリクエストに対応できます。

一方、MVCフィルターは、MVCに送信されるリクエストに対してのみ実行されます。

そのため、たとえば、すべての要求をHTTPS経由で実行する必要がある場合、ミドルウェアを使用する必要があります。それを行うMVCフィルターを作成した場合、ユーザーは引き続きリクエストできます。 HTTP経由の静的ファイル。

ただし、その一方で、MVCコントローラーで要求期間を記録するものは、絶対にアクションフィルターになる可能性があります。

45
juunas