标签: featuretoggle

功能切换与功能分支

什么是"功能切换"和"功能分支"以及它们之间的区别是什么?

优缺点都有什么?为什么一个比另一个好?

我在Google上发现了一些关于此问题的文章,我倾向于参加"功能切换"阵营,但我不相信"功能切换"在所有情况下都是更好的选择.

version-control continuous-integration feature-branch featuretoggle

38
推荐指数
3
解决办法
2万
查看次数

使用功能切换和IoC代替分支代码 - 好或坏的想法?

我们的客户可以选择何时升级.因此,我的团队必须维护和支持我们软件产品的几十个版本.您可以想象,由于热修复和服务包必须在所有这些风格中传播,因此导致大量分支和合并.我对这种情况不满意.显而易见的解决方案就是不要维护我们产品的这么多不同版本,但这个显而易见的解决方案对我来说是不可用的.所以,我正在探索创造性的选择,以降低团队的维护工作.我正在考虑使用功能切换和IoC的混合来实现我们软件产品的n个版本.我的想法是,我可以为我的产品使用单一代码库,并通过配置管理来管理行为和功能.这将代替必须跨多个分支传播代码.这是一种合理的方法,还是我只是将一个问题换成另一个问题?

inversion-of-control featuretoggle

11
推荐指数
1
解决办法
921
查看次数

有效使用.NET中的功能切换的工具和技术

我已经阅读了很多关于功能切换但没有使用它们的实际经验.人们推荐哪些工具和技术来有效管理功能切换?

我想最简单的方法是将web.config文件中的切换作为true/false值存储为appSettings,但这听起来不是特别好的方法.

理想情况下,我希望任何管理功能的方法切换为:

  • 标记删除时切换的任何用途.例如编译错误
  • 突出显示任何旧切换.即功能发布后仍然存在的切换

.net continuous-integration featuretoggle

10
推荐指数
1
解决办法
2237
查看次数

功能标记与授权

我偶然发现了功能标记的概念,以及一个名为Togglz的流行的开源Java库,它引用了Martin Fowler博客文章:

基本思想是拥有一个配置文件,为您拥有的各种功能定义一系列切换.然后,正在运行的应用程序使用这些切换来决定是否显示新功能.

但对我来说,这听起来像授权:用户是否有权查看此内容?

例如,用户是否应该能够看到FizzBu​​zz菜单?

在Togglz中,我可能会像这样执行此检查:

if(MyFeatures.ShowFizzBuzz.isActive()) {
    // Show the FizzBuzz menu.
}
Run Code Online (Sandbox Code Playgroud)

比方说,Apache Shiro,我可以做同样的事情:

ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
    // Show the FizzBuzz menu.
}
Run Code Online (Sandbox Code Playgroud)

再次,功能标记只是感觉像为基于角色或允许检查其完全相同的问题.

我确定我错了,但我不知道怎么回事.所以我问:功能标记与授权和角色/权限检查有何不同,具体用例是什么类型的例子?换句话说:我何时应该使用授权/角色/权限检查,何时应该使用功能标志?

java security authorization togglz featuretoggle

9
推荐指数
1
解决办法
1372
查看次数

在春天的背景下切换功能

我想使用功能切换范例.具体来说,我希望我的Spring上下文包含基于切换的不同bean定义.

我遇到过这个:http://robertmaldon.blogspot.com/2007/04/conditional-defining-spring-beans.html,看起来不错,但可能有点太麻烦了

java spring featuretoggle

8
推荐指数
1
解决办法
2484
查看次数

用于功能切换的现有PHP工具

最近我读了很多文章,讨论使用"功能切换"或"看门人"的想法,以便在开发完成之前保留用户隐藏的功能.Facebook和Flickr都谈到他们如何使用它来测试一些用户的新功能,然后再将其释放到每个人身上.

一些谷歌搜索没有发现任何现有的PHP包/工具可以添加到Web应用程序来处理这类事情.如果我们不需要的话,似乎可以直接推出我们自己但没有理由重新发明那个轮子.有没有现成的PHP工具呢?

