2011-05-12 17 views
6

के साथ सी # में एक एसओएपी क्लाइंट को कार्यान्वित करना मुझे .NET 4.0 में डब्ल्यूसीएफ के साथ शुरुआत करने में परेशानी हो रही है। यह मेरी स्थिति है:डब्ल्यूसीएफ और .NET 4.0

मैंने PHP में एक छोटा SOAP सर्वर बनाया है। मेरे पास एक सी # प्रोजेक्ट है जिसमें मैं इस सर्वर से कनेक्ट करना चाहता हूं और एसओएपी संचार शुरू करना चाहता हूं।

मेरी समस्या यह है कि मुझे नहीं पता कि सी # में इसे कैसे किया जाए। मुझे डब्ल्यूसीएफ के लिए सही परिचय नहीं मिल रहा है। ऐसा करने के तरीके हैं। लेकिन मुझे अपने सी # प्रोजेक्ट में जोड़ने के लिए सही कक्षाएं और संदर्भ नहीं मिल रहे हैं। क्या कोई ट्यूटोरियल सी # में इसे कैसे प्राप्त किया जाए? मैंने बहुत कुछ खोजा और मुझे कुछ भी नहीं मिला जिसने मेरी मदद की।

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

संपादित करें: रनवे पर WSDL फ़ाइल लाने के लिए शायद आवश्यक नहीं है। तो अब इसकी आवश्यकता नहीं है।
मैंने कक्षा बनाने और इसे मेरे प्रोजेक्ट में एम्बेड करने के लिए svcutil का उपयोग किया। मैं अभी तक इसका परीक्षण करने में सक्षम नहीं हूं, क्योंकि मुझे MySQL डेटाबेस के साथ कुछ परेशानी है (यह mysql कमांड लाइन टूल या mysqladmin से चल रहा है और सुलभ है, लेकिन मैं इसे किसी अन्य प्रोग्राम से कनेक्ट नहीं कर सकता ...) । जैसे ही मुझे पता है कि यह काम करता है, मैं वापस रिपोर्ट करूंगा।

संपादित करें 2: मैंने केवीएस दृष्टिकोण का पालन किया है और यह अंत में बहुत अच्छा काम करता है। मेरी अंतिम समस्या यह थी कि मैंने डीएलएल में सर्विस क्लास का इस्तेमाल किया था। मुझे प्रोग्राम में app.config की आवश्यकता थी जो डीएलएल का भी इस्तेमाल करता था। ऐसा करने के बाद यह अच्छी तरह से काम किया।

+0

यह ऐसा कुछ नहीं है जो आप आमतौर पर .NET में करेंगे। आम तौर पर, आप विकास समय पर डब्लूएसडीएल आयात करेंगे और सेवा संदर्भ जोड़कर इसे क्लाइंट प्रॉक्सी उत्पन्न करेंगे। रनटाइम पर आपको डब्लूएसडीएल लाने की आवश्यकता क्यों है? – Thorarin

+0

अधिक शोध करने के बाद मुझे लगता है कि यह वास्तव में आवश्यक नहीं है। मुझे लगता है कि मुझे इसकी आवश्यकता नहीं होगी और यह इस तरह से आसान काम नहीं करता है। – Skalli

उत्तर

8

ऐसा करने का सबसे तेज़ तरीका संदर्भ के तहत अपने क्लाइंट के प्रोजेक्ट में "सेवा संदर्भ जोड़ें" पर राइट-क्लिक करना है। डबल्यूएसडीएल के स्थान पर बातचीत प्वाइंट जाएं पर क्लिक करें:

enter image description here

यूआरएल मैं इस्तेमाल किया गया था एक .NET सेवा संदर्भ की शैली के लिए, आप जो कुछ भी अपने PHP सोप सेवा का उपयोग करता है के साथ बदलना भी होगा अपने डब्ल्यूएसडीएल का पर्दाफाश करने के लिए।

ऐसा करने से क्लाइंट साइड प्रॉक्सी उत्पन्न होगी जो आप अपनी वेब सेवा के साथ संवाद करने के लिए तत्काल हो सकते हैं।

सेवा आप तो जैसे (हालांकि अपने विशिष्ट कार्यान्वयन ही नहीं होगा) कुछ कर सकते हैं पहुंचने के लिए:

MyService.MyWebServiceSoapClient ws = new MyService.MyWebServiceSoapClient(); 
string result ws.DoThing(); 

प्रॉक्सी वर्ग के नाम की SoapClient हिस्से के लिए विशेष रूप से ध्यान दें, यह जोड़ा जाता है प्रॉक्सी कोड जनरेटर द्वारा साबुन सेवा नाम के नाम पर।

प्रॉक्सी जनरेटर आपके web.config या app.config फ़ाइल में सभी आवश्यक कॉन्फ़िगरेशन भी बनाएगा।

+0

जबकि मैं सहमत हूं कि सेवा का उपभोग करने का यह सबसे तेज़ तरीका है, ओपी ने विशेष रूप से रनटाइम पर डब्लूएसडीएल लोड करने का अनुरोध किया है। – Thorarin

+2

@ थोरिनिन - जबकि यह सच हो सकता है, वह यह भी सोच रहा है कि साबुन कक्षाओं को गतिशील रूप से बनाया गया है (जैसे देर से बाध्य वीबी 6/वीबीस्क्रिप्ट एसओएपी एसडीके शैली) जैसे हर बार आपको एंडपॉइंट का उपयोग करने की आवश्यकता होती है और यह पता नहीं हो सकता कि वह कर सकता है एक बार प्रॉक्सी उत्पन्न करें। – Kev

+0

यह सच है कि मैं रन टाइम पीढ़ी को देख रहा था। लेकिन मैं अनुसंधान पर अधिक समय बिताता हूं और मुझे लगता है कि मैं आयात के साथ जाऊंगा। एक और नोट: सेवा जोड़ें संदर्भ मेरे मामले में ऐसा नहीं था। मुझे 'उन्नत' संवाद से गुजरना पड़ा और वेब संदर्भ जोड़ें। यह कहा .NET 2.0 संगत। मेरे लिए इष्टतम नहीं लग रहा था। – Skalli