2009-07-03 12 views
8

मैं बहुत सारे ओपन सोर्स सॉफ़्टवेयर के साथ प्रयोग करता हूं और मैंने ओपन सोर्स वर्ल्ड उपयोग में लिबरवेन्ट में सर्वर प्रकार के अनुप्रयोगों की उचित मात्रा देखी है ताकि कई धागे के बजाए ईवेंट-आधारित प्रोसेसिंग की सुविधा मिल सके। अनुरोध संभाल लें।libevent, windows और .NET प्रोग्रामिंग

मैं भी बहुत सारे .NET प्रोग्रामिंग (यह मेरा मुख्य नौकरी फ़ंक्शन) करता है, और मुझे सीखने में दिलचस्पी है कि कैसे libevent .NET ईवेंट मॉडल से संबंधित है। सी प्रोग्राम के लिए libevent के बराबर .NET में घटनाएं हैं? क्या मुझे libevent सीखने की कोशिश करनी चाहिए और कस्टम .NET सर्वर अनुप्रयोगों में इसका उपयोग करने का प्रयास करना चाहिए या मानक .NET ईवेंट मॉडल का मूल रूप से एक ही चीज़ का उपयोग कर रहा है?

उत्तर

8

.NET ईवेंट और libevent समकक्ष नहीं हैं, हालांकि वे अमूर्त अवधारणाओं को साझा करते हैं।

.NET घटनाएं सीएलआर घटकों के बीच गैर-निर्धारिक संचार की अनुमति देती हैं। In C#, घटक एक वस्तु है - घटनाएं वर्ग के सदस्य हैं। अन्य भाषाओं में, like F#, वस्तुओं की आवश्यकता नहीं है। एक घटना उपभोक्ताओं वाली सूचनाओं का स्रोत में विशिष्ट परिस्थितियों पर होने की सदस्यता के लिए अनुमति देता है - एक बटन क्लिक किया जाता है, एक डाउनलोड पूरा हो गया है, एक अपवाद उत्पन्न हुई, आदि नेट घटनाओं की कुछ विशेषताओं:

  • वे अंतर्निहित ओएस
  • से बंधे नहीं हैं आप किसी भी स्थिति के लिए ईवेंट परिभाषित कर सकते हैं।
  • वे स्वाभाविक रूप से एसिंक्रोनस नहीं हैं (नोटिफ़ायर और अधिसूचित एक ही समय में चल रहे नहीं हैं, हालांकि वे हो सकते हैं)।

libevent ओएस और एक उपभोक्ता के बीच गैर नियतात्मक, अतुल्यकालिक संचार की अनुमति देता है। यह .NET घटनाओं के समान महसूस हो सकता है क्योंकि वे दोनों नियंत्रण उलटा करते हैं, लेकिन तंत्र बहुत अलग हैं।

  • libevent प्रदर्शन में सुधार के लिए ओएस-विशिष्ट, गैर-अवरुद्ध I/O (/dev/poll, kqueue, epoll) का उपयोग करता है। आपके परिणाम आपके द्वारा उपयोग किए जाने वाले ओएस और तंत्र के आधार पर अलग-अलग होंगे।
  • libevent घटना स्थितियों में फाइल डिस्क्रिप्टर, ओएस सिग्नल, या टाइमआउट में राज्य परिवर्तन शामिल हैं। आप मनमाने ढंग से कॉलबैक शर्तों को परिभाषित नहीं कर सकते हैं।
  • libevent स्वाभाविक रूप से असीमित है। ओएस वापस लौटने की प्रतीक्षा करते समय उपभोक्ता ब्लॉक नहीं करता है।

मैं libevent और कस्टम नेट सर्वर अनुप्रयोग में उपयोग करने के प्रयास जानने की कोशिश करना चाहिए ...?

यदि आप इसे मजेदार, निश्चित रूप से कर रहे हैं। यदि आप इसे काम के लिए कर रहे हैं, शायद नहीं। libevent * निक्स सिस्टम पर अपने सबसे बड़े प्रदर्शन लाभ का दावा है। विंडोज एक अलग नेटवर्किंग प्रतिमान का उपयोग करता है। Libevent डेवलपर्स संस्करण 2 में addressing these differences हैं लेकिन 2.0.5 अभी भी एक बीटा रिलीज है।

इसके अतिरिक्त, .NET अपने स्वयं के गैर-अवरुद्ध I/O पुस्तकालय including asynchronous sockets प्रदान करता है।

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