2016-07-08 17 views
7

मैंने हैंगफायर दस्तावेज़ों को पढ़ना शुरू कर दिया है, और कार्य सीमाओं के बारे में कुछ भी नहीं मिला है।अनुसूचित कार्य सीमाएं (या कार्य निरंतरता कैसे कार्यान्वित की जाती है)?

घोषित किया गया है कि कार्य (या नौकरियां) कहीं भी संग्रहीत हैं।

चूंकि वे केवल प्रतिनिधि हैं, एकमात्र चीज़ को संग्रहीत किया जा सकता है, जहां तक ​​मैं समझता हूं, एक प्रतिनिधि "बॉडी" (आईएल?) है। लेकिन बंद हो सकता है, जो कार्य के लिए कुछ संदर्भ प्रदान करता है, उदाहरण के लिए, कुछ बाहरी सेवाएं, जिन्हें उनके कोड को चलाने के लिए अतिरिक्त असेंबली लोड करने की आवश्यकता हो सकती है।

कैसे हैंगफायर इस से संबंधित है?
क्या कार्य में उसके शरीर में कोई निर्देश हो सकता है, या कोई सीमाएं हैं?

उत्तर

1

जब आप कोई नौकरी बनाते हैं तो यह Job.FromExpression पर कॉल करता है, यदि आप इसे विधि कॉल अभिव्यक्ति के अलावा कुछ भी पास करते हैं तो यह अपवाद फेंकता है। तो एकमात्र चीज जिसे आप BackgroundJob.Enqueue में पास कर सकते हैं वह एक पंक्ति है जहां वह पंक्ति फ़ंक्शन को कॉल करती है।

फिर यह ऑब्जेक्ट के प्रकार को क्रमबद्ध करता है और सभी JobHelper.ToJson का उपयोग कर JSON में पैरामीटर में पारित किए जाते हैं। जब आप कक्षा के उदाहरण में गुजरते हैं तो आवृत्ति क्रमबद्ध नहीं होती है, केवल तभी होता है, यदि निष्पादन प्रक्रिया सीमाओं को पार करता है तो यह आंतरिक स्थिति को खो देगा।

आप पुराने hangfire ब्लॉग साइट "Are your methods ready to run in background?"

+0

उत्तर और संदर्भित आलेख के लिए धन्यवाद! मुझे लगता है, मुझे अपनी व्याख्या मिली है, और निष्कर्ष यह है कि नौकरी/कार्य विधियां * उनकी सामग्री से बहुत सीमित हैं। नौकरी निष्पादित करने के लिए आवश्यक ** ** ** सभी को पास करने की आवश्यकता है। अगर किसी को कुछ गतिशील स्थिति की आवश्यकता है, तो उसे इसे राज्य से पुनर्प्राप्त करना होगा, जिसे नौकरी शेड्यूलिंग पर क्रमबद्ध किया गया था (उदाहरण के लिए, डेटाबेस या फ़ाइल नाम/पथ में रिकॉर्ड पहचानकर्ता पास करें)। मैं थोड़ा निराश हूं - ये बहुत महत्वपूर्ण चीजें हैं, जिन्हें हैंगफायर होम पेज के शीर्ष पर रखा जाना चाहिए। – Dennis

0

ऐसा लगता है कि तंत्र शेड्यूलिंग संचालन के लिए Expression पर आधारित है और पुस्तकालय मुख्य रूप से एएसपी.Net वेबसाइटों में "आंतरिक" (प्रक्रिया में) निष्पादन के लिए है।

मतलब, एक निर्धारित ऑपरेशन के निष्पादन के लिए आवश्यक सभी असेंबली पहले से ही वेब अनुप्रयोग मेमोरी स्पेस में लोड की जानी चाहिए, क्योंकि उन्हें नौकरी निर्धारित करने की आवश्यकता थी (अगरसे यह अनुपलब्ध हो तो एप्लिकेशन संकलित नहीं होता एक असेंबली जिसे संदर्भित नहीं किया गया था)।

आशा है कि यह चीजों को थोड़ा स्पष्ट बनाता है!

+0

"आवेदन करता है, तो यह एक विधानसभा संदर्भित नहीं किया गया था से एक प्रकार याद आ रही थी संकलित नहीं होता" पर ब्लॉग लेख पर पढ़ सकते हैं - मैं मतलब गतिशील असेंबली लोडिंग, उदाहरण के लिए कुछ प्लगइन-आधारित परिदृश्य, जब सटीक प्लगइन असेंबली संकलन-समय पर अज्ञात हैं। – Dennis

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