功能标志是我经常使用的东西,但在我正在从事的这个新项目开始之前,我从未真正考虑过它。
我通常在我的 web.config 文件中使用很多键来实现它,但这种方法有两个主要缺点:
- 当更改 web.config 中的值时,应用程序池会重新启动 - 这在访问量很大的环境中可能是一个问题
- web.config 文件中的键过多会让人感到困惑,而且会变得非常混乱
克服这些问题的最佳方法是什么?
功能标志是我经常使用的东西,但在我正在从事的这个新项目开始之前,我从未真正考虑过它。
我通常在我的 web.config 文件中使用很多键来实现它,但这种方法有两个主要缺点:
克服这些问题的最佳方法是什么?
我建议使用 IoC 来抽象出你的特性标志的实现——你需要访问的所有代码都是类似IFeatures.IsEnabled("FeatureA")
. 完成此操作后,您可以选择最明智的实施方式 - 一些建议如下:
您不必将功能标志存储在web.config
.
一种选择是将它们存储在数据库中 - 这具有在网络场中运行良好的额外好处。
请注意,使用功能标志,一旦您处于某个功能将永久打开或关闭的位置(例如,从小部件 A 转换到小部件 B 时,您将不再需要任何小部件 A 代码),您应该删除该功能并关联旗帜。这将有助于管理功能集。
如果您想向 C# 应用程序添加功能标志,我不建议您创建自己的功能标志解决方案,而是使用可以直接与 C# 直接集成的几个功能标志即服务提供商之一的盒子。
一种这样的解决方案是Floodgate,它有一个适用于 .Net 的 SDK,您可以立即在应用程序中使用功能标志安装并启动和运行它。
免责声明,我的名字是 Eugene,我是 Floodgate 的创始人。话虽如此,无论您决定使用哪种功能标志提供程序,我的建议都是相同的。