1

ASP.Net Core 1.1 Web APIでは、すべてのコントローラ間でアクセス可能なグローバル情報を格納する必要があります。したがって、クライアントがAPI上の特定のエンドポイントを呼び出すときには、他のすべてのコントローラから読み取る特定の変数(ディクショナリ)を設定する必要があります。私が見たことから、グローバルな静的変数を使用することは明らかに悪い考えです。なぜ誰かが私にその理由を教えてもらえますか、より良い選択肢は何ですか?設定ファイルやキャッシュの使用について聞いたことがあります。Asp.Netコアのグローバル変数の代わりに?

+0

タイトルを編集して少し主観的ではなく、「任意のおすすめ」を削除しました。 stackoverflowは推奨事項のサイトではなく、推奨事項を尋ねるサイトではないという問題の本文の最後には、閉じられた回答が得られないことがよくあります。 –

答えて

2

多くの開発者がグローバル変数を使用したくない主な理由は、使用するクラスを完全に単体テストすることが困難になることですそれら。コードをユニットテストする開発者は、グローバル変数に対する依存性注入を優先します。

クラスのコンストラクタパラメータを介してクラスに渡すことによって必要な変数が「クラスに注入された」場合、ユニットテストはこれらの変数の既知の値を渡すことができ、テストの望ましい結果が予測可能になります。これはユニットテストを劇的に助けます。 official documentationから、ASP.NETコア依存性注入の詳細を知ることができます。

グローバル変数のもう1つの問題は、どこからでも変更できることです。だから、デバッグの際に、どのコードを変更したのかを追跡するのは難しいことがあります。グローバル変数ではなく依存性注入を使用することにより、開発者は変数にアクセスできる特定のクラスを知ることができます。

+0

はい、これは間違いなくDIと、AddSingletonをベースにしたInMemoryの実装か、IDistributedCacheをベースにした分散(これは現代のWeb世界では複数のサーバーを持つことが多いため、おそらく良いオプションです)のシナリオです。 –

関連する問題