ASP.Net Core 1.1 Web APIでは、すべてのコントローラ間でアクセス可能なグローバル情報を格納する必要があります。したがって、クライアントがAPI上の特定のエンドポイントを呼び出すときには、他のすべてのコントローラから読み取る特定の変数(ディクショナリ)を設定する必要があります。私が見たことから、グローバルな静的変数を使用することは明らかに悪い考えです。なぜ誰かが私にその理由を教えてもらえますか、より良い選択肢は何ですか?設定ファイルやキャッシュの使用について聞いたことがあります。Asp.Netコアのグローバル変数の代わりに?
1
A
答えて
2
多くの開発者がグローバル変数を使用したくない主な理由は、使用するクラスを完全に単体テストすることが困難になることですそれら。コードをユニットテストする開発者は、グローバル変数に対する依存性注入を優先します。
クラスのコンストラクタパラメータを介してクラスに渡すことによって必要な変数が「クラスに注入された」場合、ユニットテストはこれらの変数の既知の値を渡すことができ、テストの望ましい結果が予測可能になります。これはユニットテストを劇的に助けます。 official documentationから、ASP.NETコア依存性注入の詳細を知ることができます。
グローバル変数のもう1つの問題は、どこからでも変更できることです。だから、デバッグの際に、どのコードを変更したのかを追跡するのは難しいことがあります。グローバル変数ではなく依存性注入を使用することにより、開発者は変数にアクセスできる特定のクラスを知ることができます。
+0
はい、これは間違いなくDIと、AddSingletonをベースにしたInMemoryの実装か、IDistributedCacheをベースにした分散(これは現代のWeb世界では複数のサーバーを持つことが多いため、おそらく良いオプションです)のシナリオです。 –
関連する問題
- 1. asp.netコアのグローバル変数
- 2. グローバル変数の代わりに
- 3. グローバル変数の代わりに?
- 4. ASP.NETコアのServer.Transferに代わるもの
- 5. Python:グローバル変数の代わりにリスト項目を使う
- 6. asp.netの代わりにasp.netの代わりにmvc
- 7. 403の代わりにASP.NETコアRC2 404でベアラ認証
- 8. PHPでグローバル変数を使用する代わりに
- 9. .NETコアのUTF8Encodingクラスの代わりに
- 10. .netコアの代わりにFtpWebRequest
- 11. グローバル正規表現の代わりに
- 12. Asp.net「グローバル」変数
- 13. グローバル変数の代わりにモデルプロパティを表示するためのバインド
- 14. グローバル変数の代替
- 15. 代わりに、OOPのグローバル関数は何ですか?
- 16. グローバル変数の代わりにクラス属性を使用する方法は?
- 17. セッション変数の代わりに
- 18. PHPのASP.NETのUserControlsの代わりに?
- 19. ASP.Netグローバル/ページスコープ変数
- 20. asp.net/VB.net:IDの代わりにControlTypeのFindControl
- 21. asp.netのモーダルポップアップエクステンダーの代わりに?
- 22. ASP.NET MVC5 Webアプリケーションの代わりにMessageBox.Showの代わりになるもの
- 23. 入れ変数の代わりの値
- 24. asp.net Ajax 4.0テンプレートの代わりに
- 25. リアルタイムアプリケーション - node.jsとsocket.ioの代わりにasp.net
- 26. AngularJsサービスの代わりにAsp.net WebApiメソッド
- 27. 静的ローカル変数の代わりにグローバル変数を使用できますか?
- 28. asp.netのprofileproviderの代わりmvc
- 29. node_modules - グローバルなものの代わりにローカルコピーを実行する
- 30. XSLT:グローバル変数に値を代入
タイトルを編集して少し主観的ではなく、「任意のおすすめ」を削除しました。 stackoverflowは推奨事項のサイトではなく、推奨事項を尋ねるサイトではないという問題の本文の最後には、閉じられた回答が得られないことがよくあります。 –