2010-07-01 17 views
5

के साथ वेब सेवा और क्लाइंट बनाना I xsd schema फ़ाइल से आयातित साझा प्रकारों के साथ दो wsdl फ़ाइलें बनाई हैं।साझा प्रकार

इसके बाद मैंने पैरामीटर/सर्वर इंटरफेस के साथ wsdl.exe उपकरण द्वारा उत्पन्न इंटरफ़ेस का उपयोग करके वेब सेवाएं बनाई हैं।

फ्रिस्ट वेब सेवा, वेब विधि "रजिस्टरडाटा" है जिसमें कुछ जटिल ऑब्जेक्ट को "ए" द्वारा संसाधित करने के लिए कतार में रखा गया है। इस विधि के परिणामस्वरूप बूलियन लौटाया गया है (हमें बताएं कि ऑब्जेक्ट सफल पंजीकृत था)।

दूसरी वेब सेवा, इस विधि के आधार पर सिस्टम "बी" में कुछ डेटा अपडेट करने के लिए वेब विधि "अपडेटडाटा" है, सिस्टम "ए" पर प्रक्रिया में बदल दिया गया था।

इसलिए सिस्टम "ए" में मुझे दूसरी वेब सेवा के लिए क्लाइंट बनाना है, जहां मैं इस संशोधित जटिल ऑब्जेक्ट के साथ "अपडेटडेटा" विधि को कॉल करूंगा।

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

मैं पहली वेब सेवा और दूसरा वेब सेवा क्लाइंट बनाना चाहता हूं, जहां मैं उनके बीच इसी प्रकार की वस्तु का उपयोग कर सकता हूं।

सहायता के लिए बहुत बहुत धन्यवाद।

उत्तर

4

मुझे विश्वास नहीं है कि यह एएसएमएक्स वेब सेवाओं के साथ संभव है।

डब्ल्यूसीएफ इसका समर्थन करता है, हालांकि।


WCF लिंक:


वास्तव में, मुझे लगता है कि मैं अपने प्रश्न पढ़ने में भूलना हो सकता है। हालांकि आप क्लाइंट और सर्वर के बीच समान प्रकार साझा करने की कोशिश कर रहे थे। एएसएमएक्स ऐसा नहीं कर सकता है। हालांकि, ऐसा प्रतीत होता है कि आप दो क्लाइंट प्रॉक्सी के बीच समान प्रकार साझा करने की कोशिश कर रहे हैं। आप आसानी से WSDL.EXE उपकरण का उपयोग कर ऐसा कर सकते हैं।

एक स्कीमा, DataTypes.xsd, और दो WSDL फ़ाइलों को आयात करें जो इसे आयात करते हैं, ServiceA.wsdl और ServiceB.wsdl पर विचार करें। सर्वर इंटरफेस बनाने के लिए, का उपयोग करें:

wsdl/serverInterface /n:SharedTypes.Servers /out:Services.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd

इस इंटरफेस पैदा करेगा जो आप अपनी सेवाओं को बनाने के लिए लागू कर सकते हैं। ये इंटरफेस डेटाटाइप.एक्सएसडी से बनाए गए वर्गों के एक सेट का उपयोग करेंगे। प्रॉक्सी कक्षाएं बनाने के लिए, बस का उपयोग करें:

wsdl /n:SharedTypes.Proxies /out:Proxies.cs ServiceA.wsdl ServiceB.wsdl डेटाटाइप्स।xsd

ध्यान दें कि आपको /sharedTypes स्विच की आवश्यकता नहीं है। इसका एक अलग उद्देश्य है। जब आप डब्ल्यूएसडीएल और सेवा से किसी भी एक्सएसडी को डाउनलोड करने की आवश्यकता होती है तो यह बाहरी सेवाओं के प्रकारों के संयोजन के लिए है।

मैंने आपके जैसे उदाहरण, सर्विस ए को एक कतार में एक संदेश पोस्ट करने का प्रयास किया है, और एक क्लाइंट उस संदेश को उठा रहा है और इसे सेवा बी पर भेज रहा है। यह काफी अच्छी तरह से काम करता है।

+0

आप किसी भी उदाहरण या इस विधि के बारे में कोई लेख मिल गया है? – Siekiera

0

मैं सहमत हूं कि वीएस वेब संदर्भ कार्यक्षमता के माध्यम से ऐसा करना संभव नहीं है। अपनी आवश्यकताओं को पूरा करने के लिए आप /styty स्विच के साथ wsdl.exe उपयोगिता का उपयोग कर सकते हैं।

अधिक जानकारी के लिए देख Web Services Description Language Tool (Wsdl.exe)