Middleware to kluczowy koncept w ASP.NET Core, który umożliwia uruchamianie kodu pośredniego, który przetwarza requesty HTTP i odpowiedzi HTTP w aplikacji. Middleware to sekwencja komponentów, które są wykonywane w łańcuchu przetwarzania requestów HTTP, zwanym potokiem przetwarzania (pipeline).

Oto, jak działa middleware w ASP.NET Core:

  1. Pipeline przetwarzania żądań HTTP:

    Pipeline przetwarzania to sekwencja middleware'ów, które są wykonywane w określonej kolejności, gdy request HTTP zostaje odebrany przez aplikację. Middleware może wykonywać różne operacje, takie jak logowanie, autoryzacja, przekazywanie żądania dalej w łańcuchu przetwarzania itp.

    Request --> Middleware 1 --> Middleware 2 --> ... --> Controller
    

    Wszystkie żądania HTTP przechodzą przez ten łańcuch przetwarzania.

  2. Każdy middleware może wykonać operację:

    Każdy middleware ma dostęp do żądania HTTP przychodzącego i może wykonać dowolną operację na requeście, taką jak logowanie, analiza nagłówków, autoryzacja, przekierowania, transformacje itp.

  3. Odpowiedź jest tworzona w odwrotnej kolejności:

    Gdy żądanie przechodzi przez wszystkie middleware, odpowiedź jest tworzona w odwrotnej kolejności. Oznacza to, że ostatni middleware ma pierwszeństwo w tworzeniu odpowiedzi, a następnie odpowiedzi są przekazywane z powrotem w kierunku klienta.

    Controller --> Middleware N --> Middleware N-1 --> ... --> Middleware 1 --> Response
    
  4. Dodawanie middleware:

    Middleware jest dodawane do aplikacji w metodzie Configure klasy Startup.cs przy użyciu metody rozszerzającej, takiej jak UseMiddleware. Na przykład:

    public void Configure(IApplicationBuilder app)
    {
        app.UseMiddleware<CustomMiddleware>();
        // Inne middleware
    }
    

    Możesz również korzystać z wbudowanych middleware'ów dostarczonych przez ASP.NET Core, takich jak UseAuthentication, UseAuthorization, UseStaticFiles itp.

Middleware jest bardzo elastycznym narzędziem, które umożliwia tworzenie niestandardowej logiki przetwarzania dla Twojej aplikacji. Możesz tworzyć własne middleware, aby dostosować zachowanie Twojej aplikacji do swoich potrzeb lub korzystać z istniejących middleware'ów, które dostarczają gotowe funkcje, takie jak autoryzacja i uwierzytelnianie, obsługa błędów, przekierowania itp. Dzięki middleware'owi możesz oddzielić różne aspekty przetwarzania żądań HTTP i tworzyć bardziej modułową i elastyczną aplikację.

Materiały

ASP.NET Core Middleware

Coding Shorts: ASP.NET Core Middleware Explained