2008-11-13 13 views
6

मेरे एएसपी.NET एप्लिकेशन को पृष्ठभूमि में समय-समय पर चलाने के लिए कई सहायक सेवाओं की आवश्यकता होती है। उदाहरण के लिए:एएसपी.नेट आवेदन के लिए पृष्ठभूमि सेवाओं को लागू करने का सबसे अच्छा तरीका क्या है?

  • मैं डेटाबेस (या कैश) क्वेरी करने के लिए हर 1-5 मिनट, अतिदेय काम आइटम की पहचान करने और
  • मैं हर रात को रिपोर्ट है कि उसके बाद ग्राहकों
  • को ईमेल कर रहे हैं उत्पन्न करने के लिए की जरूरत है ईमेल द्वारा उपयोगकर्ताओं को सूचित की जरूरत है
  • प्लस अन्य प्रणाली/गैर-उपयोगकर्ता व्यवस्थापक कार्यों

इन सेवाओं को लागू करने के लिए सबसे अच्छा तरीका क्या है? क्या मुझे एप्लिकेशन_स्टार्ट() में प्रत्येक 'सेवा' का उदाहरण शुरू करने के लिए उन्हें वेब एप्लिकेशन के हिस्से के रूप में शामिल करना चाहिए? या उन्हें वास्तविक स्टैंडअलोन सेवाओं के रूप में बनाएं? यदि वे वेब एप्लिकेशन का हिस्सा थे तो मैं संभावित रूप से अपने कैश किए गए डेटा स्टोर का उपयोग कर सकता हूं, लेकिन क्या इस दृष्टिकोण के लिए कोई डाउनसाइड्स हैं?

किसी भी सलाह के लिए धन्यवाद।

+0

http: // stackoverflow भी देखें।कॉम/प्रश्न/1424837/सर्वोत्तम-एएसपी-नेट-पृष्ठभूमि-सेवा-कार्यान्वयन – spoulson

उत्तर

6

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

Simulate a Windows Service using ASP.NET to run scheduled jobs

मैं इसे इस तरह से किया था और यह काम किया, लेकिन जैसा कि मैंने कहा था कि आप इसे केवल एक ही काम था, लेकिन आप उपरोक्त उदाहरण आप देख सकते हैं कि यह कई कार्य करता दिखाई देता है।

जैसा कि आप देख सकते थे, कैश में आप किसी भी समय और अंतराल पर कार्य कर सकते हैं, रात का काम मध्यरात्रि में किया जा सकता है, अन्य हर मिनट या घंटे।

उम्मीद है कि यह मदद करता है।

1

- रात की रिपोर्ट पीढ़ी के लिए मैं एसक्यूएल रिपोर्टिंग सेवाओं में देखता हूं क्योंकि उनके पास कुछ मूल सदस्यता सेवाएं हैं जो आपको वर्चुअल नो कस्टम कोड वाले उपयोगकर्ताओं को ई-मेल रिपोर्ट करने की अनुमति देती हैं।

- अतिदेय कार्य आइटम अधिसूचनाओं के लिए आप या तो एसएसआरएस (ऊपर उल्लिखित) का उपयोग करके उन्हें अपने अतिदेय वस्तुओं के साथ एक रिपोर्ट भेजकर या यदि आप SQL 2k5 चला रहे हैं, तो अधिसूचना सेवाओं का उपयोग कर सकते हैं।

+0

यदि आप SQL 2008 चला रहे हैं, तो अधिसूचना सेवाओं का उपयोग न करें क्योंकि उन्होंने इसे हटा दिया है। – gbjbaanb

1

मैं स्पिनऑफ वर्कर थ्रेड और थ्रेड करता हूं जो मेरे एएसपी.NET एप्लिकेशन में समय-समय पर चीजें करते हैं और मुझे कोई समस्या नहीं है।

मैं सिर्फ ऐप को घर में नहीं चलाता - अन्य इसे डाउनलोड करते हैं और इसे अपनी साइट पर चलाते हैं, या इसे होस्टिंग कंपनियों में चलाते हैं, इसलिए बिना किसी सेवा के स्थापित किए जाने के बिना चीजें करना तैनाती को आसान बनाता है।

1

एक टाइमर एक पृष्ठभूमि कार्यकर्ता के साथ संयुक्त मेरे लिए अच्छी तरह से काम किया है:

Timer timer = new Timer(intervalSeconds * 1000) 
timer.Elapsed += delegate 
{ 
    // do the meat 
}; 
timer.Start(); 

ध्यान रखें कि आप साइट निष्क्रियता के कारण बंद कर सकते हैं HttpContext करने और उस पर नहीं पहुंच पाएंगे।

0

ईमानदारी से मैं कभी भी एक एएसपीनेट प्रक्रिया के अंदर एक विंडोज सेवा अनुकरण करने की कोशिश करने का प्रशंसक नहीं रहा हूं, खासकर जब आप मानते हैं कि विंडोज सेवा बनाना कितना आसान है। ऐसा करने में मैंने जो प्रयास किए हैं, उनमें से अधिकांश समस्याएं पूरी हैं।