जीएसओएपी

gSOAP SOAP/XML वेब सेवाओं और सामान्य XML डेटा बाइंडिंग के लिए C और C++ सॉफ़्टवेयर डेवलपमेंट टूलकिट है। C/C++ प्रकार की घोषणाओं के एक सेट को देखते हुए, संकलक-आधारित gSOAP उपकरण निर्दिष्ट C और C++ डेटा संरचनाओं के कुशल XML क्रमांकन के लिए स्रोत कोड में क्रमांकन रूटीन उत्पन्न करते हैं। क्रमबद्धता शून्य-प्रतिलिपि ओवरहेड लेता है।

इतिहास
जीएसओएपी टूलकिट 1999 में प्रोफेसर रॉबर्ट वैन एंगेलन द्वारा फ्लोरिडा स्टेट यूनिवर्सिटी में एक शोध परियोजना के रूप में शुरू किया गया था। इस परियोजना ने नए तरीके पेश किए अत्यधिक कुशल XML पार्सिंग के लिए (पुल पार्सिंग) और सीधे XML में और बाद में SOAP में भी C/C++ डेटा का क्रमांकन। परियोजना सफल हुई XML स्कीमा (W3C) प्रकारों और C डेटा प्रकारों की एक विस्तृत विविधता के बीच प्रकार की सुरक्षा | प्रकार-सुरक्षित डेटा बाइंडिंग को परिभाषित करने पर | C/C++ डेटा प्रकार। टूलकिट सी/सी++ डेटा को सीधे भेजने और प्राप्त करने के लिए कुशल ऑटो-जेनरेट किए गए एक्सएमएल सीरियलाइज़र का उपयोग करके वेब सेवाओं के विकास और आह्वान को आसान बनाने के लिए स्वचालित प्रोग्रामिंग का उपयोग करता है। एक डोमेन-विशिष्ट कंपाइलर-आधारित टूल स्रोत कोड उत्पन्न करता है जो कुशलतापूर्वक मूल C/C++ डेटा संरचनाओं को XML और बैक में परिवर्तित करता है। टूलकिट को SOAP वेब सेवा मैसेजिंग प्रोटोकॉल का समर्थन करने के लिए और विकसित किया गया था, जिसे लगभग उसी समय पेश किया गया था, इसलिए नाम gSOAP (जेनेरिक XML और SOAP) और वैज्ञानिक डेटा विनिमय के लिए दृष्टिकोण का उपयोग करने के लिए। सॉफ्टवेयर का आगे का विकास और रखरखाव जेनिविया इंक के स्वामित्व में हुआ। इसमें नई WSDL और XML स्कीमा (W3C) प्रसंस्करण क्षमताओं के साथ-साथ कई WS- * वेब सेवा प्रोटोकॉल क्षमताओं जैसे WS- सुरक्षा अनुकूलन शामिल हैं।, XML-RPC मैसेजिंग, JSON डेटा फॉर्मेट के लिए समर्थन, Apache और IIS वेब सर्वर में gSOAP को एकीकृत करने के लिए प्लगइन मॉड्यूल और ग्रिड सेवाओं के लिए तृतीय-पक्ष प्लगइन्स।  gSOAP टूलकिट पोर्टेबल C/C++ में लिखा गया है और WSDL/XSD विनिर्देशों को WSDL/XSD मेटा-डेटा बाइंडिंग के लिए C/C++ स्रोत कोड में अनुवाद करने के लिए कनवर्टर को लागू करने के लिए अपना कोड उत्पन्न करके बूटस्ट्रैपिंग के एक रूप का उपयोग करता है। gSOAP सॉफ़्टवेयर को GPLv2 ओपन सोर्स लाइसेंस और वाणिज्यिक-उपयोग स्रोत कोड लाइसेंस के तहत लाइसेंस दिया गया है। जीएसओएपी सॉफ्टवेयर का व्यापक रूप से औद्योगिक परियोजनाओं में उपयोग किया जाता है और मिशन-क्रिटिकल इन्फ्रास्ट्रक्चर।

