2010-04-18 7 views
11

मुझे आश्चर्य है कि पुस्तकालय एक क्रॉस-प्लेटफ़ॉर्म सेवा/डिमन के विकास को कैसे आसान करेगा? (सी/सी ++)क्रॉस-प्लेटफ़ॉर्म सेवा/डिमन लिखने के लिए उपयोग करने के लिए सी ++ लाइब्रेरी क्या है?

मैं लक्ष्यीकरण कर रहा हूं: विंडोज, लिनक्स और ओएस एक्स आवश्यकताएं: नेटवर्क संचालन और सीरियल पोर्ट संचार।

साथ ही बुनियादी नमूना सेवा एप्लिकेशन होना अच्छा लगेगा।

+0

मुझे पता है इस सवाल का सच में, सच पुराना है, लेकिन मैं हाल ही में सॉफ्टवेयर का एक टुकड़ा संबंधित कि सीधे सवाल का जवाब नहीं है विकसित (गैर बढ़ावा-ized संस्करण को देखने के लिए याद) github.com/cubiclesoft/service-manager/ यह लाइब्रेरी नहीं है लेकिन यह क्रॉस-प्लेटफ़ॉर्म सिस्टम सेवाओं को लिखने की कठिनाइयों से निपटता है। स्रोत कोड सी ++ में लिखा जाता है लेकिन यह अधिकतर अप्रासंगिक है। – CubicleSoft

उत्तर

5

जब क्यूटी की बात आती है तो आप qt-service आज़मा सकते हैं।

+1

5 साल और यह अभी भी एक Google खोज में शीर्ष जवाब है। अपडेट किया गया लिंक: https://github.com/qtproject/qt-solutions/tree/master/qtservice –

+0

@ chadwick.boulay लिंक-रोट फिक्स वास्तव में संपादन होना चाहिए, टिप्पणियों पर नहीं। –

6

लिनक्स में एक डिमन वास्तव में एक प्रक्रिया है जो टर्मिनल से डिस्कनेक्ट हो जाती है। विंडोज़ में, एक सेवा ऐसी चीज है जिसे सेवा प्रबंधन API का उपयोग करके नियंत्रित किया जा सकता है, लेकिन एक बार फिर मूल रूप से डिस्कनेक्ट की गई प्रक्रिया होती है। अलग-अलग डिस्कनेक्शन, डेमन्स & सर्वरों में कार्य से कार्य तक, सामान्य में बहुत कुछ नहीं है। उदाहरण के लिए, कोई आवश्यकता नहीं है, कि वे बहु-थ्रेडेड हों, असीमित हो या नेटवर्क I/O करें। यह देखते हुए, यह देखना मुश्किल है कि क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी क्या करेगी।

+0

लिनक्स डिमन्स स्वचालित रूप से इनिट प्रक्रिया (यानी init या systemd) द्वारा शुरू होने की उम्मीद है, जिसके लिए एक init स्क्रिप्ट और कुछ अन्य सेटअप की आवश्यकता होती है।उन्हें आम तौर पर SIGINT को उचित रूप से प्रतिक्रिया देना चाहिए और अक्सर SIGHUP या अन्य आकर्षक संकेतों के लिए। –

3

Boost शायद threading और networking I/O के संदर्भ में आपको जो चाहिए वह सबसे अधिक है।

आपको Qt एक अच्छा विकल्प भी मिल सकता है। इसमें थ्रेडिंग और नेटवर्किंग लाइब्रेरीज़ भी हैं और & रन लूप का उपयोग करके ईवेंट संचालित प्रोग्रामिंग मॉडल को समझना बहुत आसान है। क्यूटी के सिग्नल/स्लॉट सिस्टम का उपयोग करना बहुत आसान है और नेटवर्क डिमन/सेवा के लिए आदर्श है (बूस्ट में signal/slot सिस्टम भी शामिल है लेकिन इसका उपयोग करना कठिन है और इसमें इवेंट लूप शामिल नहीं है; आपको कुछ ईवेंट लाइब्रेरी का उपयोग करके अपना खुद का रोल करना होगा) । एक क्रॉस-प्लेटफार्म लाइब्रेरी के रूप में, क्यूटी यूनिक्स (ओएस एक्स और लिनक्स) बनाम विंडोज़ मानसिक मॉडल को प्रक्रियाओं, फाइल सिस्टम इत्यादि के लिए ब्रिजिंग में कई मुद्दों को संभाल सकता है।

यूनिट परीक्षण के लिए, मैं बहुत खुश हूं Google की सी ++ यूनिट परीक्षण लाइब्रेरी के साथ googletest कहा जाता है (हालांकि बूस्ट और क्यूटी दोनों में अंतर्निहित यूनिट परीक्षण सिस्टम भी हैं)। यह आपके द्वारा निर्दिष्ट सभी प्लेटफॉर्म पर चलता है। मैंने क्रॉस-प्लेटफार्म क्यूटी परियोजनाओं पर googletest के साथ बहुत काम किया है और इसे काफी संतोषजनक पाया है।

5

आपको POCO पर एक नज़र रखना चाहिए। आप जो कर रहे हैं उसके आधार पर बूस्ट की तुलना में बहुत कम काम के साथ आपके लिए बड़ी मात्रा में काम करने की सुविधा हो सकती है।

ACE के लिए एक अनिवार्य उल्लेख हालांकि मैं व्यक्तिगत रूप से इसकी परवाह नहीं करता हूं।

+0

उह, मुझे एसीई से नफरत है। अगर कुछ भी है, तो बढ़ावा बहुत बेहतर है। हालांकि दोनों अलग-अलग कारणों से चूसते हैं। शून्य एमक्यू शायद एक कोशिश के लायक है। मैंने अभी तक पीओसीओ की कोशिश नहीं की है, दिलचस्प लग रहा है। –

0

मुझे एएसआईओ के गैर-बूस्ट संस्करण में एक बड़ी लाइब्रेरी मिली है। आपको सभी बूस्ट लाइब्रेरी की आवश्यकता नहीं है, लेकिन केवल यह छोटे हेडर-केवल और बहुत अच्छी तरह से प्रलेखित लाइब्रेरी http://think-async.com/

उदाहरण के तौर पर, कोड की बहुत कम पंक्तियों में एक दिन सर्वर-क्लाइंट सिस्टम लागू किया जाता है। इसे देखें। https: //

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