Asp.Net Core 中全局变量的替代方案?
An alternative to global variables in Asp.Net Core?
在 ASP.Net Core 1.1 Web API 中,我需要存储一些必须可跨所有控制器访问的全局信息。因此,当客户端调用 API 上的某个端点时,必须设置某个变量(字典),该变量将从所有其他控制器读取。据我所见,使用全局静态变量显然是个坏主意?也许有人可以告诉我为什么,什么是更好的选择?我听说过使用配置文件或缓存...
许多开发人员不喜欢使用全局变量的一个主要原因是它们会使使用它们的 class 进行完全单元测试变得困难(或不可能)。对代码进行单元测试的开发人员更喜欢依赖注入而不是全局变量。
如果需要的变量是 "injected into the class",通过 class 的构造函数参数将它们传递到 class,那么单元测试可以为这些变量传递已知值,这使得测试的预期结果是可预测的。这极大地帮助了单元测试。您可以从 official documentation.
了解更多关于 ASP.NET 核心依赖注入的信息
全局变量的另一个问题是它们可以从任何地方更改。因此,在调试时,有时很难找出是哪段代码更改了它们。通过使用依赖注入而不是全局变量,开发人员知道可以访问该变量的特定 classes。
在 ASP.Net Core 1.1 Web API 中,我需要存储一些必须可跨所有控制器访问的全局信息。因此,当客户端调用 API 上的某个端点时,必须设置某个变量(字典),该变量将从所有其他控制器读取。据我所见,使用全局静态变量显然是个坏主意?也许有人可以告诉我为什么,什么是更好的选择?我听说过使用配置文件或缓存...
许多开发人员不喜欢使用全局变量的一个主要原因是它们会使使用它们的 class 进行完全单元测试变得困难(或不可能)。对代码进行单元测试的开发人员更喜欢依赖注入而不是全局变量。
如果需要的变量是 "injected into the class",通过 class 的构造函数参数将它们传递到 class,那么单元测试可以为这些变量传递已知值,这使得测试的预期结果是可预测的。这极大地帮助了单元测试。您可以从 official documentation.
了解更多关于 ASP.NET 核心依赖注入的信息全局变量的另一个问题是它们可以从任何地方更改。因此,在调试时,有时很难找出是哪段代码更改了它们。通过使用依赖注入而不是全局变量,开发人员知道可以访问该变量的特定 classes。