डब्ल्यूसीएफ सेवा बनाने के लिए डब्लूएसडीएल फ़ाइल का उपयोग कैसे करें (कॉल न करें)


100

मेरे पास एक पुरानी WSDL फ़ाइल है और मैं इस WSDL फ़ाइल के आधार पर एक सर्वर बनाना चाहता हूं।

WSDL एक ASMX से उत्पन्न होता है (मुझे लगता है लेकिन मुझे यकीन नहीं है)।

इसे कैसे प्राप्त किया जा सकता है ?


मूल प्रश्न जहां ओपी ने सोचा था कि उसे डब्लूएसडीएल के आधार पर ग्राहक बनाने की जरूरत है ।

जवाबों:


112

Svcutil का उपयोग करके, आप WSDL से इंटरफेस और कक्षाएं (डेटा अनुबंध) बना सकते हैं।

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

यह C # में "your.cs" नामक फ़ाइल (या VB.NET में "your.vb") बनाएगा जिसमें सभी आवश्यक वस्तुएं होंगी।

अब, आपको एक वर्ग "MyService" बनाने की आवश्यकता है जो सेवा इंटरफ़ेस (IServiceInterface) - या कई सेवा इंटरफेस को लागू करेगा - और यह आपका सर्वर उदाहरण है।

अब खुद से एक वर्ग वास्तव में अभी तक मदद नहीं करता है - आपको कहीं न कहीं सेवा की मेजबानी करने की आवश्यकता होगी। आपको या तो अपना स्वयं का ServiceHost उदाहरण बनाने की आवश्यकता है जो सेवा को होस्ट करता है, समापन बिंदुओं को कॉन्फ़िगर करता है और इसके बाद - या आप IIS के अंदर अपनी सेवा की मेजबानी कर सकते हैं।


मैं svcutil के साथ एक ही कोशिश की, लेकिन वास्तव में दोष के साथ सफल नहीं हुआ। क्या आपको शायद मेरी समस्या के बारे में कुछ सुझाव हैं: goo.gl/dlen
Juri

15
"svcutil your.wsdl your.xsd" वह है जो मुझे काम करने के लिए चाहिए था! धन्यवाद!
टिम लुईस

3
Wsdl और xsd को एक प्रारूप में डाउनलोड करने के बारे में जानकारी के लिए इस SO उत्तर की जाँच करें, जिसे svcutil पसंद करेगा। stackoverflow.com/questions/286657/…
Brett Widmeier

@marc_s जब मैं अपनी WSDL फ़ाइल के साथ इसका उपयोग करता हूं, तो यह कुछ तत्वों को बहुत ही अजीब तरीके से नाम बदलने लगता है, जैसे कि मेरे सर्वर में आने वाले अनुरोध भी स्वीकार नहीं किए जाएंगे। क्या यह सामान्य है?
अरज

@ अर्जुन: नहीं - ऐसा लगता है कि आपको सभी प्रासंगिक तथ्यों को एक साथ रखने की जरूरत है, और स्टैकवर्फ्लो पर एक प्रश्न पूछें ! :-)
marc_s

41

वहाँ अच्छे संसाधन हैं अगर आप जानते हैं कि क्या खोजना है। "अनुबंध पहले" और WCF का प्रयास करें। या "डब्ल्यूएसडीएल फर्स्ट" और डब्ल्यूसीएफ।

यहाँ एक चयन है:


3
WSDL-First लेख के मूल अवलोकन का अनुसरण करने वाले किसी व्यक्ति के लिए : उस टिप्पणी पर ध्यान दें, जिसके बारे में बात करता है ReplyAction="*"। ऐसा प्रतीत होता है कि आपको इससे छुटकारा पाने की आवश्यकता है। उस टिप्पणी से स्पष्टीकरण का एक निशान है जो तर्क देता है, लेकिन मैंने इसे नहीं पढ़ा है।
डैन-जीएफ

30

/scWCF अनुबंध उत्पन्न करने के लिए स्विच के साथ svcutil.exe का उपयोग करें । यह एक कोड फ़ाइल बनाएगा जिसे आप अपने प्रोजेक्ट में जोड़ सकते हैं। इसमें आपकी सेवा बनाने के लिए आवश्यक सभी इंटरफेस और डेटा प्रकार होंगे। /oस्विच का उपयोग करके आउटपुट स्थान बदलें , या आप उस फ़ोल्डर में फ़ाइल पा सकते हैं जहां आपने svcutil.exe चलाया था। डिफ़ॉल्ट भाषा C # है, लेकिन मुझे लगता है कि (मैंने कभी कोशिश नहीं की है) आपको इसका उपयोग करने में सक्षम होना चाहिए /l:vb

svcutil /sc "WSDL file path"

यदि आपकी WSDL में कोई सहायक XSD फाइलें हैं, तो उन्हें WSDL के बाद तर्क के रूप में पास करें।

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

फिर एक नया वर्ग बनाएं जो आपकी सेवा है और आपके द्वारा बनाए गए अनुबंध इंटरफ़ेस को लागू करें।


इसे भी देखें: किसी और के WSDL
sq33G

7

आप क्लाइंट कोड जनरेट करने के लिए svcutil.exe का उपयोग कर सकते हैं। इसमें सेवा अनुबंध और किसी भी डेटा अनुबंध और गलती अनुबंध की परिभाषा शामिल होगी।

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


4

विजुअल स्टूडियो में "सेवा संदर्भ जोड़ें" टूल का उपयोग करके, आप निम्न पते को सम्मिलित कर सकते हैं:

फ़ाइल: ///path/to/wsdl/file.wsdl

और यह ठीक से लोड होगा।

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