2012-05-31 19 views

उत्तर

8

मुझे लगता है कि आप गलत समझते हैं कि एक वर्कर भूमिका क्या है। वेब और वर्कर भूमिकाएं विंडो सर्वर वीएम हैं, वेब भूमिकाओं में मुख्य अंतर आईआईएस चल रहा है। आपके पास प्रत्येक के कई उदाहरण हो सकते हैं।

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

OnStart() या Run() से, आप अपने इच्छित कोड को बहुत अधिक चला सकते हैं। एकाधिक धागे को हटाएं, सर्वर कोड चलाएं (जैसे टोमकैट), आदि। आपके पास जो भी कोड है, वह प्रत्येक इंस्टेंस में चलाएगा। जैसे-जैसे आप कई उदाहरणों तक पहुंचते हैं, वही वीएम टेम्पलेट उन सभी उदाहरणों पर उपयोग किया जाता है।

कृपया this answer भी देखें, जहां मैं थोड़ा और विस्तार प्रदान करता हूं।

5

डेविड की तरह उनके जवाब में उल्लेख किया गया है कि आप कई धागे को लात मार सकते हैं। मेरे ग्राहकों में से एक ने ThreadedRoleEntryPoint कक्षा का उपयोग करके ऐसा किया।

इस वर्ग आप एक से अधिक कार्यकर्ता भूमिका प्रवेश बिंदु वर्गों (कई विधानसभाओं से भी) का उपयोग करने के लिए और उन्हें एक ही भूमिका में चलाने के लिए अनुमति देता है:

public override void Run() 
    { 
     Trace.TraceInformation("WebRole::Run begin", "Information"); 

     List<WorkerEntryPoint> workers = new List<WorkerEntryPoint>(); 

     workers.Add(new Worker1()); 
     workers.Add(new Worker2()); 

     base.Run(workers.ToArray()); 

     Trace.TraceInformation("WebRole::Run end", "Information"); 
    } 

लाभ यहाँ आप छोटे शुरू करने और सभी कार्यकर्ता चला सकते हैं वह यह है कि भूमिकाएं (वास्तव में कार्यकर्ता भूमिकाएं नहीं, लेकिन उन्हें एक ही भूमिका में (जिसे आप वास्तव में तैनात करते हैं) में उन्हें प्रक्रियाओं या श्रमिकों को कॉल करते हैं।

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

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