मेरे पास एक आउट-ऑफ-प्रोसेस COM सर्वर है जिसे चीजों पर नजर रखने की आवश्यकता है। यह सर्वर एक सेवा के रूप में चलता है और आंतरिक रूप से, एक सिंगलटन है। सादगी के लिए, मैं उसे बॉसकॉम कहूंगा।मैं प्रक्रिया सीमाओं में एक आउट-ऑफ-प्रोसेस COM संदर्भ कैसे मार्शल कर सकता हूं?
मेरे पास एक अन्य आउट-ऑफ-प्रोसेस COM सर्वर है जो एक कार्यकर्ता है। यह सिस्टम स्थिरता के लिए है, एक एकल उपयोग सर्वर (जिसका अर्थ है कि यदि आप 2 वर्करकॉम बनाते हैं, तो 2 वर्करकॉम.एक्सई चल रहे हैं)। सादगी के लिए, मैं उसे वर्करकॉम कहूंगा।
वर्करकॉम किसी भी चीज से शुरू किया जा सकता है, यहां तक कि यदि कोई व्यक्ति उसे कमांड लाइन तर्क के साथ कमांड लाइन के माध्यम से चलाता है।
बॉसकॉम के लिए कुल लक्ष्य यह है कि वर्करकॉम क्या हैं, पता है कि वे क्या कर रहे हैं, और उन्हें ऑर्डर देने (रोकें, रोकें, रैंप अप करें) आदि।
मेरा प्रारंभिक विचार यह होगा कि जब भी वर्करकॉम शुरू होता है, तो वह एक बॉसकॉम को सहक्रिया स्थापित करेगा और बॉसकॉम-> रजिस्टरवॉर्कर (मुझे अज्ञात) कॉल करेगा। फिर जब वर्करकॉम बंद होने जा रहा है, तो वह बॉसकॉम-> UnregisterWorker (मुझे अज्ञात) कहलाएगा। BossCom IWorkerCom के लिए IU अज्ञात QueryInterface कर सकता है और आदेश जारी करने में सक्षम हो सकता है।
यह बहुत अच्छा काम करेगा यदि ये सभी कॉम ऑब्जेक्ट एक ही प्रक्रिया में थे, लेकिन वे नहीं हैं। मैंने ग्लोबलइंटरफेसटेबल का उपयोग करने के बारे में सोचा, लेकिन यह केवल एक प्रक्रिया के अर्थ में वैश्विक है।
मैंने इस पर शोध करने में कुछ दिन बिताए हैं और नुकसान में हैं। शायद मैं सुरंग दृष्टि से हूँ।
मैं वर्कर से बॉस के कॉम ऑब्जेक्ट का संदर्भ कैसे मार्शल कर सकता हूं?
ओह, और, इसके लायक होने के लिए, बॉसकॉम सी # में लिखा गया है और वर्करकॉम एटीएल सी ++ में लिखा गया है लेकिन मैं वीबी, स्कैला, लिस्प, या कुछ भी में लिखित समाधान लेगा। मुझे लगता है कि मैं मूल विचार का अनुवाद कर सकता हूं। :-)
यह सिर्फ काम नहीं करता है? मैं मानता हूं कि मैंने COM के साथ कुछ भी नहीं किया है, लेकिन इसका पूरा बिंदु प्रक्रिया से बाहर है कि आप प्रक्रिया सीमाओं में मार्शल कॉल के लिए पहले से ही COM प्राप्त कर रहे हैं, है ना? –
सही, ज्यादातर चीजों के लिए, लेकिन अज्ञात सिर्फ एक सूचक है, है ना? वर्करकॉम में "यह" पॉइंटर बॉसकॉम में कोई महत्व नहीं होगा? या मार्शलिंग प्रक्रिया महत्व रखेगी। मुझे लगता है मुझे कम से कम कोशिश करनी चाहिए। –
इसे बंद करना चाहिए-शेल्फ को छेड़छाड़ करने के लिए प्रॉक्सी/स्टब्स या टाइपेलिब दिए गए हैं। वास्तव में इसके लिए marshalling बिल्कुल है - एक ग्राहक को एक नकली वस्तु ("प्रॉक्सी") देने के लिए जो सर्वर पर प्रतिबिंबित है। यह कोड परिप्रेक्ष्य से पारदर्शी रूप से काम करता है। – sharptooth