दिलचस्प पोस्ट
पर्ल से एक लोकेल सेटिंग को ठीक करने के लिए कैसे करें? एक सेल में एकाधिक मापदंडों के मूल्यों को लौटाने के साथ वीएलयूक्यूपी रिमोट एडमिन क्रेडेंशियल्स का उपयोग कर रिमोट कंप्यूटर पर फाइल कॉपी करें जावास्क्रिप्ट विंडो। केवल तभी खिड़की मौजूद नहीं है 128-बिट पूर्णांक मॉड्यूलो को 64-बिट पूर्णांक की गणना करने का सबसे तेज़ तरीका Android में लेआउट में ओरिएंटेशन परिवर्तन का पता कैसे लगा सकता है? कैसे PySpark के साथ PyCharm लिंक करने के लिए? पायथन असाइनमेंट एक मूल्य क्यों नहीं लौटाता है? जिन्ना 2 टेम्पलेट से मौजूदा चर की सूची कैसे प्राप्त करें? WPF बाइंडिंग – खाली स्ट्रिंग के लिए डिफ़ॉल्ट मान मेरी पीएचपी फ़ाइलें सादा पाठ के रूप में क्यों दिख रही हैं? क्या Google Maps मार्कर को इसके मानचित्र के केन्द्र पर हमेशा तय करने का कोई तरीका है? कैसे जांचें कि क्या एक जावास्क्रिप्ट क्लास एक दूसरे को प्राप्त करता है (एक obj के बिना)? सी ++: क्या regex पुस्तकालय मुझे इस्तेमाल करना चाहिए? मैं cURL POST अनुरोधों में एरेज़ का उपयोग कैसे करूं?

WCF सेवा से async विधियों को कॉल करना

मैं एक WCF सेवा से अतुल्यकालिक तरीकों को कॉल करना चाहता हूं, जैसे कुछ:

[ServiceContract] interface IService { [OperationContract] int SomeMethod(int data); } int SomeMethod(int data) { var query = ... build LINQ query; var response = await query.ToListAsync(); return response.Length; } 

मैं async को IService इंटरफ़ेस या SomeMethod विधि में जोड़ना नहीं चाहता असिंक्रोनस विधियों का उपयोग करना एक आंतरिक समस्या है जो इंटरफ़ेस में दिखाई नहीं देनी चाहिए।

मैं उसे कैसे कर सकता हूँ?

स्पष्टीकरण:

मेरी समस्या यहां एक गैर- async विधि में await रही है मैं सेवा अनुबंध को बदलना नहीं चाहता (क्लाइंट को यह पता नहीं है कि BeginSomeMethod क्या होता है), और मैं विधि को BeginSomeMethod विधि और EndSomeMethod में विभाजित नहीं करना चाहता। मुझे एक ऐसा तरीका चाहिए जो आंतरिक रूप से await करता है।

Solutions Collecting From Web of "WCF सेवा से async विधियों को कॉल करना"

क्या ग्राहक सिंक या एसिंक कोड का उपयोग कर रहा है, ग्राहक के लिए कोई फर्क नहीं पड़ता। क्लाइंट और सर्वर को एक अच्छी तरह से निर्दिष्ट तार-प्रोटोकॉल (अक्सर SOAP) से अलग किया जाता है। SOAP में एसिंक्रोनस पूर्णता की कोई धारणा नहीं है।

आपके पास एक सिंक सर्वर और एक async क्लाइंट हो सकता है, या इसके विपरीत। क्लाइंट भी यह नहीं पता लगा सकता है कि सर्वर सिंक या एसिंक है या नहीं। यह एक कार्यान्वयन विवरण है सर्वर एक कलाई घड़ी चलने वाला लिनक्स हो सकता है और आप अभी भी नहीं बता सकते

आपके द्वारा उपयोग किए जाने वाले IO की शैली एक कार्यान्वयन विवरण है और नेटवर्क पर जाने वाले बाइट्स को प्रभावित नहीं करती है।

तो आप क्या पसंद करते हैं उठाओ क्लाइंट अभी भी सर्वर तक पहुंचने के लिए async Io का उपयोग कर सकते हैं।

मुझे यकीन नहीं है कि लोगों के लिए यह इतना आश्चर्यचकित क्यों है अन्य संदर्भों में यह बहुत सहज लगता है: आपके पास एक अतुल्यकालिक TCP सर्वर और एक तुल्यकालिक क्लाइंट हो सकता है। मैं new WebClient().DownloadString(url) कह सकता हूं new WebClient().DownloadString(url) और एक स्ट्रिंग को एक वेब-सर्वर से सिंक्रोनस डाउनलोड कर रहा है जो एक अतुल्यकालिक तरीके से लागू किया गया है। मैं यह भी नहीं बता सकता कि कौन सा सर्वर सॉफ़्टवेयर चल रहा है

जब आप डब्लूसीएफ कॉल करते हैं तो वायरल पर क्या होता है यह देखने के लिए फिडलर का उपयोग करें। तुल्यकालिक या अतुल्यकालिक कॉल की कोई धारणा नहीं है।

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

डब्ल्यूसीएफ उत्पन्न क्लाइंट को तुल्यकालिक विधियों के अतिरिक्त अतुल्यकालिक तरीके के लिए बनाया जा सकता है। UI में "एसिंक्रोनस ऑपरेशंस जेनरेट करें" विकल्प को चुनें अब आपके पास दोनों संस्करण हैं दोनों पूरी तरह कार्यात्मक

यहां बताया गया है कि आप एक प्रयोग के साथ इस बारे में अपने आप को कैसे समझ सकते हैं: एक सिंक सर्वर लिखें, और उसे समान नेट क्लाइंट से सिंक और एसिंक दोनों कहते हैं। अब एक दूसरे सर्वर को एसिंक्रोनस (किसी भी स्टाइल में आप की तरह) लिखें और इसे कॉल करने के लिए उसी क्लाइंट कोड का उपयोग करें।

Task और IAsyncResult एसएपी पर क्रमबद्ध नहीं हैं इसलिए यह संभवतः ऐसा मामला नहीं हो सकता है कि कोई Task क्लाइंट को प्रेषित किया जाता है।