트렁크 기반 개발을 가능하게 하는 기능 전환을 위한 경량 프레임워크입니다.
Switcheroo는 확장성과 테스트 가능성을 저하시키지 않으면서 깔끔한 구문과 최소한의 기능 세트를 갖춘 단순성을 목표로 합니다.
Switcheroo는 Nuget을 통해 설치할 수 있습니다.
> 설치 패키지 전환기
Switcheroo는 MIT 라이선스에 따라 라이선스가 부여됩니다.
설치
Nuget 패키지는 여기에서 찾을 수 있습니다.
구성 추가
<구성> <config섹션> <section name="features" type="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configSections> <특징> <토글> <이름 추가="Log.InColor" 활성화="true"/> </toggles> </features> </구성>
라이브러리 초기화
특징.초기화(x => x.FromApplicationConfig());
기능 상태 확인 중
if (Features.IsEnabled("Log.InColor")){// 기능 구현}
부울(참/거짓)
기능은 정적 이진 값을 기반으로 전환됩니다(켜기 또는 끄기).
feature.Add(new BooleanToggle("Feature1", true));
<특징> <토글> <이름 추가="BooleanToggle.Enabled" 활성화="true"/> <이름 추가="BooleanToggle.Disabled" 활성화="false"/> </toggles> </features>
기간(참/거짓, 기간 내)
날짜 범위 기능 토글은 바이너리 활성화 값과 현재 날짜 모두에서 평가됩니다.
feature.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<특징> <토글> <add name="Date.Enabled.InRange"enabled="true" from="2010년 1월 1일" Until="2050년 12월 31일"/> <add name="Date.Enabled.Expired"enabled="true" Until="2010년 12월 31일"/> <add name="Date.Enabled.Future"enabled="true" from="2050년 1월 1일"/> <이름 추가="Date.Disabled" 활성화="false"/> </toggles> </features>
시작 및 종료 날짜는 DateTime.Parse 로 구문 분석할 수 있는 유효한 날짜 형식일 수 있습니다.
확립된 기능
기능 토글을 설정된 것으로 표시하면 기능 토글이 더 이상 쿼리되지 않도록 하기 위해 FeatureUsedException 예외를 발생시킵니다.
feature.Add(new 설립된FeatureToggle("확립된 기능"));
<특징> <토글> <이름 추가="설정된 기능" 설정="true"/> </toggles> </features>
종속성
기능은 다른 기능에 따라 달라질 수 있습니다. 예를 들어, "주요" 기능을 갖고 그 다음에 그에 종속되는 하위 기능을 갖는 것이 편리한 경우가 있습니다. 종속성은 구성에서 쉼표로 구분된 목록으로 지정할 수 있습니다.
var mainFeature = new BooleanToggle("mainFeature", true);var subFeature1 = new BooleanToggle("subFeature1", true);var subFeature2 = new BooleanToggle("subFeature2", true);var dependency1 = new 종속성Toggle(subFeature1, mainFeature); var dependency2 = new 종속성토글(subFeature2, mainFeature);features.Add(종속성1);features.Add(종속성2);
<특징> <토글> <이름 추가="SubFeature1" 활성화="true" 종속성="MainFeature"/> <이름 추가="SubFeature2" 활성화="true" 종속성="MainFeature"/> <이름 추가="MainFeature" 활성화="true" /> </toggles> </features>
코드 친화적인 초기화
IFeatureConfiguration 기능 = 새로운 FeatureConfiguration{new BooleanToggle("Feature1", true),new DateRangeToggle("Feature2",true,DateTime.Now.AddDays(-2),DateTime.Now.AddDays(3))};
IFeatureConfiguration 인스턴스 또는 정적 Feature.Instance 지원 인스턴스를 통해 IOC 친화적입니다.
For<IFeatureConfiguration>().Use(Features.Instance);
기능 토글 진단: 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
사용자 정의 구성 리소스에서 로드: IConfigurationReader 위에 빌드
0.3.4753.37554
MutableToggle을 제거했습니다.
토글 구성을 "고정"하는 기능이 추가되었습니다.
이제 기능 구성 컨테이너에 추가로 토글 상태(종속성 주기 포함)의 유효성 검사가 수행됩니다.
0.3.4749.36197
종속성 주기를 감지하는 메커니즘입니다. 이 기능은 애플리케이션 구성을 통해 종속성을 구성하는 경우에만 활성화됩니다.
다른 종속성 토글에 종속된 종속성 토글로 인해 중복 토글이 기능 세트에 추가될 수 있는 버그가 수정되었습니다.
v0.3.4748.37146
종속성토글에 대한 구성 메커니즘
v0.2.4730.37739
종속성 전환이 추가되었습니다.
사전에서 ConcurrentDictionary로 변경되었습니다.
v0.2.4705.37094
확립된 기능이 추가되었습니다.
v0.1.4705.28808
DateRange 토글을 추가했습니다.
꽤 많은 내부 리팩토링이 이루어졌습니다.
v0.1.4704.41742
초기 버전: 간단한 토글.