2008-09-12 15 views
10

डुप्लेक्स कॉलबैक के लिए WSDualHttp बाइंडिंग का उपयोग वास्तविक दुनिया परिदृश्यों में काम करेगा? कहें, मेरे पास एक .NET अनुप्रयोग है जो एक यादृच्छिक बंदरगाह का उपयोग करता है, क्या सेवा कॉलबैक के लिए ग्राहक के मूल पते और पोर्ट को हल करने में सक्षम होगी?डुप्लेक्स कॉलबैक के लिए WSDualHttp बाइंडिंग

उत्तर

35

आपके प्रश्न का एक पूरा उत्तर "असली दुनिया परिदृश्य" या तो एक इंट्रानेट या इंटरनेट परिदृश्य पर निर्भर करता है। हालांकि WSDualHttpBinding दोनों स्थितियों में काम करता है वहाँ के बारे में पता होना करने के लिए विशेष कर रहे हैं:

इंट्रानेट

WSDualHttpBinding एक इंट्रानेट परिदृश्य में एक पहले से कॉन्फ़िगर कस्टम बंदरगाह का उपयोग कर अपने .NET अनुप्रयोग और के साथ काम करेंगे "हाँ" सेवा होगी कॉलबैक के लिए ग्राहक के मूल पते और बंदरगाह को हल करने में सक्षम: बिल्कुल नीचे कैसे समझाया गया है। नीचे बताए गए कारण यह है कि WSDualHttp बाइंडिंग मुख्य रूप से इंटरनेट पर उपयोग करने के लिए डिज़ाइन की गई है।

इंट्रानेट परिदृश्य में डुप्लेक्स कॉलबैक जब आप क्लाइंट और सर्वर दोनों पर डब्ल्यूसीएफ का उपयोग कर सकते हैं तो नेटटीसीपी बाइंडिंग या नेट नामांकित पाइप बाइंडिंग का उपयोग कर सबसे अच्छा हासिल किया जाता है। ये बाइंडिंग टीसीपी और आईसीपी का क्रमशः परिवहन (HTTP की बजाय) और कस्टम बाइनरी एन्कोडिंग के रूप में उपयोग करती हैं, यही कारण है कि डब्ल्यूसीएफ दोनों तरफ आवश्यक है। क्लाइंट को कॉल-बैक के लिए बाध्यकारी के माध्यम से सेवा से कनेक्ट करने के लिए उपयोग किया जाने वाला एक ही चैनल फिर से उपयोग किया जाता है, बिना किसी नए बंदरगाह को खोलने के लिए।

इंटरनेट

एक इंटरनेट परिदृश्य मान्य HTTP अनुरोध और प्रतिक्रियाओं केवल एक ही दिशा में यात्रा में, HTTP में वन-वे प्रोटोकॉल के रूप में बनाया गया है। WSDualHttp बाइंडिंग डब्ल्यूसीएफ का उपयोग करते समय कॉलबैक के लिए एक अलग HTTP चैनल बनाता है। आपके दूसरे प्रश्न के उत्तर में: क्लाइंट को इस कॉल-बैक के लिए गंतव्य पता क्लाइंट मशीन होस्टनाम और पोर्ट 80 डिफ़ॉल्ट रूप से बना है। यदि ग्राहक उदाहरण के लिए एक विकास मशीन है और आईआईएस स्थापित है, तो पोर्ट 80 विशेष रूप से कुछ परिदृश्यों में आरक्षित होगा जो आपके प्रोटोटाइप एप्लिकेशन के साथ संघर्ष का कारण बनेंगे। यह this blog post है जिसके लिए समाधान और क्लाइंटबेस एड्रेस संपत्ति को मदद करने के लिए डिज़ाइन किया गया है। भले ही आप किस पोर्ट के साथ जाते हैं - डिफ़ॉल्ट या कस्टम एक, आपको यह सुनिश्चित करना होगा कि दोनों पक्षों पर सभी फ़ायरवॉल और राउटर सही तरीके से कॉन्फ़िगर किए गए हैं ताकि आउटगोइंग चैनल और अलग कॉलबैक चैनल दोनों को स्थापित किया जा सके।

एक .NET एप्लिकेशन सिल्वरलाइट एप्लिकेशन को भी इंगित कर सकता है। क्योंकि तथ्य यह है कि एक Silverlight आवेदन एक ब्राउज़र में चल नया भेजे HTTP कनेक्शन स्वीकार नहीं कर सकते, WSDualHttpBinding साथ यह अलग बैक चैनल से काम नहीं चलेगा है की। इसलिए PollingDuplexHttpBinding सिल्वरलाइट 2 जो एक चतुर 'चाल' तथ्य यह है कि HTTP के लिए एक बैक चैनल के रूप में एक लंबे समय (लंबी मतदान) के लिए खुला अनुरोध चैनल रखने और इसे का उपयोग करके दिशाहीन है चारों ओर पाने के लिए के बारे में सोचा जा सकता है में सबसे पहले बनाया गया था ग्राहक को वापस कॉल करता है। यह दोनों क्लाइंट और सर्वर साइड पर प्रभाव विशेष रूप से स्केलिंग कृपया this post from my blog देखना और अधिक विस्तार के लिए, के लिए प्रासंगिक की एक संख्या है।

अपने विशेष "वास्तविक दुनिया परिदृश्य" और अपने उपयोग-मामले की एक विचार के साथ

उम्मीद है कि यह आप द्वैध कॉलबैक के लिए उपयोग करने के लिए सही बाध्यकारी बाहर काम में मदद मिलेगी।

+0

बहुत जानकारीपूर्ण +1 –

2

यदि यह फ़ायरवॉल के पीछे एक अनुप्रयोग है, सैद्धांतिक रूप से हां। यह "असली दुनिया" से आपका क्या मतलब है इस पर निर्भर करता है; अगर इसका मतलब है कि "उच्च प्रदर्शन" शायद नेट टीसीपी बाइंडिंग एक बेहतर अपरिवर्तनीय है।