2012-11-18 11 views
12

हमारे पास 2008 में .NET 3.5 (अब .NET 4.0 के तहत पुन: संकलित) पर एक मजबूत डब्ल्यूसीएफ क्लाइंट बनाया गया है जो net.tcp बाइंडिंग पर हमारी स्वयं की डब्ल्यूसीएफ सेवा से बात करता है। एक मजबूत प्रॉक्सी सेवा उत्पन्न करने के लिए मजबूत क्लाइंट चैनलफैक्टरी <IOurServiceInterface>() का उपयोग करता है, जिसके माध्यम से हम वर्तमान में सेवा में सिंक्रोनस कॉल करते हैं। हमें प्रत्येक कॉल से परिणाम मिलते हैं; हमारे पास कोई भी रास्ता नहीं है।कार्य Async पैटर्न और डब्ल्यूसीएफ के चैनल फैक्टरी <TChannel> कैसे लागू करें?

हम .NET 4.5/C# 5 पर माइग्रेट कर रहे हैं और ग्राहक को async/await/TAP का उपयोग करके एसिंक्रोनस बनाना चाहते हैं। इस तरह से ऐसा करने के लिए सबसे अच्छा तरीका है जिसके परिणामस्वरूप साफ कोड और अच्छा रनटाइम प्रदर्शन होता है?

(मैंने इस विषय पर एमएस दस्तावेज को देखा है, लेकिन यह हमेशा svcutil चलाने के बारे में बात करता है। हम svcutil का उपयोग नहीं करते हैं; हम सीधे चैनलफैक्टरी का उपयोग करते हैं। इसके अलावा: एमएस दस्तावेज को चैनल चैनल फैक्ट्री का उपयोग करके असीमित रूप से कॉल करने के लिए। नेट 4.5 कोई परिवर्तन नहीं होता .NET 3.0 दिनों के बाद से। लगता है ChannelFactory नई asynchrony को गले लगा लिया नहीं किया है।)

उत्तर

6

आप मौजूदा एपीएम लपेट कर सकते हैं (Begin*/End*) नल के लिए तैयार Task रों में अंतिम बिंदु TaskFactory.FromAsync का उपयोग कर।

आप मेरे Async WCF Today and Tomorrow post सहायक पा सकते हैं, जो दिखाता है कि प्री-वीएस2012 svcutil के साथ टीएपी का उपयोग कैसे करें।

+0

धन्यवाद स्टीफन। आपके उत्तर के आधार पर जानकारी खोजने के बाद, और अपनी पोस्ट पढ़ने के बाद, मुझे लगता है कि यह सबसे अच्छा किया जा सकता है। मुझे हैरान है कि इस दिन और चैनल में चैनलफैक्टरी अभी भी आपको एपीएम पैटर्न का उपयोग करने की उम्मीद करता है। –

3

क्या आपको this देखा गया था? मैंने Task<TResponse> लौटने के लिए एक प्रतीक्षा योग्य [OperationContract] का एक उदाहरण बनाया।

+0

धन्यवाद; मैं उसे देखूंगा। –

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