जीएसओएपी

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

इतिहास
जीएसओएपी टूलकिट 1999 में प्रोफेसर रॉबर्ट वैन एंगेलन द्वारा फ्लोरिडा स्टेट यूनिवर्सिटी में एक शोध परियोजना के रूप में प्रारंभ किया गया था। इस परियोजना ने नए विधि प्रस्तुत किए अत्यधिक कुशल एक्सएमएल पार्सिंग के लिए (पुल पार्सिंग) और सीधे एक्सएमएल में और बाद में सोप में भी C/C++ डेटा का क्रमांकन परियोजना सफल हुई एक्सएमएल स्कीमा (डब्ल्यू3सी) प्रकारों और C डेटा प्रकारों की एक विस्तृत विविधता के बीच प्रकार की सुरक्षा या प्रकार-सुरक्षित डेटा बाइंडिंग को परिभाषित करने पर या C/C++ डेटा प्रकार टूलकिट सी/सी++ डेटा को सीधे भेजने और प्राप्त करने के लिए कुशल ऑटो-जेनरेट किए गए एक्सएमएल सीरियलाइज़र का उपयोग करके वेब सेवाओं के विकास और आह्वान को आसान बनाने के लिए स्वचालित प्रोग्रामिंग का उपयोग करता है। एक डोमेन-विशिष्ट कंपाइलर-आधारित टूल स्रोत कोड उत्पन्न करता है जो कुशलतापूर्वक मूल C/C++ डेटा संरचनाओं को एक्सएमएल और बैक में परिवर्तित करता है। टूलकिट को सोप वेब सेवा मैसेजिंग प्रोटोकॉल का समर्थन करने के लिए और विकसित किया गया था, जिसे लगभग उसी समय प्रस्तुत किया गया था, इसलिए नाम जिसोप (जेनेरिक एक्सएमएल और सोप) और वैज्ञानिक डेटा विनिमय के लिए दृष्टिकोण का उपयोग करने के लिए। सॉफ्टवेयर का आगे का विकास और रखरखाव जेनिविया इंक के स्वामित्व में हुआ। इसमें नई डबल्यूएसडीएल और एक्सएमएल स्कीमा (डब्ल्यू3सी) प्रसंस्करण क्षमताओं के साथ-साथ कई डब्ल्यूएस- * वेब सेवा प्रोटोकॉल क्षमताओं जैसे डब्ल्यूएस- सुरक्षा अनुकूलन सम्मिलित हैं।, एक्सएमएल-आरपीसी मैसेजिंग, जेएसओएन डेटा फॉर्मेट के लिए समर्थन, अपाचे और आईआईएस वेब सर्वर में जिसोप को एकीकृत करने के लिए प्लगइन मॉड्यूल और ग्रिड सेवाओं के लिए तृतीय-पक्ष प्लगइन्स।  जिसोप टूलकिट पोर्टेबल C/C++ में लिखा गया है और डबल्यूएसडीएल/एक्सएसडी विनिर्देशों को डबल्यूएसडीएल/एक्सएसडी मेटा-डेटा बाइंडिंग के लिए C/C++ स्रोत कोड में अनुवाद करने के लिए कनवर्टर को प्रयुक्त करने के लिए अपना कोड उत्पन्न करके बूटस्ट्रैपिंग के एक रूप का उपयोग करता है। जिसोप सॉफ़्टवेयर को जीपीएलवी2 ओपन सोर्स लाइसेंस और वाणिज्यिक-उपयोग स्रोत कोड लाइसेंस के तहत लाइसेंस दिया गया है। जीएसओएपी सॉफ्टवेयर का व्यापक रूप से औद्योगिक परियोजनाओं और मिशन-महत्वपूर्ण मूलभूत रूपरेखा में उपयोग किया जाता है।

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

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

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

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

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

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

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

