यहाँ (कम से कम का हिस्सा) NHibernate के "संदर्भ" कार्यान्वयन के लिए एक लिंक है:
https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Context/
यह बिल्कुल जहां या कैसे इस NHibernate के संदर्भ में खेलने में आता है मेरे लिए स्पष्ट नहीं है। यही है, अगर मैं "संदर्भ" में कुछ मूल्यों को स्टोर करना चाहता हूं तो क्या मुझे एनएचबेर्नेट से "संदर्भ" मिलेगा और मेरे मूल्य जोड़ देंगे? मैं NHibernate का उपयोग नहीं करता, इसलिए मुझे वास्तव में पता नहीं है।
मुझे लगता है कि यदि आप इस प्रकार के कार्यान्वयन के लिए उपयोगी होंगे तो आप खुद को देख और निर्धारित कर सकते हैं। स्पष्ट रूप से विचार आवेदन के प्रकार (एएसपी.नेट, डब्ल्यूसीएफ, आदि) के आधार पर इच्छित कार्यान्वयन को इंजेक्ट करना होगा। यह शायद कुछ विन्यास का तात्पर्य है (शायद आईसीएफ का उपयोग करने के लिए एमईएफ का उपयोग करने के लिए न्यूनतम "आईसीआरेंटेंट सत्र कॉन्टेक्स्ट इंटरफेस)।
किसी भी दर पर, मैं इस विचार दिलचस्प है जब मैं यह कुछ समय पहले मिला जबकि, CallContext.SetData/GetData/LogicalSetData/LogicalGetData
के बारे में जानकारी के लिए खोज Thread.SetData/GetData
, [ThreadStatic]
, पाया आदि
इसके अलावा, बजाय CallContext.SetData
CallContext.LogicalSetData
के आपके उपयोग के आधार पर, मैं मान लीजिए कि आप इस तथ्य का लाभ उठाना चाहते हैं कि लॉजिकल थ्रेड से जुड़ी जानकारी को जानकारी के स्टोर के लिए "थ्रेड सुरक्षित" स्थान चाहते हैं, इसके विपरीत बाल धागे को प्रचारित किया जाएगा।इसलिए, यदि आप अपने ऐप के स्टार्टअप में परिवेश सक्रियता सेट करना चाहते हैं और फिर किसी और गतिविधि को धक्का नहीं देते हैं, तो बाद के थ्रेड भी उसी गतिविधि का हिस्सा होंगे क्योंकि लॉजिकलसेटडेटा के माध्यम से संग्रहीत डेटा को बाल धागे द्वारा विरासत में मिलाया जाता है।
अगर आपने इस सवाल से पहले कुछ भी सीखा है, तो आपने इसके बारे में सुनने में बहुत दिलचस्पी होगी। यहां तक कि यदि आपने नहीं किया है, तो भी मुझे इस संदर्भ में रुचि होगी कि आप संदर्भ के साथ क्या कर रहे हैं।
फिलहाल, मैं लॉगिंग/ट्रेसिंग के लिए कुछ संदर्भ जानकारी बनाए रखने पर काम कर रहा हूं (Trace.CorrelationManager.ActivityId और Trace.CorrelationManager.LogicalOpertionStack और log4net/NLog संदर्भ समर्थन के समान)। मैं किसी ऐप या डब्ल्यूसीएफ सेवा में उपयोग के लिए कुछ संदर्भ (वर्तमान ऐप, वर्तमान ऐप इंस्टेंस, वर्तमान गतिविधि (शायद नेस्टेड)) को सहेजना चाहता हूं और मैं इसे डब्ल्यूसीएफ सेवा सीमाओं में "स्वचालित रूप से" प्रचारित करना चाहता हूं। यह क्लाइंट/गतिविधि/आदि द्वारा सहसंबंधित करने के लिए केंद्रीय भंडार में लॉगिंग कथन लॉग इन करने की अनुमति है। हम एक विशिष्ट अनुप्रयोग के एक विशिष्ट उदाहरण द्वारा सभी लॉगिंग बयानों के लिए पूछताछ और सहसंबंध करने में सक्षम होंगे। लॉगिंग स्टेटमेंट क्लाइंट या एक या अधिक डब्ल्यूसीएफ सेवाओं में उत्पन्न हो सकता था।
गतिविधि आईडी का डब्ल्यूसीएफ प्रचार हमारे लिए जरूरी नहीं है क्योंकि हम केवल गतिविधि गतिविधि से प्रचार करना चाहते हैं (या हम सोचते हैं)। साथ ही, हम सिल्वरलाइट क्लाइंट्स से डब्ल्यूसीएफ सेवाओं और ट्रेस में इस जानकारी का प्रचार करना चाहते हैं। कॉरपोरेशन मैनेजर सिल्वरलाइट में उपलब्ध नहीं है (कम से कम 4.0 में नहीं, शायद ऐसा कुछ भविष्य में उपलब्ध होगा)।
वर्तमान में मैं IClientMessageInspector और IDispatchMessageInspector का उपयोग करके हमारी "संदर्भ" जानकारी के प्रसार को प्रोटोटाइप कर रहा हूं। ऐसा लगता है कि यह शायद हमारे लिए ठीक काम करेगा।
System.Web पर निर्भरता के संबंध में, एनएचबीर्नेट कार्यान्वयन में "प्रतिबिंबित एचटीपी कॉन्टेक्स्ट" होता है जो एचटीपीकॉन्टेक्स्ट तक पहुंचने के लिए प्रतिबिंब का उपयोग करता है, इसलिए System.Web पर कोई प्रोजेक्ट निर्भरता नहीं होगी। जाहिर है, सिस्टम.Web को उपलब्ध होना होगा जहां ऐप को तैनात किया गया है यदि HttpContext को उपयोग करने के लिए कॉन्फ़िगर किया गया है।
मेरे पास प्रस्ताव देने के लिए बहुत कुछ नहीं है, लेकिन मुझे इस मुद्दे में भी रूचि है। एफडब्लूआईडब्लूडब्ल्यू मुझे कुछ स्रोत भंडार (शायद कैसल, एन इंजेक्ट, या एनएचबीरनेट) में देखकर याद है, आईसीएन्टेक्स्ट जैसे कुछ के कई कार्यान्वयन जो मुझे लगता है कि एक ऐप में DI'd किया गया है। प्रत्येक आईसीएन्टेक्स्ट कार्यान्वयन ने एक अलग तकनीक का उपयोग किया (कॉलकॉन्टेक्स्ट, एचटीपी कोंटेक्स्ट, थ्रेड.SetData, आदि)। मैं बिल्कुल नहीं जानता कि उनका उपयोग कैसे किया जाना था, लेकिन मेरा पहला विचार यह था कि यह "संदर्भ" सार था। वैसे भी, मैं देख सकता हूं कि मुझे क्या मिल सकता है जो मैंने पहले पाया और एक लिंक पोस्ट किया। यह उपयोगी हो सकता है। – wageoghe