2

WEB API(のみ)を使用する場合、APIコントローラと通常のWebコントローラの違いはありますか?ASP.NET Core 2 WEB API - 依存性注入

  • services.AddSingleton<IService, Service();
  • services.AddScoped<IService, Service();
  • services.AddTransient<IService, Service();

サービス間の差の挙動は、A返すコントローラに存在します:私は一生に一度のいずれかを使用して、このようなサービスを追加する際に意味しますJSONをRESTとして返すコントローラーはステートレスなのですか?

+1

いいえ、ここで違いはありません。 –

答えて

1

はい、ASP.NET Coreの前に、アプリケーションはASP.NET MVCとASP.NET Web APIに分割されていました。

ASP.NETコアでこれが変更されました。これは、リクエストを処理するための一般的なMVCアプローチ(MVCミドルウェアに代表される)です。

"同じ"パイプライン実装がすべての要求に対して実行されるため、ライフサイクルには影響しません。

たとえば、あなたが動的応答データを返すように定義されたコントローラのアクションを作成することがあります。

[HttpGet] 
    public dynamic Index(int flag) 
    { 
     if (flag == 1) return new StatusCodeResult(200); 
     if (flag == 2) return new { id = 1, Name = "some text" }; 
     else return View(); 
    } 

だからクエリパラメータに依存し、それが応答、またはビューとして、ステータスコードのみをJSONデータを返します。コントローラインスタンスの作成中(一部の依存関係がDIを介して解決される可能性がある)、フレームワークはどのフローが使用されるのかまだ分かりません。

+1

私はそれを知っています。たぶん私の質問が十分ではなかったかもしれない。 DIに追加されたサービスのライフサイクルに違いがあるかどうかを知りたい。 – user2818430

+0

@ user2818430に投稿が更新されました – Set