DEV Community

Ashutosh Rajput
Ashutosh Rajput

Posted on

What is middleware and multiple ways to create middleware in .NET Core ?

What is middleware ?
Middleware is a software assembled into an app pipeline to handle request and response.
In simple words middleware gives us the facility to add additional logic before and after the HTTP request.
How middleware works ?

How middleware works

Suppose we have three middlewares in our app then for each middleware we enter two time.

  • First middleware logic is performed then we send it to next middleware
  • Secondly when request comes back after executing the next middlewares
    Multiple ways of creating middlewares
    We have three ways to create middleware in .NET Core

  • Request delegate (Most simple)

  • By convention

  • Using middleware factory
    Creating middleware using Request Delegate
    In this way we can create middleware using app.Use in our Program.cs

We can add our logic that we want to perform before or after this middleware.

If you don’t want to call next middleware we can achieve that by not invoking next.

Our Program.cs file would look like this :

Program file

To learn more about this technique visit Microsoft Docs

Creating middleware by Convention
It has three steps :

  • Create a class of your middleware and pass RequestDelegate in its constructor.
  • Now add a method responsible for logic before and after the middleware, pass it HttpContext
  • Add middleware in Program.cs After first two step our code would be like :

Creating middleware by Convention

Tell the Program.cs about this middleware by using app.UseMiddleware<name>()

Use Middleware

Creating middleware using Factory
This is modified version of conventional way , in this we create our class and inherit it from IMiddleware. In this way IMiddleware enforces us to implement InvokeAsync method. So the code looks like :

Creating middleware using Factory

One last step is to informing Program.cs about this middleware , but this time we can not do it only with app.UseMiddleware , we have to add it in built-in DI container. We have to register its service as well like this :

DI container

The factory method is most appreciated by developers because it has less chance of error and it is more clean.

Explore more about last two approaches from Microsoft Docs.

Top comments (0)