2012-11-22 24 views
7

मेरी समझ में, IOLib और usocket में लगभग समान अमूर्त स्तर है। आईओएलआईबी ओएस-बैकएंड सॉकेट का उपयोग करता है, दूसरी तरफ यूएसकेट लिस्प-रनटाइम बैकएंड सॉकेट का उपयोग करता है।IOLib बनाम usocket

मुझे आश्चर्य है कि विशेष उपयोग मामलों के लिए कौन सी बेहतर विकल्प है।

उदाहरण के लिए

, एक सर्वर जो महान संगामिति, या एक ग्राहक जो पोर्टेबिलिटी पर केंद्रित की जरूरत है, आदि के रूप में के बाद से यह this पेज पर कहा है

+1

मुझे लगता है कि आपने अभी अपने अंतिम अनुच्छेद के साथ अपने प्रश्न का उत्तर दिया है। आप इसे प्रश्न से भी हटा सकते हैं, इसे एक उत्तर के रूप में पोस्ट कर सकते हैं और इसे स्वीकार कर सकते हैं (हाँ, आप अपने उत्तरों को स्वीकार कर सकते हैं)। – acelent

उत्तर

4

मुझे लगता है कि, this blogpost अपने प्रश्न का उत्तर दें।

यदि आप लाइब्रेरी लिख रहे हैं, तो सभी प्लेटफॉर्म और कार्यान्वयन ("सभी" की उचित परिभाषा के साथ) पर काम करना चाहिए, यूएसकेट का उपयोग करें। यूनिक्स प्लेटफ़ॉर्म पर अन्य उपयोग-मामलों के लिए, IOLib शायद अधिक बहुमुखी है। उदाहरण के लिए, यह यूनिक्स डोमेन सॉकेट, साथ ही गैर-अवरुद्ध आईओ का समर्थन करता है।

वैसे, मैंने यूएसबी से आईओएलआईबी और सीएल-सीएल-रेडिस को पोर्ट किया था - एपीआई बहुत समान है, हालांकि थोड़ा अलग है।

1

आपका मुख्य लक्ष्य पोर्टेबिलिटी है, जाहिरा तौर पर usockets, बेहतर विकल्प है:

यूएसओकेकेटी बीएसडी-स्टाइल सॉकेट के लिए पोर्टेबिलिटी परत है।

2

यूएसओकेकेईटी का कोड IOLib से निर्भरता सहित बहुत छोटा और सरल है। IOLib लिनक्स सुविधाओं के लिए सीएफएफआई बाइंडिंग का उपयोग करता है जो उदाहरण के लिए कुछ * बीएसडी में मौजूद नहीं हैं।

अन्य सभी चीजें बराबर होती हैं, न्यूनतम स्रोत कोड हमेशा बेहतर होता है क्योंकि इसका मतलब कम बग है, क्योंकि इसे समझना और हैक करना आसान है। सरल कोड डीबग करने के लिए तेज़ है, और अधिक आसानी से तैनात करता है।

इसके अलावा, वे दोनों लगभग समान रूप से काम करते प्रतीत होते हैं: वे दोनों एक ही धागे के भीतर एकाधिक कनेक्शन को संभालने के लिए kqueue/select प्रदान करते हैं। मुझे सॉकेट में यूनिक्स फ़ाइल डिस्क्रिप्टर को पास करने जैसे अधिक उन्नत फ़ंक्शंस के बारे में निश्चित नहीं है।

मैं कहूंगा कि अगर आप केवल लिनक्स की तरह हैं, तो IOLib या USOCKET के साथ जाएं, यदि आप लिनक्स और/या * बीएसडी, या अन्य वाणिज्यिक ऑपरेटिंग सिस्टम को लक्षित करते हैं, या इसे सरल रखना चाहते हैं & बेवकूफ, यूएसओकेकेईटी के साथ जाएं।