Identifying clients in a WCF service -


मेरे पास एक कार्यशील डुप्लेक्स WCF सेवा है WSDualHttpBinding के साथ। मेरी समस्या एक अद्वितीय आईडी के साथ कॉलबैक चैनल को स्टोर करने का एक तरीका ढूँढ़ रही है I सेवा का उद्देश्य लंबे समय से चलने वाला है क्या मैं बस ऑपरेशनकॉन्टेक्स्ट। कंटेंट। गेटकॉल्बैक चैनल () रिटर्न मान को प्राप्त कर सकता हूँ जब "सदस्यता लें" विधि को एक सूची या शब्दकोश में संग्रहीत किया जाता है? क्या कनेक्शन की ज़िंदगी तक वैध होने की गारंटी है?

ग्राहक के पास सबसे आसान तरीका होगा अपनी सेवा की सदस्यता पद्धति में एक महत्वपूर्ण मूल्य प्रस्तुत करें। फिर आप एक शब्दकोश में कॉलबैक चैनल को सहेज सकते हैं इस शब्दकोश को शायद एक स्थिर वैरिएबल या सिंगलटन क्लास होना चाहिए, जिसका जीवन काल सेवा वर्ग की उम्र से अधिक है क्योंकि अधिकांश सेवा वर्ग के पास प्रति जीवनकाल रहता है और सर्विस कॉल पूरा होने के बाद इसका निपटान होता है। थ्रेडिंग के मुद्दों से सावधान रहें!

कॉलबैक चैनल किसी भी समय क्लाइंट या सेवा पक्ष पर दोषपूर्ण हो सकता है। सेवा को दोषपूर्ण चैनल की संभावना को संभालना होगा और दोषपूर्ण चैनल को शब्दकोश से निकालना होगा। WSDuallHttpBinding एक "स्टेटलेस" बाइंडिंग है, इसलिए क्लाइंट में किसी भी गलती को सेवा पक्ष पर नहीं खोजा जाएगा, जब तक कि सेवा पक्ष उन्हें कॉल करने का प्रयास नहीं करता। यदि ग्राहक गलती की स्थिति में आ जाता है तो नेटटसीपबिंगिंग चैनलफ़ॉल्टेड इवेंट को बढ़ा देगा। इस कारण से मैं नेटटसीप बाइंडिंग की सिफारिश करता हूं यदि यह आपकी आवश्यकताओं को फिट करता है।

  सार्वजनिक बूल सदस्यता लें (स्ट्रिंग आईडी) {आईसीएलएलैक कॉलबैक = ऑपरेशनकॉन्टेक्स। वर्तमान। गेटकॉल्बैक चैनल (); अगर (! _active कॉलबैक चैनल। कंटन (आईडी)) {_active Callback चैनल। जोड़ें (आईडी, कॉलबैक); वापस सच; } अन्य {वापसी झूठी; }}    

Comments

Popular posts from this blog

php - Creating canonical URLs with custom route-classes -

mysql - Formatting problem with PHP DateTime Difference when used as part of an equation -

Mysql Local server hardware -