मैं मेटाडाटा रीसोल्वर के साथ चैनलफैक्टरी का उपयोग करता हूं। रीसोलव विधि। क्लाइंट कॉन्फ़िगरेशन परेशान है, इसलिए मुझे सर्वर से मेरा ServiceEndpoint मिलता है।
जब आप चैनलफैक्टरी (टी) का उपयोग करते हैं, टी या तो मूल अनुबंध है जिसे आप अपने प्रोजेक्ट या जेनरेट किए गए अनुबंध उदाहरण में संदर्भ से प्राप्त कर सकते हैं। कुछ परियोजनाओं में, मैंने सेवा संदर्भ से कोड जेनरेट किया क्योंकि मैं अनुबंध डीएलएल का संदर्भ नहीं जोड़ सका। आप सेवा संदर्भ के साथ एक एसिंक अनुबंध भी उत्पन्न कर सकते हैं और चैनलफ़ैक्टरी के साथ उस अनुबंध इंटरफ़ेस का उपयोग कर सकते हैं।
मेरे लिए चैनलफैक्टरी का उपयोग करने का मुख्य बिंदु WCF क्लाइंट कॉन्फ़िगरेशन जानकारी से छुटकारा पाना था।नीचे दिए गए नमूना कोड में, आप कॉन्फ़िगर किए बिना डब्लूसीएफ क्लाइंट को कैसे प्राप्त कर सकते हैं।
Dim fixedAddress = "net.tcp://server/service.svc/mex"
Dim availableBindings = MetadataResolver.Resolve(GetType(ContractAssembly.IContractName), New EndpointAddress(fixedAddress))
factoryService = New ChannelFactory(Of ContractAssembly.IContractName)(availableBindings(0))
accesService = factoryService.CreateChannel()
मेरी अंतिम परियोजना में, उपलब्ध बाइंडिंग net.tcp या net.pipe का उपयोग करने के लिए चेक किए जाने पर चेक की जाती है। इस तरह, मैं अपनी जरूरतों के लिए सर्वोत्तम उपलब्ध बाध्यकारी का उपयोग कर सकता हूं। मैं केवल इस तथ्य पर भरोसा करता हूं कि सर्वर पर मेटाडेटा एंडपॉइंट मौजूद है।
मुझे आशा है कि इस मदद करता है
BTW, यह .NET 3.5 का उपयोग कर किया जाता है। हालांकि यह 4.0 के साथ भी काम करता है।
स्रोत
2011-01-27 14:45:07
@ मुरहाफ नोप - यह उत्तर पूरी तरह से मेरा काम है। मैं हमेशा दूसरों के योगदान की विशेषता देता हूं। मैंने इस जवाब को विभिन्न नौकरियों में .NET में एसओएपी सेवाओं के साथ काम करने के वर्षों के आधार पर लिखा था। वह लेख जो आप लिंक करते हैं, मार्च 2013 से है, जबकि मेरा उत्तर अप्रैल 2010 में लिखा गया था - 3 साल पहले! अगर साहित्य चोरी हुई है तो उसने मुझे कॉपी किया। आरोप लगाने से पहले आपको तिथियों की जांच करनी चाहिए क्योंकि यह करना बहुत आसान है। – Keith
@MurHaf हम भी इसी निष्कर्ष पर नहीं आते हैं - वह लेख प्रॉक्सी (विकल्प 1) को 'सरल' के रूप में स्वत: उत्पन्न करने की अनुशंसा करता है। मैं इसे स्थापित करने में आसान, लेकिन गन्दा और बनाए रखने के लिए दर्द का वर्णन करता हूं। वह अपनी खुद की प्रॉक्सी (विकल्प 3) लिखने पर भी चर्चा नहीं करता है। – Keith
मुझे लगता है कि SvcUtil का भी उल्लेख किया जाना चाहिए, क्योंकि यह क्लाइंट को "लिखने" के सबसे आम तरीकों में से एक है। –