एक्सएमएल वेब सेवा संचालन उदाहरण के द्वारा
एक होटल के रहने की दर को पुनः प्राप्त करने के लिए C में एक उदाहरण वेब सेवा संचालन, कई मेहमानों को एनोटेट रूप में घोषित किया जा सकता है फ़ंक्शन का अंतिम पैरामीटर हमेशा सेवा वापसी मान होता है, जिसे एक तरफ़ा संचालन के लिए शून्य के रूप में दर्शाया जा सकता है और कई सेवा वापसी मापदंडों को बंडल करने के लिए एक संरचना / वर्ग होना चाहिए। त्रुटि निदान के लिए फ़ंक्शन का int वापसी मान उपयोग किया जाता है।

ऑटो-जेनरेट किए गए साबुन_कॉल_एनएस__get_rate फ़ंक्शन का उपयोग करके सी में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया गया है: लीगेसी C और C++ सिस्टम के लिए वेब सेवाओं के कार्यान्वयन की सुविधा के लिए, C/C++ में पहचानकर्ता नामों की उपसर्ग योग्यता को छोड़ा जा सकता है या कोलन नोटेशन द्वारा प्रतिस्थापित किया जा सकता है, उदाहरण के लिए ns:get_rate बजाय ns__get_rate। प्रोजेक्ट बिल्ड में उपयोग किए जाने वाले ऑटो-जेनरेट किए गए स्रोत कोड में विराम चिह्न हटा दिया गया है।

ऑटो-जेनरेट प्रॉक्सी क्लास का उपयोग कर सी ++ में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया जाता है (प्रॉक्सी के डिफ़ॉल्ट एंडपॉइंट यूआरएल और एसओएपी एक्शन वैल्यू का उपयोग करके): एनोटेशन और पहचानकर्ता नामकरण परंपराओं का उपयोग करके, यानी फ़ंक्शन ns__get_rate के लिए उपसर्ग ns__ के साथ योग्यता और उदाहरण में //gsoap निर्देशों का उपयोग करके ns नामस्थान के गुणों की घोषणा करके, वेब सेवा संचालन के लिए एक बंधन स्थापित किया जाता है। ऑटो-जेनरेट की गई वेब सर्विसेज डिस्क्रिप्शन लैंग्वेज (WSDL) दस्तावेज़ एक अनुरोध संदेश, एक प्रतिक्रिया संदेश और गेट-रेट ऑपरेशन पोर्ट टाइप इंटरफ़ेस और SOAP बाइंडिंग को ns__get_rate फ़ंक्शन के लिए निम्नानुसार घोषित करता है: जहां ऑपरेशन के अनुरोध और प्रतिक्रिया संदेश डब्लूएसडीएल के प्रकार खंड में परिभाषित एक्सएमएल तत्वों को संदर्भित करते हैं: इसी तरह, क्लाइंट और सर्वर C/C++ सोर्स कोड को WSDLs और XML स्कीमा के सेट से ऑटो-जनरेट किया जा सकता है। उपयुक्त सेवा संचालन को परिभाषित करके सेवाओं को पूरा किया जाना चाहिए। उदाहरण के लिए, इस डब्लूएसडीएल के लिए स्वत: उत्पन्न सी ++ सर्विस क्लास को get_rate विधि को निम्नानुसार परिभाषित करके पूरा किया जाना चाहिए: वेब सर्विस मैसेजिंग के लिए एक्सएमएल में मार्शल किए जा सकने वाले ऑपरेशन पैरामीटर के प्रकार पर कोई प्रतिबंध नहीं है, सिवाय इसके कि डेटा बाइंडिंग स्थापित करने के लिए कुछ प्रकार के डिक्लेरेशन कन्वेंशन और एनोटेशन का पालन किया जाना चाहिए।

