在 C# 中实现功能标志
Posted
技术标签:
【中文标题】在 C# 中实现功能标志【英文标题】:Implementation of feature flags in C# 【发布时间】:2013-01-05 16:22:47 【问题描述】:Feature flags 是我经常使用的东西,但在我正在进行的这个新项目开始之前,我从未真正考虑过它。
我通常在我的 web.config 文件中使用很多键来实现它,但这种方法有两个主要缺点:
-
更改 web.config 中的值时,应用程序池会重新启动 - 这在访问量大的环境中可能会出现问题
web.config 文件中的键过多会让人感到困惑,而且会变得非常混乱
克服这些问题的最佳方法是什么?
【问题讨论】:
你可能有多少个标志? 我通常只有几个。不到 10 个。但是通过良好的实现,我可以看到它越来越有助于应用程序管理。 【参考方案1】:我建议使用 IoC 来抽象您的功能标志的实现 - 您需要访问的所有代码都类似于 IFeatures.IsEnabled("FeatureA")
。完成此操作后,您可以选择最明智的实施方式 - 一些建议如下:
【讨论】:
作为进一步的提示,尝试使用枚举而不是魔术字符串作为标志。当您想要清理它们或更改它们的名称时,更容易找到它们的使用位置,并且 Intellisense 会提醒人们已经定义了哪些标志,从而减少人们创建重复项的机会。【参考方案2】:您不必在web.config
中存储功能标志。
一种选择是将它们存储在数据库中 - 这具有在网络场中运行良好的额外好处。
请注意,使用功能标志时,一旦您处于某个功能将永久打开或关闭的位置(例如从小部件 A 转换到小部件 B 时,您将不再需要任何小部件 A 代码),您应该删除功能和相关标志。这将有助于管理功能集。
【讨论】:
你说得对,是问如何克服这个问题,而不是我输入的内容,所以我将其删除。 (我只是说仍然使用不同的 web.config)【参考方案3】:如果您想向您的 C# 应用程序添加功能标志,我不建议您创建自己的功能标志解决方案,而是使用可以直接集成的几个功能标志即服务提供商之一开箱即用的 C#。
Floodgate 是一个这样的解决方案,它有一个适用于 .Net 的 SDK,您可以立即在应用程序中使用功能标志安装和运行该 SDK。
免责声明,我的名字是 Eugene,我是 Floodgate 的创始人。话虽如此,无论您决定使用哪种功能标志提供程序,我的建议都是一样的。
【讨论】:
以上是关于在 C# 中实现功能标志的主要内容,如果未能解决你的问题,请参考以下文章