Un marco liviano para alternar funciones para permitir el desarrollo basado en troncales.
Switcheroo busca la simplicidad, con una sintaxis limpia y un conjunto mínimo de funciones sin comprometer la extensibilidad y la capacidad de prueba.
Switcheroo se puede instalar a través de Nuget.
> Cambio de paquete de instalación
Switcheroo tiene la licencia MIT.
Instalación
Los paquetes Nuget se pueden encontrar aquí.
Agregar configuración
<configuración> <secciones de configuración> <sección nombre="características" tipo="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configSections> <características> <alterna> <agregar nombre="Log.InColor" habilitado="true"/> </alterna> </características> </configuración>
Inicializando la biblioteca
Características.Initialize(x => x.FromApplicationConfig());
Comprobación del estado de la función
if (Features.IsEnabled("Log.InColor")){// Implementar función}
Booleano (verdadero/falso)
La función alterna según un valor binario estático, ya sea activada o desactivada.
características.Add(new BooleanToggle("Característica1", verdadero));
<características> <alterna> <agregar nombre="BooleanToggle.Enabled" habilitado="true"/> <agregar nombre="BooleanToggle.Disabled" habilitado="false"/> </alterna> </características>
Intervalo de fechas (verdadero/falso, dentro del intervalo de fechas)
Los cambios de función de rango de fechas se evalúan tanto en el valor binario habilitado como en la fecha actual.
características.Add(new DateRangeToggle("Feature2", verdadero, DateTime.Now.AddDays(5), nulo));
<características> <alterna> <add name="Date.Enabled.InRange" enable="true" desde="1 de enero de 2010" hasta="31 de diciembre de 2050"/> <add name="Date.Enabled.Expired" enable="true" hasta="31 de diciembre de 2010"/> <add name="Date.Enabled.Future" enable="true" from="1 de enero de 2050"/> <agregar nombre="Fecha.Disabled" habilitado="false"/> </alterna> </características>
Las fechas desde y hasta pueden ser cualquier formato de fecha válido analizable por DateTime.Parse .
Características establecidas
Marcar una función de alternancia como establecida hace que la función de alternancia genere una excepción FeatureEstablishedException para garantizar que ya no se consulte.
características.Add(new EstablishedFeatureToggle("establecidoFeature"));
<características> <alterna> <añadir nombre="EstablishedFeature" establecido="true"/> </alterna> </características>
Dependencias
Las funciones pueden depender de otras funciones. Por ejemplo, a veces es conveniente tener una característica "principal" y luego subcaracterísticas que dependen de ella. Las dependencias se pueden especificar en la configuración como una lista delimitada por comas.
var mainFeature = new BooleanToggle("mainFeature", true);var subFeature1 = new BooleanToggle("subFeature1", true);var subFeature2 = new BooleanToggle("subFeature2", true);var dependencia1 = new DependencyToggle(subFeature1, mainFeature); var dependencia2 = nuevo DependencyToggle(subFeature2, mainFeature);features.Add(dependencia1);features.Add(dependencia2);
<características> <alterna> <agregar nombre="SubFeature1" enable="true" dependencias="MainFeature"/> <agregar nombre="SubFeature2" habilitado="true" dependencias="MainFeature"/> <agregar nombre="Característica principal" habilitada="verdadero" /> </alterna> </características>
Inicialización compatible con el código
Funciones de IFeatureConfiguration = new FeatureConfiguration{new BooleanToggle("Feature1", true),new DateRangeToggle("Feature2",true,DateTime.Now.AddDays(-2),DateTime.Now.AddDays(3))};
Compatible con IOC a través de instancias IFeatureConfiguration o la instancia de respaldo estática Feature.Instance
Para<IFeatureConfiguration>().Use(Features.Instance);
Diagnóstico de alternancia de funciones: IFeatureConfiguration.WhatDoIHave
Console.WriteLine(features.WhatDoIHave());
Name Feature1
IsEnabled True
Name Feature2
IsEnabled True
From 11/16/2012 3:32:23 PM
Until 11/21/2012 3:32:23 PM
Carga desde recursos de configuración personalizados: compilado sobre IConfigurationReader
0.3.4753.37554
Se eliminó MutableToggle
Se agregó la capacidad de "congelar" una configuración de alternancia.
La validación del estado de alternancia (incluidos los ciclos en las dependencias) ahora se produce al agregarse al contenedor de configuración de funciones.
0.3.4749.36197
Mecanismo de detección de ciclos de dependencia. Esta característica solo está activa cuando se configuran dependencias a través de la configuración de la aplicación.
Se corrigió el error por el cual un DependencyToggle que dependía de otro DependencyToggle podía causar que se agregaran conmutadores duplicados al conjunto de funciones.
v0.3.4748.37146
Mecanismo de configuración para DependencyToggle
v0.2.4730.37739
Se agregó DependencyToggle.
Se cambió de un diccionario a un diccionario concurrente.
v0.2.4705.37094
Se agregaron características establecidas.
v0.1.4705.28808
Se agregó la opción DateRange.
Bastante refactorización interna.
v0.1.4704.41742
Versión inicial: cambios simples.