2010-02-10 11 views
6

से बुलाया जा सके। हमारे पास सी में लागू जटिल जटिल तर्क वाला एक लाइब्रेरी है। इसमें कम जटिल स्ट्रिंग-आधारित तर्कों वाला कमांड लाइन इंटरफ़ेस नहीं है। इसे एक्सेस करने के लिए, हम लाइब्रेरी को लपेटना चाहते हैं ताकि इसे सरल एक्सएमएल आरपीसी या यहां तक ​​कि सीधा HTTP पोस्ट कॉल के साथ भी पहुंचा जा सके।सी लाइब्रेरी को कैसे लपेटें ताकि इसे वेब सेवा

जावा के साथ कुछ अनुभव के बाद, मेरा पहला विचार होगा

  • लपेटें JNI/JNA
  • उपयोग में पुस्तकालय एक पतली WS ढेर और एक सर्वलेट इंजन
  • प्रॉक्सी सर्वलेट को अपाचे के माध्यम से अनुरोध इंजन

मेरा मानना ​​है कि पहले से ही कुछ सरल होना चाहिए जिसका उपयोग किया जा सकता है, इसलिए मैं यहां इस प्रश्न को पोस्ट कर रहा हूं। एक समाधान निम्न आवश्यकताओं को

है
  • यह पैकेज प्रबंधन के माध्यम से एक मौजूदा लिनक्स वितरण के लिए परिनियोजन योग्य, अधिमानतः पहले से ही उपलब्ध होना चाहिए
  • यह एक मानक वेब सर्वर के साथ एकीकृत करना चाहिए
  • छोटे (मेरे उदाहरण अपाचे के रूप में) पुस्तकालय के इंटरफ़ेस में परिवर्तन प्रबंधनीय
  • एंड-टु-एंड (HTTP-WS-पुस्तकालय-WS-HTTP) समाधान बहुत अधिक भूमि के ऊपर नहीं उठाना चाहिए होना चाहिए, लेकिन विश्वसनीयता बहुत महत्वपूर्ण है

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

उत्तर

1

अपाचे मॉड्यूल बनाना काफी आसान है और चूंकि आप xmlrpc से परिचित हैं, तो आपको mod-xmlrpc2 को देखना चाहिए। आप इस अपाचे मॉड्यूल में आसानी से अपना सी कोड जोड़ सकते हैं और मिनटों में चल रहे xmlrpc सर्वर

+0

मैंने सभी अच्छे उत्तरों को वोट दिया है, लेकिन यह वह मार्ग है जिसे हमने वास्तव में लिया था। धन्यवाद, बॉब। – Kariem

0

निर्भर करता है कि आप किस तकनीक के साथ सहज हैं, जो आपने पहले से इंस्टॉल किया है और अपने सर्वर पर काम कर रहा है, और आपकी लोड आवश्यकताएं क्या हैं।

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

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

+0

धन्यवाद, यह एक बहुत ही सरल और सरल सुझाव है, जिसे मैंने (अजीब रूप से पर्याप्त) वास्तव में नहीं माना था। ऐसा करने के लिए यह बहुत जटिल नहीं होना चाहिए। पुस्तकालय के लिए सीएलआई अभी तक पूरा नहीं हुआ है, लेकिन मुझे विश्वास है कि प्रत्यक्ष एपीआई कॉल (1) अधिक स्थिर और (2) बहुत तेज़ हैं। हालांकि, मुझे लगता है कि यह पहला कार्यान्वयन होगा जिसे हम कोशिश करेंगे। धन्यवाद। – Kariem

1

मुझे लगता है कि आप इसे एक एसओएपी आधारित वेब सेवा के रूप में भी प्रकाशित कर सकते हैं। पुस्तकालय से सेवा इंटरफ़ेस प्रदान करने के लिए gSoap का उपयोग किया जा सकता है। क्या आपने जीएसओएपी की खोज की है? http://www.cs.fsu.edu/~engelen/soap.html

सादर देखें, Kangkan

2

आप वेब सेवाओं के साथ जा रहे हैं, शायद Soaplab उपयोगी होगा। यह मूल रूप से एसओएपी वेब सेवाओं में मौजूदा कमांड लाइन अनुप्रयोगों को लपेटने का एक उपकरण है। यह उत्पन्न वेब सेवाएं थोड़ा अजीब लगती हैं लेकिन यह इस काम की तरह कुछ करने का एक लोकप्रिय तरीका है।

0

मैं इस समय सी ++ के साथ एक ही काम कर रहा हूं। मेरे मामले में, मैं PHP स्क्रिप्ट को मेरी सी ++ लाइब्रेरी में तर्क तक पहुंचने की अनुमति देने के लिए एक PHP मॉड्यूल लिख रहा हूं।

मैं फिर भी दुनिया के बाकी हिस्सों को देखने के लिए जो भी प्रारूप चाहता हूं उसका उपयोग कर सकता हूं - शुरुआत में यह केवल एक PHP वेब एप्लिकेशन के माध्यम से होगा, लेकिन मैं एक एक्सएमएल-आरपीसी इंटरफ़ेस भी विकसित करूँगा।

0

यदि आप जेएनआई रूट नीचे जा रहे हैं, तो SWIG देखें। http://www.swig.org/Doc1.3/Java.html

मान लीजिए कि आपके पास प्रोजेक्ट बाइंडिंग के लिए हेडर हैं, स्विग के साथ काम करना बहुत आसान है।