2013-01-22 91 views
6

Feature flags में फीचर झंडे का कार्यान्वयन कुछ ऐसा है जो मैं अक्सर उपयोग करता हूं लेकिन इस नई परियोजना के शुरू होने तक मैं वास्तव में इसके बारे में ज्यादा सोचा नहीं था।सी #

मैं आमतौर पर मेरी web.config फ़ाइल में कुंजी के बहुत सारे के साथ इसे लागू लेकिन इस दृष्टिकोण के दो प्रमुख कमियां भी हैं:

  1. जब अनुप्रयोग पूल पुनरारंभ web.config अंदर एक मूल्य बदल रहा है - एक यह हो सकता है एक भारी पहुँच वातावरण
  2. web.config फ़ाइल में भी कई चाबियाँ होने में समस्या भ्रामक है और बहुत गंदा

सबसे अच्छा तरीका है इन समस्याओं को दूर करने के लिए क्या है मिल सकता है?

+1

आपके पास कितने झंडे होने की संभावना है? –

+0

मेरे पास आमतौर पर कुछ ही होते हैं। 10 से कम। लेकिन एक अच्छे कार्यान्वयन के साथ मैं इसे एप्लिकेशन प्रशासकों के साथ मदद करने के लिए बढ़ रहा देख सकता हूं। – tucaz

उत्तर

4

आपको web.config में फीचर झंडे स्टोर करने की आवश्यकता नहीं है।

एक विकल्प उन्हें डेटाबेस में स्टोर करना है - इसमें वेब फार्म में अच्छी तरह से काम करने का अतिरिक्त लाभ है।

ध्यान दें कि फीचर झंडे के साथ, एक बार जब आप एक स्थिति में हों तो एक सुविधा स्थायी रूप से चालू या बंद हो जाएगी (जब विजेट ए से विजेटबी में संक्रमण हो रहा है, और अब आपको किसी भी विजेट ए कोड की आवश्यकता नहीं होगी), तो आपको हटाया जाना चाहिए सुविधा और संबंधित ध्वज। यह सुविधा सेट के प्रबंधन में मदद करेगा।

+3

@Downvoter - टिप्पणी करने की देखभाल? – Oded

+0

आपके पास सही है, पूछें कि इसे कैसे दूर किया जाए, न कि मेरे पास क्या है, इसलिए मैं इसे हटा देता हूं। (मैं अभी भी web.config का उपयोग करने के लिए कहता हूं जो कुछ अलग है) – Aristos

7

मैं आपके फीचर झंडे के कार्यान्वयन को दूर करने के लिए आईओसी का उपयोग करने का सुझाव दूंगा - आपके सभी कोड को एक्सेस करने की आवश्यकता है IFeatures.IsEnabled("FeatureA") के साथ कुछ है। एक बार जब आप यह कर लेते हैं, तो आप सबसे समझदार कार्यान्वयन चुन सकते हैं - नीचे कुछ सुझाव: कैश की गई मूल्यों के साथ

  • web.config कार्यान्वयन (क्या आप अभी उपयोग कर के साथ संगत)
  • डेटाबेस कार्यान्वयन (, संभवतः SqlDependency का उपयोग कर यदि आप किसी वेब फार्म पर काम करना चाहते हैं)
  • अलग कॉन्फ़िगरेशन फ़ाइल कार्यान्वयन (कैश किया गया है, लेकिन फ़ाइल सिस्टम सिस्टम का उपयोग करके कॉन्फ़िगरेशन फ़ाइल में परिवर्तनों की जांच करने के लिए और उन्हें ऐप पूल को पुनरारंभ करने की आवश्यकता के बिना लोड करें)। यह उस मामले की अनुमति देता है जब आपको अपने डीबी की आवश्यकता से पहले परिभाषित सुविधाओं की आवश्यकता होती है।
+3

एक और युक्ति के रूप में, झंडे के लिए जादू तारों के बजाय enums का उपयोग करने का प्रयास करें। यह पता लगाना आसान है कि उनका उपयोग कहां किया जाता है जब आप उन्हें साफ करना चाहते हैं या उनके नाम बदलना चाहते हैं, और इंटेलिसेंस लोगों को याद दिलाता है कि झंडे बनाने वाले लोगों की संभावनाओं को कम करने के लिए लोगों को क्या झंडे परिभाषित किए गए हैं। –