ホームページ  >  記事  >  バックエンド開発  >  IApplicationBuilder.Use() と IApplicationBuilder.Run() C# Asp.net Core の違いは何ですか?

IApplicationBuilder.Use() と IApplicationBuilder.Run() C# Asp.net Core の違いは何ですか?

WBOY
WBOY転載
2023-09-06 16:01:09671ブラウズ

IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?

Startup クラスの Configure メソッドでミドルウェアを構成するには、次を使用します。 IApplicationBuilder インスタンス。

Run() は IApplicationBuilder インスタンスの拡張メソッドであり、ターミナルを追加します。

ミドルウェアをアプリケーションのリクエスト パイプラインに追加します。

Run メソッドは IApplicationBuilder の拡張メソッドであり、

RequestDelegate のパラメータ。

実行メソッドのシグネチャ

public static void Run(this IApplicationBuilder app, RequestDelegate handler)

RequestDelegate シグネチャ

public delegate Task RequestDelegate(HttpContext context);

Example

中国語翻訳は次のとおりです:

Example

public class Startup{
   public Startup(){
   }
   public void Configure(IApplicationBuilder app, IHostingEnvironment env,
   ILoggerFactory loggerFactory){
      //configure middleware using IApplicationBuilder here..
      app.Run(async (context) =>{
         await context.Response.WriteAsync("Hello World!");
      });
      // other code removed for clarity..
   }
}

上記の MyMiddleware 関数は非同期ではないため、スレッドをブロックします。 実行が完了するまで。したがって、async と パフォーマンスとスケーラビリティが向上するまで待ちます。

public class Startup{
   public Startup(){
   }
   public void Configure(IApplicationBuilder app, IHostingEnvironment env){
      app.Run(MyMiddleware);
   }
   private async Task MyMiddleware(HttpContext context){
      await context.Response.WriteAsync("Hello World! ");
   }
}

Run() を使用した複数のミドルウェアの構成

次のコードは常に最初の Run メソッドを実行し、

に到達することはありません。 2 番目の Run メソッド
public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.Run(async (context) =>{
      await context.Response.WriteAsync("1st Middleware");
   });
   // the following will never be executed
   app.Run(async (context) =>{
      await context.Response.WriteAsync(" 2nd Middleware");
   });
}

USE

複数のミドルウェアを構成するには、Use() 拡張メソッドを使用します。 Run()に似ています ただし、次のミドルウェアを呼び出すための次のパラメータが含まれている点が異なります。 シーケンス

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.Use(async (context, next) =>{
      await context.Response.WriteAsync("1st Middleware!");
      await next();
   });
   app.Run(async (context) =>{
      await context.Response.WriteAsync("2nd Middleware");
   });
}

以上がIApplicationBuilder.Use() と IApplicationBuilder.Run() C# Asp.net Core の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。