वेब संदर्भ बनाम सेवा संदर्भ


110

मैंने अभी-अभी पेपाल के साथ एक बड़ी ईंट की दीवार को मारा। मैंने उनके WSDL का उपयोग करके कुछ रैपर कक्षाएं बनाने के लिए एक नियमित C # प्रोजेक्ट बनाया था।

यदि आप एक गैर-वेब प्रोजेक्ट बनाते हैं, तो आपको एक wsdl जोड़ने का एकमात्र विकल्प एक वेब सेवा संदर्भ है। और यह एक वेब संदर्भ के रूप में प्रॉक्सी कक्षाओं के एक ही सेट थोड़े बनाता है, लेकिन वास्तव में नहीं..यह अधिक जोड़ता है कि यहां तक ​​कि पेपैल के लोगों को भी पता नहीं है।

इसलिए मैं इस पूरे समय में सेवा (SoapBinding) के रूप में उपयोग करने के लिए प्रॉक्सी कक्षाओं की इस सूची में सही इंटरफ़ेस की तलाश PayPalAPIAASoapBindingकर रहा था और वहाँ नहीं था मैं संपर्क में हमारे पेपैल बिंदु को बताता रहा।

मैं केवल निम्नलिखित 2 इंटरफेस देख सकता था जो मुझे दिखाई देते थे कि मुझे क्या उपयोग करने की आवश्यकता है क्योंकि मैंने ऐसा नहीं देखा था PayPalAPIAASoapBindingजिसे आप वेब संदर्भ आधारित सेवा संदर्भ में देख सकते हैं:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

इसलिए मैंने सोचा कि ओह, मैंने संभवतः एक वेब संदर्भ में एक सेवा संदर्भ बनाम एक वेब संदर्भ बनाया है जो वेब परियोजना में एक विकल्प है। लेकिन मैं नहीं चाहता कि मेरी सेवा का संदर्भ मेरी वेब परियोजना के साथ युग्मित हो। इसलिए मैंने C # प्रोजेक्ट बनाया।

तो क्या बिल्ली सेवा संदर्भ बनाम वेब संदर्भ है? और अगर मैं सेवा संदर्भ मुझे एक लूप फेंकने जा रहा हूं और मुझे वेब संदर्भ की तुलना में अलग इंटरफेस का एक सेट देने जा रहा हूं, तो मुझे इसे एथेर प्रोजेक्ट में कैसे अलग करना चाहिए?

इसके अलावा, चीजों को और अधिक भ्रमित करने के लिए, वीएस 2008 में एक वेब सेवा अनुप्रयोग परियोजना है।

तो मैं क्या उपयोग करूं? हम .NET 3.5 फ्रेमवर्क का उपयोग कर रहे हैं और हम WCF में जाने के लिए तैयार नहीं हैं । तो क्या मैं अभी भी WCF या क्या नहीं का उपयोग करते हुए भी नए सेवा संदर्भ का उपयोग कर सकता हूं? यदि आप .NET 3.5 का उपयोग कर रहे हैं और अभी तक डब्ल्यूसीएफ का उपयोग नहीं कर रहे हैं और आप अभी भी बुनियादी वेब सेवाएं करना चाहते हैं, तो क्या आप अभी भी सेवा संदर्भ मार्ग पर हैं और डब्ल्यूसीएफ ढांचे का उपयोग नहीं करते हैं? इसका अर्थ है कि इसे अभी भी .NET 2.0 वेब संदर्भ की तरह इस्तेमाल किया जा सकता है, बस आप WSDL की एक पूरी तरह से अलग पीढ़ी प्राप्त करने जा रहे हैं।



2
8 साल बाद और अभी भी प्रासंगिक है।
माइक डेवेनी

जवाबों:


213

वेब संदर्भ जोड़ें पुरानी शैली, पदावनत ASP.NET webservices (ASMX) तकनीक है (केवल अपने सामान के लिए XmlSerializer का उपयोग करके) - यदि आप ऐसा करते हैं, तो आपको ASMX ग्राहक सेवा के लिए ASMX क्लाइंट मिलता है। आप इसे किसी भी परियोजना (वेब ​​ऐप, वेब साइट, कंसोल ऐप, विनफॉर्म - आप इसे नाम देते हैं) के बारे में कर सकते हैं।

सेवा संदर्भ जोड़ें WCF सेवा संदर्भ जोड़कर, इसे करने का नया तरीका है, जो आपको सादे सादे ASMX सामान की तुलना में बहुत अधिक उन्नत, बहुत अधिक लचीला सेवा मॉडल प्रदान करता है।

चूँकि आप WCF में जाने के लिए तैयार नहीं हैं, आप अभी भी पुराने शैली के वेब संदर्भ को जोड़ सकते हैं, यदि आपको वास्तव में यह करना है: जब आप "सेवा संदर्भ जोड़ें", जो संवाद आता है, उस पर क्लिक करें [उन्नत ] बटन बाएं कोने में:

वैकल्पिक शब्द

और आने वाले अगले संवाद पर, [नीचे वेब संदर्भ जोड़ें] बटन चुनें।


