मैंने कॉल संदर्भ (CallContext.SetData(key,data)
) पर कुछ डेटा रखा है, जहां डेटा ILogicalThreadAffinative
लागू करता है। यह कारण है कि यह ILogicalTreadAffinative लागू करता है यह है कि इसे वर्तमान अनुप्रयोग में एकाधिक धागे में साझा किया जाना चाहिए।लॉजिकल कॉल संदर्भ के दायरे को सीमित करने के लिए कैसे करें
हालांकि, एप्लिकेशन किसी अन्य सेवा पर रिमोट कॉल भी करता है, और यही वह जगह है जहां समस्या आती है। मेरा अनौपचारिक थ्रेडअफिनेटिव कार्यान्वयन क्रमबद्ध नहीं है और यह नहीं होना चाहिए। यहां तक कि अगर मैं इसे क्रमबद्ध करने के लिए चिह्नित करता हूं, तो रिमोट एप्लिकेशन को असेंबली तक पहुंच नहीं होती है जिसमें टाइप घोषित किया जाता है, इसलिए यह इसे deserialize करने में सक्षम नहीं होगा।
तो मैं अपने आवेदन (ऐपडोमेन) के भीतर कॉल संदर्भ डेटा कैसे साझा करूं लेकिन हर बाहरी एप्लिकेशन के साथ बात करने की आवश्यकता नहीं होती है?
मुझे पता है कि आपने अपनी समस्या का समाधान निकाला है, लेकिन मुझे हाल ही में जेकरी रिचटर की पुस्तक से एक्सेक्यूशन कॉन्टेक्स्ट का उपयोग करने के बारे में यह अंश मिला है। सप्रेसप्रेस लॉजिकल थ्रेड डेटा के प्रवाह को दबाने के लिए । मुझे नहीं पता कि यह आपके द्वारा वर्णित मामले में काम करेगा, लेकिन, यदि ऐसा होता है, तो यह अंततः आपके द्वारा किए गए कार्यों की तुलना में क्लीनर हो सकता है: http://blogs.msdn.com/b/microsoft_press/archive/2010 /01/27/jeffrey-richter-excerpt-from-clr-via-c-third-edition.aspx – wageoghe
वागाघे, जो वैकल्पिक समाधान के रूप में आशाजनक दिखता है। मैं यह सुनिश्चित करने के लिए एक रिमोटिंग परिदृश्य में इसका परीक्षण करना चाहता हूं। इसका नुकसान यह है कि इसे कॉलिंग कोड के अंदर प्रति कॉल आधार पर स्थापित किया जाना चाहिए।उपरोक्त समाधान अधिक पहलू उन्मुख है और कुछ तरीकों से क्लीनर है। –