إطار عمل خفيف الوزن لتبديل الميزات لتمكين التطوير القائم على قناة الاتصال.
يهدف Switcheroo إلى البساطة، مع بناء جملة نظيف ومجموعة ميزات بسيطة مع عدم المساس بقابلية التوسعة وقابلية الاختبار.
يمكن تثبيت Switcheroo عبر Nuget.
> تثبيت حزمة Switcheroo
Switcheroo مرخص بموجب ترخيص MIT.
تثبيت
يمكن العثور على حزم Nuget هنا.
إضافة التكوين
<التكوين> <أقسام التكوين> <section name="features" type="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configSections> <الميزات> <تبديل> <add name="Log.InColor" ممكّن = "true"/> </toggles> </الميزات> </التكوين>
تهيئة المكتبة
Features.Initialize(x => x.FromApplicationConfig());
التحقق من حالة الميزة
إذا (Features.IsEnabled("Log.InColor")){// تنفيذ الميزة}
منطقية (صواب/خطأ)
يتم تبديل الميزات بناءً على قيمة ثنائية ثابتة - إما تشغيلها أو إيقاف تشغيلها.
Features.Add(new BooleanToggle("Feature1", true));
<الميزات> <تبديل> <add name="BooleanToggle.Enabled" ممكّن = "true"/> <add name="BooleanToggle.Disabled" ممكّن = "false"/> </toggles> </الميزات>
النطاق الزمني (صواب/خطأ، ضمن النطاق الزمني)
يتم تقييم تبديلات ميزات النطاق الزمني على كل من القيمة الثنائية الممكنة والتاريخ الحالي.
Features.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<الميزات> <تبديل> <add name="Date.Enabled.InRange" مُمكّن = "true" من = "1 يناير 2010" حتى = "31 ديسمبر 2050"/> <add name="Date.Enabled.Expired"enable="true" حتى="31 ديسمبر 2010"/> <أضف اسم = "Date.Enabled.Future" ممكّن = "صحيح" من = "1 يناير 2050"/> <add name="Date.Disabled" ممكّن = "false"/> </toggles> </الميزات>
من وحتى التواريخ يمكن أن تكون أي تنسيق تاريخ صالح قابل للتحليل بواسطة DateTime.Parse .
الميزات المنشأة
يؤدي وضع علامة على تبديل الميزة على أنها محددة إلى أن يؤدي تبديل الميزة إلى طرح استثناء featureEstablishedException للتأكد من عدم الاستعلام عنها بعد الآن.
Features.Add(new FoundedFeatureToggle("foundedFeature"));
<الميزات> <تبديل> <add name="EstablishedFeature" أنشئت = "true"/> </toggles> </الميزات>
التبعيات
يمكن أن تعتمد الميزات على ميزات أخرى. على سبيل المثال، من المناسب في بعض الأحيان أن يكون لديك ميزة "رئيسية"، ثم ميزات فرعية تعتمد عليها. يمكن تحديد التبعيات في التكوين كقائمة محددة بفواصل.
var mainFeature = new BooleanToggle("mainFeature"، true);var subFeature1 = new BooleanToggle("subFeature1"، true);var subFeature2 = new BooleanToggle("subFeature2"، true);var Dependency1 = new DependencyToggle(subFeature1, mainFeature); فار التبعية2 = التبعية الجديدةToggle(subFeature2, mainFeature);features.Add(dependency1);features.Add(dependency2);
<الميزات> <تبديل> <add name="SubFeature1" مُمكّن = "true" تبعيات = "MainFeature"/> <إضافة اسم = "SubFeature2" تمكين = "صحيح" التبعيات = "الميزة الرئيسية"/> <add name="MainFeature"enable="true" /> </toggles> </الميزات>
تهيئة صديقة للكود
ميزات IFeatureConfiguration = new featureConfiguration{new BooleanToggle("Feature1", true),new DateRangeToggle("Feature2",true,DateTime.Now.AddDays(-2),DateTime.Now.AddDays(3)});
صديقة لـ IOC من خلال مثيلات IFeatureConfiguration ، أو مثيل دعم الميزة الثابتة
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
آلية الكشف عن دورات التبعية. تكون هذه الميزة نشطة فقط عند تكوين التبعيات عبر تكوين التطبيق.
تم إصلاح الخلل حيث قد يتسبب DependencyToggle اعتمادًا على DependencyToggle آخر في إضافة تبديلات مكررة إلى مجموعة الميزات.
v0.3.4748.37146
آلية التكوين لـ DependencyToggle
v0.2.4730.37739
تمت إضافة التبعيةToggle.
تم التغيير من قاموس إلى قاموس متزامن.
v0.2.4705.37094
تمت إضافة الميزات المنشأة.
v0.1.4705.28808
تمت إضافة تبديل DateRange.
قدر لا بأس به من إعادة الهيكلة الداخلية.
v0.1.4704.41742
الإصدار الأولي: تبديل بسيط.