ASP.NET Core Request Pipepline

In meinem aktuellen ASP.NET core Kurs habe ich die Middleware mit folgenden Bild erklärt.

image

Die Middleware einer Request Pipeline reicht per Next die Ausführung an die nächste Middleware weiter. Im Normalfall ist die Middleware in einer eigenen Klasse ausgeführt, die in startup.cs per ApplicationBuilder eingebunden wird. In der Configure Methode wird dieser benannt app als Parameter übergeben. Dabei kann man aber auch ganz einfach per app.Use und einer Lambda Funktion Middleware für Arme bauen. Mit App.Run wird der komplette Request (also alle blauen Kästen von oben) zusammengefasst.

   1:   app.Run(async context =>
   2:   {
   3:     await context.Response.WriteAsync("Middleware für Arme");
   4:   });

Mit App.Use können mehrere Middelware Module definiert werden.  Diese drei werden vor UseMvc platziert

   1:   app.Use(next =>
   2:      {
   3:          return async ctx =>
   4:          {
   5:              await ctx.Response.WriteAsync("before 1");
   6:              await next(ctx);
   7:              await ctx.Response.WriteAsync("after 1");
   8:          };
   9:      });
  10:  app.Use(next =>
  11:      {
  12:       return async ctx =>
  13:           {
  14:              await ctx.Response.WriteAsync("before 2");
  15:              await next(ctx);
  16:              await ctx.Response.WriteAsync("after 2");
  17:           };
  18:       });
  19:  app.Use(next =>
  20:      {
  21:       return async ctx =>
  22:       {
  23:          await ctx.Response.WriteAsync("before 3");
  24:          await next(ctx);
  25:          await ctx.Response.WriteAsync("after 3");
  26:        };
  27:   });
  28:    

Das Aha Erlebnis kommt, wenn man die Browser Ausgabe betrachtet und in Vergleich zur Abbildung setzt.

image

Kommentare sind geschlossen