वेब संदर्भ और सेवा संदर्भ के बीच अंतर?


132

WCF में वेब संदर्भ और सेवा संदर्भ के बीच अंतर क्या है? डब्ल्यूसीएफ में कौन बेहतर है?


चैनल फैक्टरियों - stackoverflow.com/questions/1698275/…
मनीष जैन

1
हम्म, शायद एक जवाब का चयन करें? जिस तरह से अच्छा सवाल है
Daniël Tulp

जवाबों:


102

यहां निम्न-स्तरीय उत्तर यह है कि एक वेब संदर्भ एक क्लाइंट प्रॉक्सी क्लास बनाएगा जो आपके कोड को WSDL के माध्यम से वर्णित वेब सेवा से बात करने की अनुमति देता है और SOAP या HTTP GET के माध्यम से संचार करता है (अन्य पोस्टरों से संकेत मिलता है कि यह केवल ASMX है, लेकिन वेब सन्दर्भ जावा-आधारित वेब सेवाओं या पायथन-आधारित या रूबी से इतनी देर तक बात कर सकते हैं जब तक वे सभी WSDL से बात करते हैं और WS-I अंतर-मानक के अनुरूप होते हैं)।

एक सेवा संदर्भ एक क्लाइंट प्रॉक्सी क्लास बनाएगा जो WCF- आधारित सेवा के साथ संचार करता है: इस बात की परवाह किए बिना कि WCF सेवा एक वेब सेवा है या नहीं।


1
+1 करने के लिए कि किसी भी मानक वेब सेवा को एक अच्छी तरह से स्वरूपित WSDL मानदंड से मिलता है
sidney.andrews 12

तो क्या मैं एक जावा आधारित वेब सेवा के लिए एक सेवा संदर्भ जोड़ सकता हूं? क्या यह अभी भी समझ में आएगा? चूंकि जावा wcf स्टैक के बारे में कुछ नहीं जानता ...
user20358

हां, आप एक जावा आदि वेब सेवा के लिए एक सेवा संदर्भ जोड़ सकते हैं, अगर इसमें wsdl है। सेवा संदर्भ इस मामले में "क्लासिक" वेब संदर्भ की तरह व्यवहार करेगा।
ब्रैडी मोरित्ज़

+1 यह बताने के लिए कि वेब सेवा WSDL- वर्णित वेब सेवाओं, साथ ही ASMX का उपभोग कर सकती है। तथ्य की बात के रूप में, मेरे पास एक व्यावसायिक परत है जिसमें एक वेब संदर्भ और एक सेवा संदर्भ है। वेब संदर्भ WSDL वेब सेवा का उपभोग करता है, जबकि सेवा संदर्भ ASMX सेवा का उपभोग करता है।
जगद

67

एक वेब संदर्भ आपको किसी भी तकनीक पर आधारित किसी भी सेवा के साथ संवाद करने की अनुमति देता है जो WS-I बेसिक प्रोफाइल 1.1 को लागू करता है, और संबंधित मेटाडेटा को WSDL के रूप में उजागर करता है। आंतरिक रूप से, यह क्लाइंट की तरफ ASMX संचार स्टैक का उपयोग करता है।

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

ध्यान दें कि ये दोनों परिभाषाएँ काफी व्यापक हैं, और दोनों में ऐसी सेवाएँ शामिल हैं जो .NET में नहीं लिखी गई हैं।

यह पूरी तरह से संभव है (हालांकि अनुशंसित नहीं है) एक वेब संदर्भ जोड़ने के लिए जो डब्ल्यूसीएफ सेवा को इंगित करता है, जब तक कि डब्ल्यूसीएफ समापन बिंदु basicHttpBindingया कुछ संगत कस्टम संस्करण का उपयोग करता है ।

सेवा संदर्भ जोड़ना संभव है जो ASMX सेवा की ओर इशारा करता है। नया कोड लिखते समय, आपको हमेशा एक सेवा संदर्भ का उपयोग करना चाहिए , क्योंकि यह अधिक लचीला और भविष्य-प्रमाण है।


1
क्या कोई मुझे सेवा संदर्भ के माध्यम से सेवा का उपभोग करने के बारे में बता सकता है? वेब संदर्भ के साथ, मुझे हमेशा लगता है कि मैं किसी प्रकार की सेवा वस्तु में मुख्य कार्य ढूंढ सकता हूँ। एक सेवा संदर्भ के साथ, इतना नहीं। एक उदाहरण के रूप में, मैं विभिन्न FedEx शिपिंग विकल्पों के लिए मूल्य प्राप्त करने के लिए FedEx दरों सेवा का उपयोग करने का प्रयास कर रहा हूं। मुझे पता है कि वहाँ एक getRates () कहीं कॉल है, लेकिन मैं इसे सेवा संदर्भ के साथ नहीं ढूँढ सकता।
बेन मिल्स

@BenMills: एक Clientप्रत्यय के साथ एक वर्ग के लिए देखो ।
क्रिश्चियन हैटर

17

सेवा संदर्भ WCF सेवाओं के सभी प्रकार के संदर्भ जोड़ने के लिए नया इंटरफ़ेस है (वे वेब सेवाएँ नहीं हो सकते हैं) जबकि वेब संदर्भ विशेष रूप से ASMX वेब संदर्भों से संबंधित है।

आप सेवा के संदर्भ में उन्नत विकल्पों के माध्यम से वेब संदर्भों का उपयोग कर सकते हैं (यदि मैं सही ढंग से याद करता हूं)।

मैं सेवा संदर्भ का उपयोग करूंगा क्योंकि जैसा कि मैं समझता हूं, यह दोनों का नया तंत्र है।


8
सेवा संदर्भ जोड़ें -> उन्नत -> वेब संदर्भ जोड़ें ... अनजाने समाधानों की तरह कुछ भी नहीं।
जगद

7

सेवा संदर्भ एंडपॉइंट और बाइंडिंग के साथ सौदा करते हैं, जो पूरी तरह से विन्यास योग्य हैं। वे आपको किसी भी परिवहन प्रोटोकॉल (HTTP, टीसीपी, साझा मेमोरी आदि) के माध्यम से अपने क्लाइंट प्रॉक्सी को डब्ल्यूसीएफ के लिए इंगित करते हैं।

वे WCF के साथ काम करने के लिए डिज़ाइन किए गए हैं।

यदि आप एक WebProxy का उपयोग करते हैं, तो आप HTTP पर WCF का उपयोग करने के लिए अपने आप को बहुत बाध्यकारी हैं


5

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.