用品

澄清:我想看看它是否存在的部分是管理面板,它控制哪些用户可以看到新功能.在Flickr的例子中,他们可以根据主机打开它.在Facebook示例中,他们添加了一些功能,例如将功能限制为5%的用户,仅限TechCrunch用户或仅限东海岸用户.

当你有200个开启的功能,10个尚未完成的功能以及3个你正在为某些用户演示的功能时,管理面板似乎至关重要.

php continuous-integration continuous-deployment featuretoggle

7
推荐指数
1
解决办法
2113
查看次数

功能修改数据库时是否可以使用功能标志/切换?

在考虑在应用程序中使用功能切换时,这个问题最让我困惑。大多数功能需要对数据库进行一些更改。那么如何实现功能标志以便能够在打开/关闭功能切换的同时顺利恢复数据库更改?特别是当使用某些数据库迁移工具时,例如 flyway 或 liquibase。

让我们举一些例子。例如,我有一个带有 Id、Name 列的简单表格播放列表。我想在应用程序中添加向播放列表添加描述的功能。需要更改数据库表。已添加新列。列值不是强制性的。简单到此为止。一段时间后,功能将从生产中关闭。解决方案很简单但很麻烦 - 我们可以将列保留在 db 中并且不再在代码中使用它。迁移工具以增量方式工作,因此当我关闭功能切换(或者我错了?)时,我看不到任何返回到先前数据库状态的选项。更难的例子是当字段需要是强制性的。然后我不能把那个字段留在数据库中。它将向后不兼容。那么呢?如何处理这种情况?我认为这是很常见的情况。

此外,即使 db 稍有变化,我对该类的应用程序模型也会发生变化。(假设使用了一些 ORM)。这不像用策略模式替换实现那么容易。除非您为 ORM 模型使用提供了大量抽象。所以添加这样一个功能标志似乎很复杂。任何人都可以帮助我理解它是如何使用功能工具的吗?或者也许有人有完整的例子要展示?首选Java

java liquibase flyway featuretoggle

7
推荐指数
2
解决办法
1859
查看次数

当端点被功能标志/功能切换禁用时,您使用什么 HTTP 状态代码?

我一直在使用503 服务不可用或停机进行维护。

然而,一些 http 客户端库(即 axios)将 503 视为可重试错误。

如果由于高负载而产生响应,则重试是有意义的,但 503 也适合功能切换情况。

对人们使用的其他代码有什么建议吗?

rest api-design http response featuretoggle

7
推荐指数
1
解决办法
3349
查看次数

功能切换Java注释

如何切换java注释功能?

简单的功能切换: - if(启用切换)执行x

Spring允许使用"profiles"来切换bean.

我使用这些并且它们很好,但我想在字段或类上切换注释..我该怎么做?

用例,我有一个有jpa注释的类.我希望能够在某些环境中通过配置标记某些字段是@transient.

java spring annotations jpa featuretoggle

6
推荐指数
1
解决办法
3982
查看次数

功能 - 切换Spring组件

我有一个Spring Boot应用程序,包含很多@ Component,@ Controller,@ RestartController注释组件.有大约20种不同的功能我想分开切换.重要的是,可以在不重建项目的情况下切换功能(重启就可以了).我认为Spring配置会很好.

我可以像这样对配置(yml)进行成像:

myApplication:
  features:
    feature1: true
    feature2: false
    featureX: ...
Run Code Online (Sandbox Code Playgroud)

主要问题是我不想在所有地方使用if-blocks.我宁愿完全禁用组件.例如,甚至应该加载@RestController,它不应该注册它的pathes.我正在寻找这样的东西:

@Component
@EnabledIf("myApplication.features.feature1")  // <- something like this
public class Feature1{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

有这样的功能吗?有没有一种简单的方法可以自己实现它?或者是否有另一种功能切换的最佳实践?

顺便说一句:Spring Boot版本:1.3.4

java spring spring-boot featuretoggle

6
推荐指数
2
解决办法
5152
查看次数