उदाहरण के द्वारा बाध्यकारी एक्सएमएल डेटा
C/C++ डेटा प्रकारों के साथ XML डेटा बाइंडिंग स्थापित करने के लिए, gSOAP स्रोत कोड एनोटेशन के तीन मूल रूपों का उपयोग करता है: निर्देश, पहचानकर्ता नामकरण परंपराएं, और विराम चिह्न।

पदानुक्रमित कर्मचारी रिकॉर्ड के लिए C में पूरी तरह से एनोटेट संरचना घोषणा के रूप में प्रकट हो सकता है जहां निम्नलिखित एनोटेशन और सम्मेलनों का उपयोग किया जाता है: जीएसओएपी उपकरण सी/सी++ डेटा प्रकारों को एक्सएमएल स्कीमा डेटा प्रकारों से/में परिवर्तित करते हैं। चूंकि सी नेमस्पेस का समर्थन नहीं करता है और स्ट्रक्चर/क्लास सदस्य नाम सी ++ में नेमस्पेस-योग्य नहीं हो सकते हैं, जीएसओएपी में पहचानकर्ता नामकरण सम्मेलनों का उपयोग इस संरचना और इसके सदस्यों को एक एक्सएमएल स्कीमा कॉम्प्लेक्स टाइप से बाध्य करने की अनुमति देता है जो स्वत: उत्पन्न होता है: इसके अलावा, संघ सदस्य चयन के लिए एक विशेष चयनकर्ता क्षेत्र के साथ एनोटेट की गई संरचना/वर्ग में यूनियनों को स्कीमा पसंद कणों से/से मैप किया जाता है, एसटीएल कंटेनरों को अनुक्रम कणों से/से मैप किया जाता है, गणनाओं को एक्सएमएल स्कीमा सरल टाइप गणनाओं से/से मैप किया जाता है, और मानक सी/सी++ आदिम प्रकारों को एक्सएसडी प्रकारों से/से मैप किया जाता है। XSD स्कीमा को C/C++ डेटा प्रकारों में बदलने के लिए, वास्तविक मैपिंग एक प्रकार की मैपिंग फ़ाइल के साथ gSOAP में कॉन्फ़िगर करने योग्य है।
 * पहचानकर्ता नामकरण परंपराओं द्वारा प्रकार और सदस्यों की नामस्थान योग्यता: ns__employee_record, xml__lang
 * सदस्यों के लिए विशेषताएँ: @char*, @int
 * सदस्यों के लिए डिफ़ॉल्ट मान: xml__lang = en, ID = 9999
 * minOccurs के रूप में घटना की कमी: XML सत्यापन के लिए maxOccurs: full_name 1:1, आकार 0:12
 * तत्व अनुक्रमों के गतिशील सरणियों में एक विशेष आकार के क्षेत्र की एक जोड़ी और एक सरणी सूचक सदस्य शामिल होता है: $int size; संरचना ns__employee_record *प्रबंधित करता है

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

स्वत:-जनरेट किए गए XML डेटा बाइंडिंग में फ़ाइल, स्ट्रिंग या स्ट्रीम से पढ़ने और लिखने के संचालन शामिल हैं। उदाहरण के लिए, एक ns__employee_record ऑब्जेक्ट ने पढ़ने और लिखने के संचालन किए हैं: किसी XML फ़ाइल से कर्मचारी रिकॉर्ड पढ़ने के लिए: पार्स किए गए एक्सएमएल को आंतरिक रूप से डेटा बाइंडिंग की बाधाओं के खिलाफ मान्य किया गया है।

एक्सएमएल बाकी एपीआई
एप्लिकेशन डेटा REST XML सेवा को/से भेजा और प्राप्त किया जा सकता है। XML डेटा बाइंडिंग REST XML API कॉल प्रदान करती है। उदाहरण के लिए, पिछले अनुभाग के ns__employee_record XML डेटा बाइंडिंग को देखते हुए, निम्नलिखित GET, PUT और POST ऑपरेशन स्वतः उत्पन्न होते हैं: POST कार्यों को एक साथ बुलाया जाना चाहिए, पहले POST_send XML डेटा को समापन बिंदु URL पर भेजने के लिए और उसके बाद प्रतिक्रिया डेटा को स्वीकार करने के लिए POST_recv (एक अलग प्रकार का हो सकता है)।

