2009-07-28 13 views
13

मैं यूआरएल के माध्यम से सेवा में उजागर सभी विधियों तक पहुंच बनाना चाहता हूं। अगर लगता URL होगा:रन समय पर यूआरएल के माध्यम से डब्ल्यूसीएफ वेब सेवा का उपभोग कैसे करें?

http://localhost/MyService/MyService.svc 

मैं तरीकों कैसे पहुँच सकते हैं:

  1. लगता है मैं एक ServiceReference
  2. और मैं क्या करता है, तो क्या करना चाहिए सेवा संदर्भ की जरूरत नहीं है है।
+0

कृपया अपने प्रश्न को स्पष्ट करें। मैं यह नहीं बता सकता कि आप क्या हासिल करना चाहते हैं। क्या आप विधियों को कॉल करने में सक्षम होना चाहते हैं, या आप उनकी एक सूची चाहते हैं? –

+0

जॉन मैं विधियों तक पहुंच बनाना चाहता हूं .. असल में मैं यूआरएल के माध्यम से वेब सेवा का उपभोग करना चाहता हूं। –

+0

और सेवा संदर्भ का उपयोग क्यों नहीं करें? –

उत्तर

18

डब्ल्यूसीएफ सेवा का उपयोग करने के लिए, आपको डब्ल्यूसीएफ क्लाइंट प्रॉक्सी बनाना होगा।

विजुअल स्टूडियो में, आप प्रोजेक्ट पर राइट-क्लिक करेंगे और संदर्भ मेनू से "सेवा संदर्भ जोड़ें" चुनें। उस यूआरएल में टाइप करें जिसे आप कनेक्ट करना चाहते हैं, और यदि वह सेवा चल रही है, तो आपको क्लाइंट प्रॉक्सी फ़ाइल जेनरेट करनी चाहिए।

इस फ़ाइल में आमतौर पर MyService क्लाइंट नामक एक कक्षा होगी - आप उस कक्षा को तुरंत चालू कर सकते हैं, और आपको उस क्लाइंट क्लास पर अपने सभी उपलब्ध विधियों को देखना चाहिए।

यदि आप विजुअल स्टूडियो में कोई सेवा संदर्भ नहीं जोड़ना चाहते हैं, तो आप svcutil.exe कमांड लाइन टूल को निष्पादित करके एक ही परिणाम प्राप्त कर सकते हैं - इससे आपके क्लाइंट प्रॉक्सी क्लास के लिए सभी आवश्यक फ़ाइलें भी उत्पन्न हो जाएंगी।

मार्क

अद्यतन:
यदि आप क्रम में एक ग्राहक प्रॉक्सी को प्रारंभ करना चाहते हैं, तो आप निश्चित रूप से ऐसा कर सकते हैं - आप जो (परिवहन प्रोटोकॉल) का उपयोग करने के लिए बाध्य का निर्णय लेना होगा, और जो पता से कनेक्ट करने, और फिर आप कर सकते हैं:

BasicHttpBinding binding = new BasicHttpBinding(); 
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService"); 

MyServiceClient serviceClient = new MyServiceClient(binding, address); 

लेकिन फिर भी इस मामले में, आप आयात किया है की जरूरत है और प्रॉक्सी ग्राहक बनाया गया पहला, "सेवा संदर्भ जोड़ें" या svcutil.exe टूल का प्रयोग करके।

+0

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

+0

रनवे पर मैं इसे कैसे महसूस कर सकता हूं। चयनित यूआरएल के साथ रनटाइम पर सेवा क्लाइंट का निर्माण कैसे करें। –

+0

ठीक है, तो आप अपने क्लाइंट को रनटाइम पर सेवा संदर्भ जोड़ना चाहते हैं? वह उनके साथ क्या करने जा रहा है? मेरा मतलब है - आप निश्चित रूप से रनटाइम पर प्रॉक्सी बना सकते हैं - लेकिन वह या आप तरीकों को कैसे कॉल करेंगे? –

7

कैसे एक सेवा संदर्भ बिना यह करने के लिए जवाब देने के लिए। एक नज़र यहाँ (विकल्प #a) है:

Writing your first WCF client

तुम अब भी कुछ संदर्भ (एक विधानसभा अनुबंध/इंटरफेस युक्त करने के लिए अर्थात् एक संदर्भ) की जरूरत है, लेकिन आप एक सेवा संदर्भ नहीं बनाते हैं।

संपादित करें: हालांकि उपरोक्त संभव है, मैं इसकी अनुशंसा नहीं करता। जब आपको इस तरह के प्रॉक्सी उत्पन्न करना होता है तो प्रदर्शन बिल्कुल बढ़िया नहीं होता है। मैं आमतौर पर svcutil.exe का उपयोग करता हूं और अपने ग्राहकों को एक असेंबली बनाता हूं और उस असेंबली का संदर्भ बना देता हूं। इस तरह आपके पास प्रॉक्सी की तरह दिखने के लिए अधिक विकल्प हैं।

1

आप सेवा प्रॉक्सी की आवश्यकता के बिना डब्ल्यूसीएफ सेवा को कॉल करने के लिए WebClient कक्षा का भी उपयोग कर सकते हैं। प्रभावी रूप से आप स्ट्रिंग्स और बाइनरी डेटा भेज और प्राप्त कर सकते हैं और POSTs अनुकरण भी कर सकते हैं।

मैं इसे पुन: प्रयोज्य घटकों के लिए बड़े पैमाने पर उपयोग करता हूं जहां डेवलपर कभी भी आवश्यक प्रॉक्सी विधियां नहीं बना सकता है। POST करने के तरीकों की एक अच्छी तुलना here उपलब्ध है।

0

आप बस अपनी सेवा के wsdl प्रदान कर सकते हैं: http://localhost/MyService/MyService.svc?wsdl

wsdl से आप प्रॉक्सी कक्षाएं उत्पन्न कर सकते हैं और क्लाइंट पर उनका उपयोग कर सकते हैं।

संबंधित मुद्दे