2012-03-20 17 views
8

में आप टास्क-बेस एसिंक्रोनस प्रोग्रामिंग का उपयोग क्यों नहीं करेंगे और मैं सी # 5 में एसिंक्रोनस प्रोग्रामिंग के आसपास अपना सिर पाने की कोशिश कर रहा हूं और सवाल यह है कि मैं खुद से पूछता हूं क्यों इसे हर समय उपयोग नहीं करें (एएसपी.नेट एमवीसी 4 या वेब एपीआई के लिए), जैसे node.js लोग कर रहे हैं?सी # 5.0 एएसपी.नेट एमवीसी 4 या वेब एपीआई

क्या कोड के अलावा कोई भी नुकसान (अनावश्यक ओवरहेड) सीधा नहीं है (जो नए वाक्यविन्यास के बाद आईएमएचओ एक मजाक है समझने में आसान है)?

उत्तर

8

अधिकांश भाग के लिए, इसे हर जगह वास्तव में उपयोग करें। यही कारण है कि उन्होंने 50 एमएस से अधिक समय तक एक एसिंक कॉल में ले लिया सब कुछ बदल दिया :)।

हालांकि, यह किसी भी एसिंक कोड के समान नुकसान होगा। डिबगिंग ट्रिकियर बन सकता है। यदि आप एक काम करना शुरू करते हैं और फिर यह यूआई थ्रेड पर एक लंबे कार्य पर लौटता है, तो इसके परिणामस्वरूप झूठी ठंड लग सकती है (उपयोगकर्ता क्लिक के बाद स्थानांतरित करने में सक्षम था, लेकिन बाद में जब तक इसे देखने के लिए कुछ भी नहीं कर सकता)। आदि

यदि आप इसे कोड के माध्यम से चलाने वाले कोड के माध्यम से चलाते हैं, तो यह किसी भी तरह सिंक्रोनस कोड की तरह कार्य करेगा। और, यदि यह कैश या कुछ तेज कार्रवाई को हिट करता है, तो यह दक्षता के लिए async नहीं चलाएगा। तो, आखिरी बात यह है कि इन कॉलों में कंपाइलर जादू करने के लिए ओवरहेड होने के बावजूद, अगर कॉल पहले से पूरा हो चुका है और इसलिए ओवरहेड के लायक नहीं है तो वह जादू नहीं किया जाएगा।

तो, हाँ, मैं उपयोग कहेंगे यह सिर्फ के बारे में हर जगह :) इसमें .NET

अद्यतन

If this article is to believed के लिए एक बड़ा कदम है तो यह केवल सही ठहराते हैं कि मैं क्या कह रहा हूँ। यदि कॉल 50 एमएस से कम लेता है, तो ओवरहेड को इस तरह लिखने के कारण यह एसिंक नहीं होना चाहिए और नहीं होना चाहिए। और, वास्तव में एसिंक एक के बजाय अक्सर सिंक्रोनस एक्शन ट्रिगर करेगा। हालांकि, अगर यह 50 एमएस से अधिक है, तो आप केवल एसिंक कॉल

+0

धन्यवाद! मैंने यही सोचा लेकिन मैं अपनी मान्यताओं की पुष्टि करना चाहता था। – W3Max

0

से प्राप्त करते हैं यह सीपीयू या आईओ बाध्य ऑपरेशन पर निर्भर करता है जिसे आप सर्वर पर करना चाहते हैं। यहाँ few excerpt from MSDN

सामान्य तौर पर कर रहे हैं, अतुल्यकालिक पाइपलाइनों का उपयोग जब निम्नलिखित शर्तों सत्य हैं:

संचालन नेटवर्क बाध्य कर रहे हैं या मैं/बजाय सीपीयू बाध्य हे बाध्य।

परीक्षण से पता चलता है कि अवरुद्ध संचालन साइट प्रदर्शन में एक बाधा है और आईआईएस इन अवरुद्ध कॉल के लिए असीमित क्रिया विधियों का उपयोग करके अधिक अनुरोधों की सेवा कर सकता है।

समांतरता कोड की सादगी से अधिक महत्वपूर्ण है।

आप एक तंत्र प्रदान करना चाहते हैं जो उपयोगकर्ताओं को लंबे समय से चलने वाले अनुरोध को रद्द करने देता है।

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