दरअसल, यदि आपके पास एक अप्रत्याशित अपवाद है जो आपकी सेवा के शीर्ष स्तर तक पहुंच जाता है, तो आपको प्रसंस्करण जारी रखना चाहिए; इसे लॉग करें और इसे प्रचारित करें। यदि आपको वास्तव में "विश्वसनीय" सेवा की आवश्यकता है, तो आपको "वॉचडॉग" की आवश्यकता होगी जो मूल सेवा को बाहर निकलने पर पुनरारंभ करे।
ध्यान दें कि आधुनिक ऑपरेटिंग सिस्टम वॉचडॉग के रूप में कार्य करते हैं, इसलिए आपको ज्यादातर मामलों में वॉचडॉग सेवा की आवश्यकता नहीं है (अपनी सेवा गुणों के तहत "रिकवरी" टैब देखें)। ऐतिहासिक रूप से, महत्वपूर्ण सेवाओं में दूसरी "वॉचडॉग" सेवा होगी जिसका एकमात्र उद्देश्य असली सेवा को पुन: प्रारंभ करना है यदि यह विफल रहता है।
ऐसा लगता है कि आपका डिज़ाइन शेड्यूलर का उपयोग करने में सक्षम हो सकता है; बस विंडोज़ को "दिन में एक बार" भाग लेने दें और बस अपनी सेवा को एक ही समय में करें। अगर यह विफल रहता है, ठीक है; विंडोज अगले दिन इसे फिर से शुरू करने के लिए ज़िम्मेदार है।
एक अंतिम नोट: विश्वसनीयता की सेवा में शायद ही कभी इसकी आवश्यकता है। वाणिज्यिक कोड में, मैंने केवल कुछ एंटीवायरस प्रोग्रामों और नेटवर्क फ़िल्टरिंग प्रोग्राम में उपयोग किया है (जिसे चलाना था या अन्य सभी नेटवर्क संचार विफल हो गए थे)। मैंने खुद को कुछ "वॉचडॉग" प्रोग्राम किए हैं, लेकिन ये ऑटो कंपनियों जैसे ग्राहकों के लिए थे, जो टन खो देते थे जब उनकी असेंबली लाइन सिस्टम नीचे जाती थीं। सॉफ़्टवेयर वॉचडॉग के अतिरिक्त, इन सिस्टमों में अनावश्यक बिजली की आपूर्ति, RAIDed हॉट-स्वेपेबल हार्ड ड्राइव, और स्वचालित विफलता के रूप में उपयोग के लिए पूरे सिस्टम का पूर्ण डुप्लिकेट भी था।
बस कह रहा है: आप पुनर्विचार करना चाहते हैं कि आपको वास्तव में विश्वसनीयता बढ़ाने की आवश्यकता है (ध्यान में रखते हुए कि 100% विश्वसनीयता असंभव है; केवल घातीय लागत पर ही संपर्क किया जा सकता है)।
स्रोत
2010-07-01 14:15:55
मैं हमेशा लॉग ऑन और इसे फिर से फेंकने के लिए सेवा की ऑनस्टार्ट विधि में (अपवाद) पकड़ता हूं। निगलने को आपके डोमेन तर्क द्वारा नियंत्रित किया जाना चाहिए, अन्यथा उन्हें बाहर रिसाव करना होगा और सेवा को सावधानी से समाप्त करना होगा। मैं rethrowing से पहले अपवाद लॉग करने के लिए log4net का उपयोग करता हूं, जिसमें कम से कम 2 लॉग एपेंडर हैं - एक विंडोज़ इवेंट लॉग एपेंडर को असफल होने के साथ होना चाहिए, क्योंकि अन्य लॉगर्स असफल हो सकते हैं (उदाहरण के लिए फ़ाइल एपेंडर लिखने की अनुमति के कारण विफल हो सकता है)। –