मैं वर्तमान में कुछ इस तरह स्थापित करने के लिए कोशिश कर रहा हूँ: WCF सेवा से कनेक्शन के लिए बाहर लटक और टीसीपी के माध्यम से सुनताएक WCF कॉलबैक चैनल खुला रखते हुए अनिश्चित काल के लिए ग्राहक से/पुनः कनेक्ट हो अगर यह दोष
- एक सर्वर साइड खिड़कियां एक ग्राहक पक्ष विंडोज सेवा।
- जब एक कनेक्शन प्राप्त होता है (ग्राहक सेवा पर चेकइन विधि कॉल) सेवा OperationContext.Current.GetCallbackChannel < टी >
- इस चैनल एक अद्वितीय कुंजी के साथ एक संग्रह में संग्रहीत किया जाता है (के माध्यम से एक कॉलबैक चैनल प्राप्त विशेष रूप से, मैंने कहा कॉलबैक इंटरफ़ेस, चैनल, और एक सूची <ClientConnection> एक संपत्ति जहां उन में से प्रत्येक है)
- कॉल अब है कि ग्राहक के आधार पर सेवा में पास करने के लिए सक्षम होना चाहिए में कुंजी संग्रहीत अद्वितीय कुंजी
यह काम करता है पहले, लेकिन थोड़ी देर के बाद बंद हो जाता है - मैं अब क्लाइंट को कॉल पास करने में सक्षम नहीं हूं। मुझे लगता है कि ऐसा इसलिए है क्योंकि कनेक्शन आंतरिक रूप से गिरा दिया गया है और मैं एक मृत कनेक्शन के साथ काम करने की कोशिश कर रहा हूं।
कि मन में, मैं निम्नलिखित प्रश्न हैं:
- मैं कैसे बता WCF मैं उन TCP कनेक्शन अनिश्चित काल के लिए रखने के लिए (या के लिए जब तक संभव हो) करना चाहते हैं?
- मैं क्लाइंट पक्ष से कैसे जांचूं, सर्वर से मेरा कनेक्शन अभी भी मान्य है या नहीं, इसलिए मैं इसे छोड़ सकता हूं और सर्वर से फिर से चेक कर सकता हूं यदि मेरा कनेक्शन तला हुआ है?
मैं गंदे समाधान के बारे में सोच सकता हूं, लेकिन मुझे उम्मीद है कि यहां कोई मुझे सही तरीके से बताएगा।
हर किसी के लिए बस थोड़ी सी जानकारी - हमने डब्ल्यूसीएफ का उपयोग हमारे समाधान के रूप में नहीं किया क्योंकि हम संभावित रूप से उच्च ट्रैफिक सर्वर एप्लिकेशन लिख रहे हैं और इससे निपटने के लिए बहुत सी चीजें थीं। हम कुछ प्रदर्शन मुद्दों में भाग गए, हमारे सर्वर ऐप बस कुछ बिंदु पर गिर गया। शायद फिक्स करने योग्य, लेकिन हम इसके बजाय RabbitMQ का उपयोग कर समाप्त हो गया। –
खरगोश एमक्यू के उल्लेख के लिए धन्यवाद, मैं उससे परिचित नहीं था। – PaulF