2009-12-24 12 views
6

मैंने हाल ही में एक डब्ल्यूसीएफ सेवा के साथ तर्कों के साथ ऑपरेशन अनुबंध घोषित कर दी है।डब्ल्यूसीएफ में खराब या अच्छे में 'रेफरी' तर्क हैं?

मुझे नहीं पता कि यह डिज़ाइन निर्णय क्यों लिया गया था (ऑपरेशन शून्य है), लेकिन इसके अलावा, मैं अपने डब्ल्यूसीएफ ज्ञान से - यह कहने में सक्षम नहीं हूं कि यह एक अच्छा अभ्यास है या नहीं। या अगर यह प्रासंगिक नहीं है।

आपको क्या लगता है?

उत्तर

4

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

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

सर्वर फिर संदेशों को पैरामीटर के एक सेट में deserializes, और सर्वर पर प्रेषक घटक सेवा वर्ग को तत्काल कर देगा और उस सेवा वर्ग उदाहरण पर उचित विधि को संदेश के पैरामीटर के साथ कॉल करेगा।

पूरी कहानी सर्वर के जवाब के जवाब के लिए पीछे की ओर काम करती है।

लेकिन फिर से: आप सभी क्लाइंट और सर्वर के बीच आदान-प्रदान कर रहे हैं एक धारावाहिक संदेश - बिल्कुल एक पैरामीटर "रेफरी द्वारा" बनाने का कोई मतलब नहीं है - यह संभवतः, एक उप-रेफरी पैरामीटर नहीं हो सकता है अंत में। सर्वर और क्लाइंट पूरी तरह से अलग दुनिया, पूरी तरह से अलग वस्तुओं और वर्ग हैं - वे सिर्फ तार पर एक ही दिखते हैं।

तो मुझे लगता है कि जो भी लिखा है कि डब्लूसीएफ विधि डब्ल्यूसीएफ संदेश के सिद्धांतों को समझ नहीं पा रहा है, लेकिन जिस तरह से डब्ल्यूसीएफ महसूस करता है - बस एक विधि कॉल की तरह लुप्त हो गया था। लेकिन यह वास्तव में अंत में सिर्फ एक विधि कॉल नहीं है।

+4

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

+0

@MatteoSp: यह सुनना बहुत दिलचस्प है! मैंने कभी भी कोशिश करने पर परेशान नहीं किया, क्योंकि मुझे पता था कि मुझे विश्वास था कि यह कभी काम नहीं करेगा - बेहतर इसे अपने आप आज़माएं! :-) अभी भी सवाल पूछता है कि यह वास्तव में एक अच्छा विचार है, हालांकि .... –

+3

@marc_s थोड़ा देर हो चुकी है, लेकिन डब्लूसीएफ बाय-डिफॉल्ट आरपीसी शैली है। आखिरकार हम किसी ऑब्जेक्ट (प्रॉक्सी) पर एक विधि बुला रहे हैं और जादू द्वारा विधि सर्वर पर चलती है। 'मैसेजिंग' शैली का उपयोग करने के लिए हमें संदेश अनुबंधों का उपयोग करने की आवश्यकता है जो हमें एसओएपी संदेश का पूरा नियंत्रण देते हैं। – thewpfguy

5

बहरहाल, यह माइक्रोसॉफ्ट अनुच्छेद के अनुसार एक WCF कॉल वास्तव में एक दूरस्थ प्रक्रिया कॉल की तरह बर्ताव और ByRef तर्क डेटा लौटाने के लिए इस्तेमाल किया जा सकता: -

http://msdn.microsoft.com/en-us/library/ms733070.aspx

अनुभाग देखें: बाहर और रेफरी पैरामीटर

ज्यादातर मामलों में, आप मानकों में (ByVal विजुअल बेसिक में) बाहर और रेफरी मानकों (विजुअल बेसिक में ByRef) का उपयोग कर सकते हैं और। चूंकि दोनों और रेफ पैरामीटर इंगित करते हैं कि डेटा को ऑपरेशन से वापस कर दिया गया है, ऑपरेशन हस्ताक्षर जैसे कि निम्न निर्दिष्ट करता है कि अनुरोध/उत्तर ऑपरेशन आवश्यक है, भले ही ऑपरेशन हस्ताक्षर शून्य हो।

1

मैं marc_s के साथ हूं।

आपको बहुत सावधान रहने की आवश्यकता है।

डब्ल्यूसीएफ हमेशा उस वस्तु का एक नया उदाहरण आवंटित करेगा, यह न केवल इसकी सामग्री को बदल देगा।

जैसा कि mars_s पहले ही समझाया गया है wcf एक मैसेजिंग-फ्रेमवर्क है। इसकी प्रकृति इंडिपेंडेंट संदेशों को भेजने और प्राप्त करने के लिए है।

मुझे लगता है कि एक अच्छा अभ्यास हमेशा एक/और एक संदेश को परिभाषित करना है। आपका सीरिका-इंटरफ़ेस समझना और बनाए रखना आसान होगा।

रेफरी और आउट-पैरामीटर के साथ विधियों को हमेशा बहुत बदसूरत और समझने में कठिनाई होती है।

संबंधित मुद्दे