2009-04-06 13 views
5

मेरे पास थोड़ा सा कोड है जिसे विंडोज सर्वर 2003 मशीन पर बैठने और हर मिनट चलाने की आवश्यकता है।बार-बार चलाने के लिए कोड शेड्यूल करने के लिए विंडोज़ कार्य शेड्यूलर कितना विश्वसनीय है?

इसे संभालने का अनुशंसित तरीका क्या है? क्या इसे कंसोल सेवा के रूप में डिज़ाइन करना ठीक है और क्या कार्य शेड्यूलर ने इसे कभी भी मिनट में मारा है? (क्या यह भी संभव है?) क्या मुझे बस इसे चूसना चाहिए और इसे विंडोज़ सेवा के रूप में लिखना चाहिए?

उत्तर

12

चूंकि इसे हर मिनट चलाने की आवश्यकता है, इसलिए मैं एक विंडोज सेवा लिखने का सुझाव दूंगा। यह बहुत जटिल नहीं है, और यदि आपने पहले कभी ऐसा नहीं किया है, तो यह सीखना आपके लिए अच्छा होगा कि यह कैसे किया जाता है।

प्रत्येक मिनट निर्धारित समय पर कॉल करना कुछ ऐसा नहीं है जिसे मैं अनुशंसा करता हूं।

+0

यदि आप हर मिनट चलते हैं तो कार्य शेड्यूलर की बजाय आप Windows सेवा की अनुशंसा क्यों करते हैं? आप उस विकल्प के लिए क्या जाते हैं? –

4

मैं कहूंगा कि इसे चूसो और इसे विंडोज सेवा के रूप में लिखें। मुझे निर्धारित कार्यों को बहुत भरोसेमंद नहीं मिला है और जब यह नहीं चलता है, तो मुझे यह पता लगाने का कोई आसान तरीका नहीं मिला है कि यह क्यों नहीं है।

+2

ईवेंट लॉग यह कहना चाहिए कि ऐसा क्यों नहीं है। –

+1

@jeffamaphone "चाहिए" कीवर्ड है। मैंने अनुसूचित कार्यों को अविश्वसनीय भी पाया है, अक्सर ईवेंट लॉग में रन प्रयास का कोई निशान नहीं छोड़ता है। –

2

यदि आपको इसे हर मिनट चलाने की ज़रूरत है, तो मैं इसे विंडोज़ सेवा के रूप में निर्मित करूंगा। मैं दैनिक कार्य से कम कुछ भी के लिए शेड्यूलर का उपयोग नहीं करता।

2

मैं कहूंगा कि यह इस बात पर निर्भर करता है कि यह क्या कर रहा था, लेकिन आम तौर पर मैं हमेशा कम परतों के पक्ष में हूं। यदि आप इसे कंसोल सेवा के रूप में लिखते हैं और कार्य शेड्यूलर का उपयोग करते हैं तो आपके पास आगे बढ़ने के लिए दो स्थान हैं।

यदि आप इसे विंडोज सेवा के रूप में लिखते हैं तो आपके पास कुछ गलत होने पर जांचने के लिए केवल एक ही कम स्थान हैं।

0

मैं मानता हूं कि यह एक कंसोल निष्पादन योग्य बनाने के लिए प्रयास की बर्बादी है और इसे हर मिनट चलाने के लिए शेड्यूल करता है। मैं Quartz.Net जैसे कुछ की खोज करने का सुझाव दूंगा। इस तरह आप एक साधारण नौकरी बना सकते हैं और इसे हर मिनट चलाने के लिए शेड्यूल कर सकते हैं।

+1

ऐसा लगता है कि आप हर मिनट चलाने के लिए एक कार्य निर्धारित करने के विचार के खिलाफ हैं ... लेकिन Quartz.Net के माध्यम से इसे करने के विचार के लिए हैं? क्या मैं कुछ भूल रहा हूँ? –

1

विचार करने का एकमात्र अन्य बिंदु यह है कि यदि आप नौकरी में हैं तो किसी प्रकार का डेटाबेस इंटरैक्शन शामिल है, तो अपने डेटाबेस द्वारा प्रदान की गई एकीकरण/शेड्यूलिंग सेवाओं को देखने पर विचार करें।

उदाहरण के लिए, आपके SQL सर्वर से संबंधित सेवा के लिए एक एसएसआईएस पैकेज बनाना ओवरकिल की तरह थोड़ा प्रतीत हो सकता है, लेकिन इसे पर्यावरण के साथ अच्छी तरह से एकीकृत किया जा सकता है और इसकी अपनी लॉगिंग/त्रुटि जांच तंत्र पहले से ही हो सकती है।

3

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

Init(); 
Run(); 
CleanUp(); 

के लिए इसी तरह फैशन फिर अनुसूचित टास्क के हिस्से के रूप में हम कब तक प्रक्रिया को चला सकते हैं पर एक समय सीमा डाल दिया और यह प्रक्रिया को मारने की है अगर यह लंबे समय तक के लिए चलाता है। अगर हमारे पास कोड का एक टुकड़ा है जिसमें परेशानी हो रही है तो अनुसूचित कार्य इसे मार देंगे और प्रक्रिया अगले मिनट में शुरू हो जाएगी।

2

अनुसूचित सेवा सहायता की खोज करते समय, मैं बहुत अच्छे article by Jon Galloway पर आया।

यदि निर्धारित सेवा के लिए एक विंडोज सेवा का उपयोग किया जाता है तो विभिन्न नुकसान होते हैं। मैं इसके साथ सहमत हुआ। मैं कार्यान्वयन में सरल, अनुसूचित कार्य का उपयोग करने का सुझाव दूंगा। कृपया detailed information of implementing the task scheduler देखें। आशा है कि यह जानकारी कार्यान्वयन दृष्टिकोण को अंतिम रूप देने में मदद करेगी।