2009-01-26 15 views
6

मेरे पास एक सी # एप्लिकेशन है जो कुछ रखरखाव कार्यों को करता है। इसे लगभग हर घंटे चलाने की जरूरत है, हालांकि यह थोड़ा महत्वपूर्ण नहीं है, हालांकि यह बहुत महत्वपूर्ण नहीं है। और इसे Win2003 सर्वर पर चलाने के लिए कोई भी लॉग इन नहीं किया गया है।विंडोज सेवा या कार्य शेड्यूलर?

असल में मुझे आश्चर्य है कि मुझे विंडोज सेवा लिखनी चाहिए, और यदि हां, तो थ्रेड। स्लीप() थ्रेड को रोकने के लिए एक उचित तरीका है घंटा, या अगर यह सुनिश्चित करने के बेहतर तरीके हैं कि थ्रेड निष्क्रिय रहता है और कोई सर्वर लोड नहीं करता है? (उर्फ। स्पिनलॉक का सबसे विपरीत क्या है)

विकल्प विंडोज टास्क शेड्यूलर है, लेकिन मुझे यकीन नहीं है कि सर्वर के उपयोग के लिए यह अच्छा है या नहीं) मुझे इसके बजाय शेड्यूल स्टोर करना होगा मेरे app.config की तुलना में, बी) मैं स्टार्ट/स्टॉप/रीस्टार्ट के माध्यम से आसानी से सेवा को नियंत्रित नहीं कर सकता हूं और सी) मुझे नहीं पता कि विंडोज उपयोगकर्ता के प्रमाण पत्र सुरक्षित हैं जैसे कि मैं सेवा एमएमसी स्नैपिन में दर्ज करता हूं।

आपकी राय क्या हैं? क्या यह एक निष्क्रिय सेवा के लिए संभव और अच्छा है या आप इसके बजाय कार्य शेड्यूलर की सिफारिश करेंगे?

उत्तर

7

आपको यह video दिलचस्प लगता है। विंडोज सेवाओं के लिए ज़िम्मेदार अभियंता के साथ अच्छा साक्षात्कार और सेवा या कार्य लेने के लिए भी जाता है। संक्षेप में यदि आपकी सुविधा आवधिक रखरखाव श्रेणी में पड़ती है तो कार्य के साथ जाएं।

0

विंडोज सेवा अधिक सुरक्षित है: कोई भी इसे छोड़ सकता है और कभी भी काम नहीं करता है। मुझे विंडोज कार्य के साथ बहुत सारी परेशानी मिली है (निष्पादित नहीं, ...)।

विंडोज टास्क शेड्यूलर अंतिम उपयोगकर्ता कार्यों के लिए है जो अनुप्रयोग कार्यों के लिए नहीं है। वैसे भी, विंडोज बैकअप इसका उपयोग करता है ;-)

5

मैं टास्क शेड्यूलर को स्वयं पसंद करता हूं, क्योंकि इसे बनाए रखना आसान है और यदि आपको आवश्यकता हो तो शेड्यूल में बदलाव करना आसान है।

इसके अलावा, उपयोगिताएं लगातार चलती हैं और "नींद" समस्याएं पैदा करने का जोखिम चलाती हैं यदि डेवलपर निकट कनेक्शन, फाइल इत्यादि जैसी चीजें करने के लिए "भूल जाता है" जो समय के साथ निर्माण कर सकता है। प्रोग्राम "रन और एक्जिट" होने के बाद एक अतिरिक्त सुरक्षा कंबल है। :-)

1

यदि आप सेवा मार्ग पर जाते हैं तो मैं सिस्टम का उपयोग करने की सलाह दूंगा। थ्रेडिंग। टिमर। इसके साथ आप इसे एक घंटे में एक बार आग लगने के लिए सेट कर सकते हैं। यदि आप सोचते हैं कि आपको इसे बदलने की आवश्यकता होगी तो आप app.config में अंतराल डाल सकते हैं।

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

मेरे पास एक ऐसी स्थिति है जहां मैं वास्तव में दोनों के संयोजन का उपयोग करता हूं। सेवा दिन के दौरान लगातार चलती है लेकिन वे हर रात नेटवर्क और डेटाबेस रखरखाव करते हैं। तो, मैं दो अनुसूचित कार्यों का उपयोग करता हूं। मध्यरात्रि में सेवा बंद करने के लिए एक और इसे 4 बजे वापस चालू करने के लिए। यह नेट स्टॉप/नेट स्टार्ट कमांड के साथ बीएटी फाइलों को कॉल करके किया जाता है।

1

मुझे लगता है कि एक विंडोज सेवा शायद अधिक भरोसेमंद और निगरानी करने में आसान है, लेकिन यह एक शेड्यूलिंग लचीलापन ऑफ़-द-बॉक्स के रूप में एक ही शेड्यूलिंग लचीलापन प्रदान नहीं करेगा। मैं शायद वैसे भी सेवा के साथ जाऊंगा, क्योंकि अधिकांश एंटरप्राइज़ ऐप्स सेवाओं के रूप में चलते हैं, निर्धारित कार्य नहीं।

हाल की परियोजनाओं के लिए, मैंने विंडोज सेवाओं में अनुसूचित प्रसंस्करण सेट करने के लिए Quartz.NET का उपयोग किया है। यह वास्तव में सेटअप (अच्छा ट्यूटोरियल) के लिए बहुत कठिन नहीं है, और क्रॉन ट्रिगर आपको केवल एक छोटे से कॉन्फ़िगरेशन के साथ लचीलापन का एक टन देगा। मुझे इसे कच्चे .NET टाइमर से बेहतर पसंद है।

1

मुझे लगता है कि कार्यसूची शेड्यूलर का उपयोग करके मेरा 5 सेंट लायक फेंकने का अनुमान है, जब आपका कार्य नहीं चल रहा है।

संबंधित मुद्दे