एक्सएमएल बाकी एपीआई
एप्लिकेशन डेटा रेस्ट एक्सएमएल सेवा को/से भेजा और प्राप्त किया जा सकता है। एक्सएमएल डेटा बाइंडिंग रेस्ट एक्सएमएल एपीआई कॉल प्रदान करती है। उदाहरण के लिए, पिछले अनुभाग के एनएस __एम्प्लोई _रिकॉर्ड एक्सएमएल डेटा बाइंडिंग को देखते हुए, निम्नलिखित गेट, पुट और पोस्ट ऑपरेशन स्वतः उत्पन्न होते हैं: पोस्ट कार्यों को एक साथ बुलाया जाना चाहिए, पहले पोस्ट_सेंड एक्सएमएल डेटा को समापन बिंदु यूआरएल पर भेजने के लिए और उसके बाद प्रतिक्रिया डेटा को स्वीकार करने के लिए पोस्ट_रिक (एक अलग प्रकार का हो सकता है)।

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

सुविधाएँ

 * स्रोत-से-स्रोत कोड जनरेशन के साथ स्वचालित प्रोग्रामिंग पर आधारित C ​​और C++ के लिए एक्सएमएल डेटा बाइंडिंग
 * एएनएसआई सी और आईएसओ C++ में अनुकूलन क्लाइंट/सर्वर स्रोत कोड ऑटो-जेनरेशन
 * एकीकृत उच्च गति, स्कीमा-विशिष्ट एक्सएमएल या एक्सएमएल सत्यापन के साथ पार्सिंग खींचें
 * वेब सेवा विवरण भाषा (डब्लूएसडीएल) 1.1 और 2.0
 * वेब सेवाएं सोप 1.1 और 1.2
 * स्ट्रीमिंग संदेश संचरण अनुकूलन तंत्र (एमटीओएम) और डाइम/माइम अटैचमेंट
 * प्रतिनिधित्वात्मक राज्य स्थानांतरण (रेस्ट) ​​एचटीटीपी(एस) 1.0/1.1
 * सत्यापित डब्ल्यूएस-आई मूल प्रोफ़ाइल 1.0a, 1.1 और 1.2 अनुरूप
 * सत्यापित डब्ल्यू3सी डेटा बाइंडिंग के लिए स्कीमा पैटर्न, पूर्ण परीक्षण पैटर्न कवरेज
 * सी और C++ के लिए एक्सएमएल-आरपीसी
 * सी और C++ के लिए जेएसओएन
 * आरएसएस 0.91, 0.92, 2.0
 * डब्ल्यूएस-सुरक्षा
 * डब्ल्यूएस-नीति 1.2, 1.5 और डब्ल्यूएस-सुरक्षा नीति 1.2
 * डब्ल्यूएस-को संबोधित करते 2003/03, 2004/03, 2005/03
 * डब्ल्यूएस-रिलायबल मैसेजिंग 1.0 और 1.1
 * डब्ल्यूएस-डिस्कवरी 1.0/1.1
 * सोप-ओवर-यूडीपी
 * यूडीडीआई (यूडीडीआई) v2 एपीआई
 * एचटीटीपी बेसिक और डाइजेस्ट ऑथेंटिकेशन, एनटीएलएम ऑथेंटिकेशन, प्रॉक्सी ऑथेंटिकेशन
 * एसएसएल सत्र कैशिंग के साथ एसएसएल/टीएलएस के साथ आईपीवी4 और आईपीवी6 (ओपनएसएसएल या जीएनयूटीएलएस पर आधारित)
 * एक्सएमएल संपीड़न गज़िप के साथ
 * अपाचे 1.x और 2.0 मॉड्यूल, आईआईएस इसापी और विनिनेट मॉड्यूल, सीजीआई और फास्टसीजीआई
 * स्टैंड-अलोन वेब सर्वर सपोर्ट (मल्टीथ्रेडेड, पूलिंग)
 * डीललोकेशन और लीक डिटेक्शन के साथ इंटीग्रेटेड मेमोरी मैनेजमेंट
 * अतिरिक्त क्षमताओं के लिए प्लग-इन के साथ आर्किटेक्चर
 * अंतर्राष्ट्रीयकरण/स्थानीयकरण समर्थन (यूटीएफ8, यूसीएस4, एमबीएनकोडिंग, आदि)
 * प्लेटफ़ॉर्म तटस्थ, छोटे उपकरणों का समर्थन करता है (सिम्बियन,वीएक्सवर्क्स, एंड्रॉइड, आईफोन)

यह भी देखें

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

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

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