2012-05-30 10 views
6

विंडोज 64 बिट डीएल लोड करने के लिए 32 बिट प्रक्रिया के लिए इसे संभव नहीं बनाता है, इसलिए मैं 32 बिट प्रक्रिया को 64 बिट प्रक्रिया के साथ संवाद करने की अनुमति देने के लिए रिमोटिंग का उपयोग करने की कोशिश कर रहा हूं।32 बिट प्रक्रिया 64 बिट प्रक्रिया के साथ .NET में कैसे संचार कर सकती है?

यहां समस्या है: जबकि दो अनुप्रयोग एक ही मशीन पर स्थित हैं, एक 32 बिट है और दूसरा 64 बिट है, और उन्हें ऐसा होना चाहिए: 32 बिट या 64 बिट दोनों को इन अनुप्रयोगों को तोड़ना होगा के शीर्ष पर बनाया गया है।

मैं .NET की सिस्टम का उपयोग कर रहा हूं। रनटाइम। रीमोटिंग। रीमोटिंग कॉन्फ़िगरेशन क्लास और इसकी कॉन्फ़िगर() विधि को कॉल करना और एक App.config फ़ाइल का संदर्भ पास करना जो मार्शलबीरफॉबेट क्लास का संदर्भ देता है जिसे मैं रिमोटिंग के माध्यम से एक्सेस कर रहा हूं।

मुझे यह काम करने के लिए मिला, लेकिन क्लाइंट, होस्ट, मार्शलबीरफॉब्जेक्ट क्लास के रूप में केवल 32 बिट या 64 बिट हैं। अगर मैं उन्हें मिश्रण करता हूं तो यह काम नहीं करेगा: मैं एक BadImageFormatException के साथ समाप्त हो जाएगा:

फ़ाइल या असेंबली 'MyRemotingObject' या इसकी निर्भरताओं में से एक लोड नहीं हो सका। एक गलत प्रारूप के साथ एक प्रोग्राम लोड करने के लिए एक प्रयास किया गया था।

जैसे ही मैं दोनों ऐप्स को 32 बिट या 64 बिट बनाता हूं, लेकिन फिर से, उनमें से एक 32 बिट और अन्य 64 बिट होना चाहिए।

क्या कोई मुझे बता सकता है कि 32 बिट .NET ऐप और एक .64 बिट .NET ऐप के बीच इंटरप्रोसेस संचार को कैसे सक्षम किया जाए?

+0

रिमोटिंग आपका मित्र यहां नहीं है; कुछ सरल का उपयोग करें - शायद एक मूल सॉकेट सर्वर। –

+0

उन्हें सभी 32 बिट या सभी 64 बिट क्यों न बनाएं? इन दोनों को मिश्रण करने का क्या मतलब है? –

उत्तर

8

रैंडम अनुमान: .NET दूरस्थ मेटाडाटा को पकड़ पाने के लिए दोनों प्रक्रियाओं में विधानसभा लोड करने के लिए की जरूरत है। आपका डेटा अनुबंध (डब्ल्यूसीएफ टर्म का उपयोग करने के लिए) एक अलग असेंबली में होना चाहिए और इसे "एएनसीपीयूयू" के रूप में संकलित किया जाना चाहिए, ताकि इसे किसी भी प्रक्रिया में लोड किया जा सके। आपको यह स्पष्ट रूप से 32-बिट या 64-बिट पर सेट हो गया है।

+0

आप सही हैं! मेजबान को 64 बिट पर सेट करना, क्लाइंट 32 बिट तक और किसी भी CPU को डेटा अनुबंध समस्या हल करता है! धन्यवाद! –

+2

आपको जवाब स्वीकार करना चाहिए, फिर ... ;-) –

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