6
MS के लिए WCF संवाद बॉक्स में छिपाने के लिए यह कितना मूर्खतापूर्ण है! यहाँ भी प्लेसमेंट के साथ कोई मतलब नहीं है
पॉजिटिव

9
@coffeeaddict: ठीक है, मुझे लगता है कि एमएस आपको डिफ़ॉल्ट रूप से WCF का उपयोग करने की दिशा में आसानी से बोल रहा है - और केवल पुराने-शैली ASMX यदि आप वास्तव में निर्धारित कर रहे हैं :-)
marc_s

27
यदि आप Alt + PrtScn का उपयोग करते हैं, तो आप बस वर्तमान सक्रिय विंडो का एक स्नैप शॉट ले सकते हैं, इस तरह से आपको मैन्युअल रूप से बस वह नहीं दिखाना होगा जो आप दिखाना चाहते हैं: ओ)
अर्नेस्ट

क्या कंप्यूटर पर .NET 2.0 की भी आवश्यकता होगी? या .NET 4.0 .NET 2.0 आधारित "वेब संदर्भ" तकनीक को संभालने में सक्षम होगा? मैं जानना चाहता हूं क्योंकि मैं एक .NET 4.0 एप्लिकेशन में SOAP webservice को "वेब संदर्भ" के रूप में तैनात कर रहा हूं।
कंप्यूटर उपयोगकर्ता

1
@sparkyShorts: हाँ।
marc_s

9

अगर मैं आपके प्रश्न को सही समझूं:

WCF सेवा संदर्भ के बजाय .net 2.0 वेब सेवा संदर्भ जोड़ने के लिए, अपनी परियोजना पर राइट-क्लिक करें और 'सेवा संदर्भ जोड़ें' पर क्लिक करें।

फिर संवाद के निचले भाग में "उन्नत .." पर क्लिक करें।

फिर अगले डायलॉग के नीचे बाईं ओर "Add Web Reference .." पर क्लिक करें।

अब आप एक नियमित SOAP वेब संदर्भ जोड़ सकते हैं जैसे आप खोज रहे हैं।


क्या कंप्यूटर पर .NET 2.0 की भी आवश्यकता होगी? या .NET 4.0 .NET 2.0 आधारित "वेब संदर्भ" तकनीक को संभालने में सक्षम होगा? मैं जानना चाहता हूं क्योंकि मैं एक .NET 4.0 एप्लिकेशन में SOAP webservice को "वेब संदर्भ" के रूप में तैनात कर रहा हूं।
कंप्यूटर यूजर

4

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

यदि आप पूरी तरह से निश्चित हैं कि आप WCF के लिए तैयार नहीं हैं (वास्तव में पता नहीं क्यों) तो आपको एक नियमित वेब सेवा संदर्भ बनाना चाहिए।


3
क्योंकि WCF newbies के लिए आसान नहीं है। और इसके अलावा मेरे बॉस ने मुझे इसे स्थानांतरित करने की अनुमति नहीं दी असली कारण है। यह यहाँ कोड और रन है। जब आपके पास वह स्थिति होती है, तो मैं कली के बारे में कुछ नहीं कर सकता।
पॉजिटिव

7
@coffeeaddict मुझे लगता है कि आपको और आपके बॉस को गलत सूचना दी गई है। दोनों प्रकार के संदर्भ एक वर्ग बनाएंगे जो सेवा संचालन को कॉल करने के तरीके प्रदान करता है। यह कैसे प्रासंगिक है कि एक "सेवा" संदर्भ द्वारा बनाई गई कक्षा एक आधार वर्ग से विरासत में होती है जो एक पुस्तकालय में होती है जिसे माइक्रोसॉफ्ट कुछ तकनीक का हिस्सा मानता है जिसे वह डब्ल्यूसीएफ कहता है?
डैनियल प्रैट

1
क्या कंप्यूटर पर .NET 2.0 की भी आवश्यकता होगी? या .NET 4.0 .NET 2.0 आधारित "वेब संदर्भ" तकनीक को संभालने में सक्षम होगा? मैं जानना चाहता हूं क्योंकि मैं एक .NET 4.0 एप्लिकेशन में SOAP webservice को "वेब संदर्भ" के रूप में तैनात कर रहा हूं।
कंप्यूटर यूजर

3

अंत में दोनों एक ही काम करते हैं। कोड में कुछ अंतर हैं: वेब सेवाएँ परियोजना का रूट नामस्थान नहीं जोड़ती हैं, लेकिन सेवा संदर्भ परियोजना के नामस्थान में सेवा वर्ग जोड़ता है। ServiceSoapClientवर्ग एक अलग नामकरण, जो महत्वपूर्ण नहीं है हो जाता है। TFS के साथ काम करने में, मैं सेवा संदर्भ का उपयोग करूंगा क्योंकि यह स्रोत नियंत्रण के साथ बेहतर काम करता है। दोनों SOAP प्रोटोकॉल के साथ काम करते हैं।

मुझे सेवा संदर्भ का उपयोग करना बेहतर लगता है क्योंकि यह नया है और इस प्रकार बेहतर बनाए रखा जाएगा।

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