2010-01-28 7 views
95

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

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

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

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

PayPalAPIAAInterfaceClient 
PayPalAPIInterfaceClient 

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

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

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

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

+0

[वेब संदर्भ और सेवा संदर्भ के बीच अंतर] का संभावित डुप्लिकेट? (Http://stackoverflow.com/questions/308454/difference-between-web-reference-and-service-reference) –

उत्तर

187

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

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

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

alt text

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

+0

दिलचस्प, हम पोस्ट में चित्र कब जोड़ सकते हैं! अच्छा! आपने यूआरएल के माध्यम से किया होगा? – PositiveGuy

+5

एमएस के लिए डब्लूसीएफ संवाद बॉक्स में इसे छिपाने के लिए कितना बेवकूफ है! प्लेसमेंट के साथ – PositiveGuy

+9

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

4

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

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

+3

क्योंकि डब्ल्यूसीएफ के लिए आसान नहीं है newbies। और इसके अलावा मेरे मालिक मुझे जाने की अनुमति नहीं देंगे असली कारण है। यह कोड है और यहां चलाएं। जब आपके पास वह स्थिति हो, तो मैं इसके बारे में कुछ भी नहीं कर सकता। – PositiveGuy

+7

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

+1

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

6

तो मैं समझता हूँ कि आपके सवाल का सही:

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

फिर संवाद के नीचे बाईं ओर "उन्नत .." पर क्लिक करें।

फिर अगले संवाद के निचले बाएं भाग पर "वेब संदर्भ जोड़ें .." पर क्लिक करें।

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

+0

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

2

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

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