प्राप्त XML डेटा बाइंडिंग की बाधाओं के खिलाफ आंतरिक रूप से मान्य है।

सुविधाएँ

 * स्रोत-से-स्रोत कोड जनरेशन के साथ स्वचालित प्रोग्रामिंग पर आधारित C ​​और C++ के लिए XML डेटा बाइंडिंग
 * एएनएसआई सी और आईएसओ सी ++ में अनुकूलन क्लाइंट/सर्वर स्रोत कोड ऑटो-जेनरेशन
 * एकीकृत उच्च गति, स्कीमा-विशिष्ट XML # XML सत्यापन के साथ पार्सिंग खींचें
 * वेब सेवा विवरण भाषा (डब्लूएसडीएल) 1.1 और 2.0
 * वेब सेवाएं SOAP 1.1 और 1.2
 * स्ट्रीमिंग संदेश संचरण अनुकूलन तंत्र  (MTOM) और DIME/MIME अटैचमेंट
 * प्रतिनिधित्वात्मक राज्य स्थानांतरण (REST) ​​HTTP(S) 1.0/1.1
 * सत्यापित WS-I मूल प्रोफ़ाइल 1.0a, 1.1 और 1.2 अनुरूप
 * सत्यापित W3C डेटा बाइंडिंग के लिए स्कीमा पैटर्न, पूर्ण परीक्षण पैटर्न कवरेज
 * सी और सी ++ के लिए एक्सएमएल-आरपीसी
 * सी और सी ++ के लिए जेएसओएन
 * आरएसएस 0.91, 0.92, 2.0
 * डब्ल्यूएस-सुरक्षा
 * डब्ल्यूएस-नीति 1.2, 1.5 और डब्ल्यूएस-सुरक्षा नीति 1.2
 * WS-को संबोधित करते 2003/03, 2004/03, 2005/03
 * डब्ल्यूएस-रिलायबल मैसेजिंग 1.0 और 1.1
 * WS-डिस्कवरी 1.0/1.1
 * सोप-ओवर-यूडीपी
 * यूडीडीआई (यूडीडीआई) v2 एपीआई
 * HTTP बेसिक और डाइजेस्ट ऑथेंटिकेशन, NTLM ऑथेंटिकेशन, प्रॉक्सी ऑथेंटिकेशन
 * एसएसएल सत्र कैशिंग के साथ एसएसएल/टीएलएस के साथ आईपीवी4 और आईपीवी6 (ओपनएसएसएल या जीएनयूटीएलएस पर आधारित)
 * एक्सएमएल संपीड़न gzip के साथ
 * Apache 1.x और 2.0 मॉड्यूल, IIS Isapi और Wininet मॉड्यूल, CGI और FastCGI
 * स्टैंड-अलोन वेब सर्वर सपोर्ट (मल्टीथ्रेडेड, पूलिंग)
 * डीललोकेशन और लीक डिटेक्शन के साथ इंटीग्रेटेड मेमोरी मैनेजमेंट
 * अतिरिक्त क्षमताओं के लिए प्लग-इन के साथ आर्किटेक्चर
 * अंतर्राष्ट्रीयकरण/स्थानीयकरण समर्थन (UTF8, UCS4, MB एनकोडिंग, आदि)
 * प्लेटफ़ॉर्म तटस्थ, छोटे उपकरणों का समर्थन करता है (सिम्बियन, VxWorks, Android, iPhone)

यह भी देखें

 * gSOAP के साथ आरंभ करना
 * प्रोजेक्ट पेज SourceForge पर
 * एक्सएमएल डेटा बाइंडिंग
 * क्रमांकन
 * वेब सेवा ढांचे की सूची
 * वेब सेवा विनिर्देशों की सूची

श्रेणी:वेब सेवाएं श्रेणी:वेब सेवा विनिर्देश