Kerangka kerja ringan untuk peralihan fitur guna mengaktifkan pengembangan berbasis trunk.
Switcheroo bertujuan untuk kesederhanaan, dengan sintaksis yang bersih dan serangkaian fitur minimal tanpa mengorbankan ekstensibilitas dan kemampuan pengujian.
Switcheroo dapat diinstal melalui Nuget.
> Instal-Paket Switcheroo
Switcheroo dilisensikan di bawah lisensi MIT.
Instalasi
Paket nuget dapat ditemukan di sini.
Tambahkan konfigurasi
<konfigurasi> <configBagian> <bagian nama="features" type="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configBagian> <fitur> <beralih> <tambahkan nama="Log.InColor" diaktifkan="benar"/> </toggles> </fitur> </konfigurasi>
Menginisialisasi perpustakaan
Fitur.Inisialisasi(x => x.FromApplicationConfig());
Memeriksa status fitur
if (Features.IsEnabled("Log.InColor")){// Mengimplementasikan fitur}
Boolean (benar/salah)
Fitur diaktifkan berdasarkan nilai biner statis - aktif atau nonaktif.
fitur.Tambahkan(BooleanToggle baru("Fitur1", benar));
<fitur> <beralih> <tambahkan nama="BooleanToggle.Enabled" diaktifkan="benar"/> <tambahkan nama="BooleanToggle.Disabled" diaktifkan="false"/> </toggles> </fitur>
Rentang Tanggal (benar/salah, dalam rentang tanggal)
Pengalih fitur Rentang Tanggal dievaluasi berdasarkan nilai biner yang diaktifkan dan tanggal saat ini.
feature.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<fitur> <beralih> <tambahkan nama="Date.Enabled.InRange" diaktifkan="benar" dari="1 Januari 2010" hingga="31 Desember 2050"/> <tambahkan nama="Tanggal.Diaktifkan.Kedaluwarsa" diaktifkan="benar" hingga="31 Desember 2010"/> <tambahkan nama="Tanggal.Diaktifkan.Masa Depan" diaktifkan="benar" dari="1 Januari 2050"/> <tambahkan nama="Tanggal.Disabled" diaktifkan="false"/> </toggles> </fitur>
Tanggal dari dan hingga dapat berupa format tanggal valid apa pun yang dapat diurai oleh DateTime.Parse .
Fitur yang sudah mapan
Menandai peralihan fitur sebagai ditetapkan akan membuat peralihan fitur memunculkan pengecualian FeatureEstablishedException untuk memastikan bahwa peralihan tersebut tidak ditanyakan lagi.
fitur.Tambahkan(baru DidirikanFiturToggle("Fitur mapan"));
<fitur> <beralih> <tambahkan nama="EstablishedFeature" didirikan="benar"/> </toggles> </fitur>
Ketergantungan
Fitur dapat bergantung pada fitur lainnya. Misalnya, terkadang lebih mudah untuk memiliki fitur "utama", dan kemudian sub-fitur yang bergantung padanya. Dependensi dapat ditentukan dalam konfigurasi sebagai daftar yang dibatasi koma.
var mainFeature = new BooleanToggle("mainFeature", true);var subFeature1 = new BooleanToggle("subFeature1", true);var subFeature2 = new BooleanToggle("subFeature2", true);var dependency1 = new DependencyToggle(subFeature1, mainFeature); var dependency2 = DependencyToggle baru(subFitur2, mainFeature);features.Add(dependency1);features.Add(dependency2);
<fitur> <beralih> <tambahkan nama="SubFeature1" diaktifkan="benar" dependensi="Fitur Utama"/> <tambahkan nama="SubFeature2" diaktifkan="benar" dependensi="Fitur Utama"/> <tambahkan nama="Fitur Utama" diaktifkan="benar" /> </toggles> </fitur>
Inisialisasi ramah kode
Fitur IFeatureConfiguration = FeatureConfiguration baru{new BooleanToggle("Feature1", true),new DateRangeToggle("Feature2",true,DateTime.Now.AddDays(-2),DateTime.Now.AddDays(3))};
Ramah IOC melalui instans IFeatureConfiguration , atau instans pendukung Feature.Instance statis
Untuk<IFeatureConfiguration>().Use(Features.Instance);
Diagnostik sakelar fitur: IFeatureConfiguration.WhatDoIHave
Console.WriteLine(fitur.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
Memuat dari sumber konfigurasi khusus: dibangun di atas IConfigurationReader
0.3.4753.37554
Menghapus MutableToggle
Menambahkan kemampuan untuk "membekukan" konfigurasi sakelar.
Validasi status peralihan (termasuk siklus dalam dependensi) kini terjadi selain wadah konfigurasi fitur.
0.3.4749.36197
Mekanisme untuk mendeteksi siklus ketergantungan. Fitur ini hanya aktif ketika mengkonfigurasi dependensi melalui konfigurasi aplikasi.
Memperbaiki bug di mana DependencyToggle bergantung pada DependencyToggle lain mungkin menyebabkan duplikat matikan ditambahkan ke kumpulan fitur.
v0.3.4748.37146
Mekanisme konfigurasi untuk DependencyToggle
v0.2.4730.37739
Menambahkan DependencyToggle.
Berubah dari Kamus menjadi Kamus Bersamaan.
v0.2.4705.37094
Menambahkan fitur Mapan.
v0.1.4705.28808
Menambahkan tombol DateRange.
Cukup banyak refactoring internal.
v0.1.4704.41742
Versi awal: matikan sederhana.