जीएसओएपी: Difference between revisions

From Vigyanwiki
(Created page with "{{DISPLAYTITLE:gSOAP}} {{Infobox software | name = gSOAP | logo = | screenshot = | caption = | developer...")
 
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 16: Line 16:
}}
}}


gSOAP<ref name="ref2008">{{cite journal|last=van Engelen|first=Robert|date=2008|title=C और C++ वेब सेवा घटकों के साथ सेवा-उन्मुख कंप्यूटिंग के लिए एक रूपरेखा|journal=ACM Transactions on Internet Technology |volume=8|issue=3|pages=106–115|doi=10.1145/1361186.1361188}}</ref><ref name="ref2002">{{cite conference|last1=van Engelen|first1=Robert|last2=Gallivan|first2=Kyle|date=2002|title=वेब सेवाओं और पीयर-टू-पीयर कंप्यूटिंग नेटवर्क के लिए gSOAP टूलकिट|pages=128–135|conference=IEEE International Symposium on Cluster Computing and the Grid}}</ref> [[SOAP]]/[[XML]] [[वेब सेवा]]ओं और सामान्य XML डेटा बाइंडिंग के लिए C और C++ सॉफ़्टवेयर डेवलपमेंट टूलकिट है। C/C++ प्रकार की घोषणाओं के एक सेट को देखते हुए, संकलक-आधारित gSOAP उपकरण निर्दिष्ट C और C++ डेटा संरचनाओं के कुशल XML क्रमांकन के लिए स्रोत कोड में क्रमांकन रूटीन उत्पन्न करते हैं। [[क्रमबद्धता]] [[शून्य-प्रतिलिपि]] ओवरहेड लेता है।
जीएसओएपी <ref name="ref2008">{{cite journal|last=van Engelen|first=Robert|date=2008|title=C और C++ वेब सेवा घटकों के साथ सेवा-उन्मुख कंप्यूटिंग के लिए एक रूपरेखा|journal=ACM Transactions on Internet Technology |volume=8|issue=3|pages=106–115|doi=10.1145/1361186.1361188}}</ref><ref name="ref2002">{{cite conference|last1=van Engelen|first1=Robert|last2=Gallivan|first2=Kyle|date=2002|title=वेब सेवाओं और पीयर-टू-पीयर कंप्यूटिंग नेटवर्क के लिए gSOAP टूलकिट|pages=128–135|conference=IEEE International Symposium on Cluster Computing and the Grid}}</ref> [[SOAP|एसओएपी]]/[[XML|एक्सएमएल]] [[वेब सेवा]]ओं और सामान्य एक्सएमएल डेटा बाइंडिंग के लिए C और C++ सॉफ़्टवेयर डेवलपमेंट टूलकिट है। C/C++ प्रकार की घोषणाओं के एक सेट को देखते हुए, संकलक-आधारित जीएसओएपी उपकरण निर्दिष्ट C और C++ डेटा संरचनाओं के कुशल एक्सएमएल क्रमांकन के लिए स्रोत कोड में क्रमांकन रूटीन उत्पन्न करते हैं। [[क्रमबद्धता]] [[शून्य-प्रतिलिपि]] ओवरहेड लेता है।


== इतिहास ==
== इतिहास                                                                                       ==
जीएसओएपी टूलकिट 1999 में प्रोफेसर रॉबर्ट वैन एंगेलन द्वारा [[फ्लोरिडा स्टेट यूनिवर्सिटी]] में एक शोध परियोजना के रूप में शुरू किया गया था। इस परियोजना ने नए तरीके पेश किए<ref name="ref2002"/>अत्यधिक कुशल XML पार्सिंग के लिए (पुल पार्सिंग)<ref>{{cite conference|last1=Head|first1=Michael|last2=Govinderaju|first2=Madhu|last3=Slominski|first3=Aleksander|last4=Liu|first4=Pu|last5=Abu-Ghazaleh|first5= Nayef|last6=van Engelen|first6=Robert|last7=Chiu|first7=Kenneth|date=2005|title=ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर|conference=IEEE/ACM Supercomputing (SC)}}</ref><ref>{{cite conference|last1=Head|first1=Michael|last2=Govinderaju|first2=Madhu|last3=van Engelen|first3=Robert|last4=Zhang|first4=Wei|date=2006|title=ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर|conference=IEEE/ACM Supercomputing (SC)}}</ref> और सीधे XML में और बाद में SOAP में भी C/C++ डेटा का क्रमांकन। परियोजना सफल हुई<ref>{{cite conference|last1=van Engelen|first1=Robert|last2=Govindaraju|first2=Madhu|last3=Zhang|first3=Wei|date=2006|title=XML वेब सेवाओं में दूरस्थ वस्तु सुसंगतता की खोज|pages=249–256|conference=International Conference on Web Services (ICWS)}}</ref> [[XML स्कीमा (W3C)]] प्रकारों और C डेटा प्रकारों की एक विस्तृत विविधता के बीच [[प्रकार की सुरक्षा]] | प्रकार-सुरक्षित डेटा बाइंडिंग को परिभाषित करने पर | C/C++ डेटा प्रकार। टूलकिट सी/सी++ डेटा को सीधे भेजने और प्राप्त करने के लिए कुशल ऑटो-जेनरेट किए गए एक्सएमएल सीरियलाइज़र का उपयोग करके वेब सेवाओं के विकास और आह्वान को आसान बनाने के लिए [[स्वचालित प्रोग्रामिंग]] का उपयोग करता है। एक डोमेन-विशिष्ट कंपाइलर-आधारित टूल स्रोत कोड उत्पन्न करता है जो कुशलतापूर्वक मूल C/C++ डेटा संरचनाओं को XML और बैक में परिवर्तित करता है।<ref name="ref2008"></ref> टूलकिट को SOAP वेब सेवा मैसेजिंग प्रोटोकॉल का समर्थन करने के लिए और विकसित किया गया था, जिसे लगभग उसी समय पेश किया गया था, इसलिए नाम gSOAP (जेनेरिक XML और SOAP) और वैज्ञानिक डेटा विनिमय के लिए दृष्टिकोण का उपयोग करने के लिए।<ref>{{cite conference|last=van Engelen|first=Robert|date=2003|title=वैज्ञानिक कंप्यूटिंग के लिए वेब सेवाओं के साथ SOAP लिफाफे को आगे बढ़ाना|pages=346–354|conference=Conference on Web Services (ICWS)}}</ref> सॉफ्टवेयर का आगे का विकास और रखरखाव जेनिविया इंक के स्वामित्व में हुआ। इसमें नई [[WSDL]] और XML स्कीमा (W3C) प्रसंस्करण क्षमताओं के साथ-साथ कई WS- * वेब सेवा प्रोटोकॉल क्षमताओं जैसे WS- सुरक्षा अनुकूलन शामिल हैं। ,<ref>{{cite conference|last1=Robert|first1=van Engelen|last2=Zhang|first2=Wei|date=2008|title=वेब सेवा सुरक्षा प्रदर्शन अनुकूलन का अवलोकन और मूल्यांकन|pages=137–144|conference=IEEE International Conference on Web Services (ICWS)}}</ref> [[XML-RPC]] मैसेजिंग, [[JSON]] डेटा फॉर्मेट के लिए समर्थन, Apache और IIS वेब सर्वर में gSOAP को एकीकृत करने के लिए प्लगइन मॉड्यूल और ग्रिड सेवाओं के लिए तृतीय-पक्ष प्लगइन्स।<ref>{{cite conference|last1=Aloisio|first1=Giovanni|last2=Cafaro|first2=Massimo|last3=Epicoco|first3=Italo|last4=Lezzi|first4=Daniele|last5=van Engelen|first5=Robert|date=2005|title=The GSI plug-in for gSOAP: Enhanced Security, Performance, and Reliability|pages=304–309|conference=International Conference on Information Technology (ITCC)}}</ref><ref>{{cite conference|last1=Cafaro|first1=Massimo|last2=Lezzi|first2=Daniele|last3=Fiore|first3=Sandro|last4=Aloisio|first4=Giovanni|last5=van Engelen|first5=Robert|date=2007|title=The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services|pages=894–901|conference=International Conference on Parallel Processing and Applied Mathematics (PPAM) 2007, workshop on Models, Algorithms and Methodologies for Grid-enabled Computing Environment (MAMGCE), Springer Verlag LNCS Volume 4967}}</ref> gSOAP टूलकिट पोर्टेबल C/C++ में लिखा गया है और WSDL/XSD विनिर्देशों को WSDL/XSD मेटा-डेटा बाइंडिंग के लिए C/C++ स्रोत कोड में अनुवाद करने के लिए कनवर्टर को लागू करने के लिए अपना कोड उत्पन्न करके [[बूटस्ट्रैपिंग]] के एक रूप का उपयोग करता है। gSOAP सॉफ़्टवेयर को GPLv2 ओपन सोर्स लाइसेंस और वाणिज्यिक-उपयोग स्रोत कोड लाइसेंस के तहत लाइसेंस दिया गया है। जीएसओएपी सॉफ्टवेयर का व्यापक रूप से औद्योगिक परियोजनाओं में उपयोग किया जाता है<ref>{{cite book|last1=Challener|first1=David|last2=Yoder|first2=Kent|last3=Catherman|first3=Ryan|last4=Safford|first4=David|last5=Van Doorn|first5=Leendert|date=2007|title=भरोसेमंद कंप्यूटिंग के लिए एक व्यावहारिक गाइड|publisher=Pearson Education}}</ref> और मिशन-क्रिटिकल इन्फ्रास्ट्रक्चर।
जीएसओएपी टूलकिट 1999 में प्रोफेसर रॉबर्ट वैन एंगेलन द्वारा [[फ्लोरिडा स्टेट यूनिवर्सिटी]] में एक शोध परियोजना के रूप में प्रारंभ किया गया था। इस परियोजना ने नए विधि प्रस्तुत किए<ref name="ref2002"/>अत्यधिक कुशल एक्सएमएल पार्सिंग के लिए (पुल पार्सिंग)<ref>{{cite conference|last1=Head|first1=Michael|last2=Govinderaju|first2=Madhu|last3=Slominski|first3=Aleksander|last4=Liu|first4=Pu|last5=Abu-Ghazaleh|first5= Nayef|last6=van Engelen|first6=Robert|last7=Chiu|first7=Kenneth|date=2005|title=ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर|conference=IEEE/ACM Supercomputing (SC)}}</ref><ref>{{cite conference|last1=Head|first1=Michael|last2=Govinderaju|first2=Madhu|last3=van Engelen|first3=Robert|last4=Zhang|first4=Wei|date=2006|title=ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर|conference=IEEE/ACM Supercomputing (SC)}}</ref> और सीधे एक्सएमएल में और बाद में सोप में भी C/C++ डेटा का क्रमांकन परियोजना सफल हुई<ref>{{cite conference|last1=van Engelen|first1=Robert|last2=Govindaraju|first2=Madhu|last3=Zhang|first3=Wei|date=2006|title=XML वेब सेवाओं में दूरस्थ वस्तु सुसंगतता की खोज|pages=249–256|conference=International Conference on Web Services (ICWS)}}</ref> [[XML स्कीमा (W3C)|एक्सएमएल स्कीमा (डब्ल्यू3सी)]] प्रकारों और C डेटा प्रकारों की एक विस्तृत विविधता के बीच [[प्रकार की सुरक्षा]] या प्रकार-सुरक्षित डेटा बाइंडिंग को परिभाषित करने पर या C/C++ डेटा प्रकार टूलकिट सी/सी++ डेटा को सीधे भेजने और प्राप्त करने के लिए कुशल ऑटो-जेनरेट किए गए एक्सएमएल सीरियलाइज़र का उपयोग करके वेब सेवाओं के विकास और आह्वान को आसान बनाने के लिए [[स्वचालित प्रोग्रामिंग]] का उपयोग करता है। एक डोमेन-विशिष्ट कंपाइलर-आधारित टूल स्रोत कोड उत्पन्न करता है जो कुशलतापूर्वक मूल C/C++ डेटा संरचनाओं को एक्सएमएल और बैक में परिवर्तित करता है।<ref name="ref2008"></ref> टूलकिट को सोप वेब सेवा मैसेजिंग प्रोटोकॉल का समर्थन करने के लिए और विकसित किया गया था, जिसे लगभग उसी समय प्रस्तुत किया गया था, इसलिए नाम जिसोप (जेनेरिक एक्सएमएल और सोप) और वैज्ञानिक डेटा विनिमय के लिए दृष्टिकोण का उपयोग करने के लिए।<ref>{{cite conference|last=van Engelen|first=Robert|date=2003|title=वैज्ञानिक कंप्यूटिंग के लिए वेब सेवाओं के साथ SOAP लिफाफे को आगे बढ़ाना|pages=346–354|conference=Conference on Web Services (ICWS)}}</ref> सॉफ्टवेयर का आगे का विकास और रखरखाव जेनिविया इंक के स्वामित्व में हुआ। इसमें नई [[WSDL|डबल्यूएसडीएल]] और एक्सएमएल स्कीमा (डब्ल्यू3सी) प्रसंस्करण क्षमताओं के साथ-साथ कई डब्ल्यूएस- * वेब सेवा प्रोटोकॉल क्षमताओं जैसे डब्ल्यूएस- सुरक्षा अनुकूलन सम्मिलित हैं। ,<ref>{{cite conference|last1=Robert|first1=van Engelen|last2=Zhang|first2=Wei|date=2008|title=वेब सेवा सुरक्षा प्रदर्शन अनुकूलन का अवलोकन और मूल्यांकन|pages=137–144|conference=IEEE International Conference on Web Services (ICWS)}}</ref> [[XML-RPC|एक्सएमएल-आरपीसी]] मैसेजिंग, [[JSON|जेएसओएन]] डेटा फॉर्मेट के लिए समर्थन, अपाचे और आईआईएस वेब सर्वर में जिसोप को एकीकृत करने के लिए प्लगइन मॉड्यूल और ग्रिड सेवाओं के लिए तृतीय-पक्ष प्लगइन्स।<ref>{{cite conference|last1=Aloisio|first1=Giovanni|last2=Cafaro|first2=Massimo|last3=Epicoco|first3=Italo|last4=Lezzi|first4=Daniele|last5=van Engelen|first5=Robert|date=2005|title=The GSI plug-in for gSOAP: Enhanced Security, Performance, and Reliability|pages=304–309|conference=International Conference on Information Technology (ITCC)}}</ref><ref>{{cite conference|last1=Cafaro|first1=Massimo|last2=Lezzi|first2=Daniele|last3=Fiore|first3=Sandro|last4=Aloisio|first4=Giovanni|last5=van Engelen|first5=Robert|date=2007|title=The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services|pages=894–901|conference=International Conference on Parallel Processing and Applied Mathematics (PPAM) 2007, workshop on Models, Algorithms and Methodologies for Grid-enabled Computing Environment (MAMGCE), Springer Verlag LNCS Volume 4967}}</ref> जिसोप टूलकिट पोर्टेबल C/C++ में लिखा गया है और डबल्यूएसडीएल/एक्सएसडी विनिर्देशों को डबल्यूएसडीएल/एक्सएसडी मेटा-डेटा बाइंडिंग के लिए C/C++ स्रोत कोड में अनुवाद करने के लिए कनवर्टर को प्रयुक्त करने के लिए अपना कोड उत्पन्न करके [[बूटस्ट्रैपिंग]] के एक रूप का उपयोग करता है। जिसोप सॉफ़्टवेयर को जीपीएलवी2 ओपन सोर्स लाइसेंस और वाणिज्यिक-उपयोग स्रोत कोड लाइसेंस के तहत लाइसेंस दिया गया है। जीएसओएपी सॉफ्टवेयर का व्यापक रूप से औद्योगिक परियोजनाओं और मिशन-महत्वपूर्ण मूलभूत रूपरेखा में उपयोग किया जाता है।<ref>{{cite book|last1=Challener|first1=David|last2=Yoder|first2=Kent|last3=Catherman|first3=Ryan|last4=Safford|first4=David|last5=Van Doorn|first5=Leendert|date=2007|title=भरोसेमंद कंप्यूटिंग के लिए एक व्यावहारिक गाइड|publisher=Pearson Education}}</ref>  


== एक्सएमएल वेब सेवा संचालन उदाहरण के द्वारा ==
== एक्सएमएल वेब सेवा संचालन उदाहरण के द्वारा                               ==


एक होटल के रहने की दर को पुनः प्राप्त करने के लिए C में एक उदाहरण वेब सेवा संचालन, कई मेहमानों को एनोटेट रूप में घोषित किया जा सकता है
एक होटल के रहने की दर को पुनः प्राप्त करने के लिए C में एक उदाहरण वेब सेवा संचालन कई मेहमानों को एनोटेट रूप में घोषित किया जा सकता है
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
//gsoap ns service namespace: tempuri
//gsoap ns service namespace: tempuri
Line 30: Line 30:
int ns__get_rate(char* hotel, int guests, float *rate);
int ns__get_rate(char* hotel, int guests, float *rate);
</syntaxhighlight>
</syntaxhighlight>
फ़ंक्शन का अंतिम पैरामीटर हमेशा सेवा वापसी मान होता है, जिसे एक तरफ़ा संचालन के लिए शून्य के रूप में दर्शाया जा सकता है और कई सेवा वापसी मापदंडों को बंडल करने के लिए एक संरचना / वर्ग होना चाहिए। त्रुटि निदान के लिए फ़ंक्शन का int वापसी मान उपयोग किया जाता है।
फ़ंक्शन का अंतिम पैरामीटर सदैव सेवा वापसी मान होता है, जिसे एक तरफ़ा संचालन के लिए शून्य के रूप में दर्शाया जा सकता है और कई सेवा वापसी मापदंडों को बंडल करने के लिए संरचना / वर्ग होना चाहिए। त्रुटि निदान के लिए फ़ंक्शन का इंट वापसी मान उपयोग किया जाता है।


ऑटो-जेनरेट किए गए साबुन_कॉल_एनएस__get_rate फ़ंक्शन का उपयोग करके सी में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया गया है:
ऑटो-जेनरेट किए गए सोप_कॉल_एनएस__गेट_रेट फ़ंक्शन का उपयोग करके सी में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया गया है:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
const char *URL = "http://www.example.com/hotels";
const char *URL = "http://www.example.com/hotels";
Line 44: Line 44:
soap_free(ctx);  // deallocate context
soap_free(ctx);  // deallocate context
</syntaxhighlight>
</syntaxhighlight>
लीगेसी C और C++ सिस्टम के लिए वेब सेवाओं के कार्यान्वयन की सुविधा के लिए, C/C++ में पहचानकर्ता नामों की उपसर्ग योग्यता को छोड़ा जा सकता है या कोलन नोटेशन द्वारा प्रतिस्थापित किया जा सकता है, उदाहरण के लिए ns:get_rate बजाय ns__get_rate। प्रोजेक्ट बिल्ड में उपयोग किए जाने वाले ऑटो-जेनरेट किए गए स्रोत कोड में विराम चिह्न हटा दिया गया है।
लीगेसी C और C++ सिस्टम के लिए वेब सेवाओं के कार्यान्वयन की सुविधा के लिए, C/C++ में पहचानकर्ता नामों की उपसर्ग योग्यता को छोड़ा जा सकता है या कोलन नोटेशन द्वारा प्रतिस्थापित किया जा सकता है, उदाहरण के लिए एनएस:गेट_रेट अतिरिक्त एनएस__गेट_रेट प्रोजेक्ट बिल्ड में उपयोग किए जाने वाले ऑटो-जेनरेट किए गए स्रोत कोड में विराम चिह्न हटा दिया गया है।


ऑटो-जेनरेट प्रॉक्सी क्लास का उपयोग कर सी ++ में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया जाता है (प्रॉक्सी के डिफ़ॉल्ट एंडपॉइंट यूआरएल और एसओएपी एक्शन वैल्यू का उपयोग करके):
ऑटो-जेनरेट प्रॉक्सी क्लास का उपयोग कर C++ में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया जाता है (प्रॉक्सी के डिफ़ॉल्ट एंडपॉइंट यूआरएल और एसओएपी एक्शन वैल्यू का उपयोग करके):
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Proxy proxy;
Proxy proxy;
Line 55: Line 55:
proxy.destroy();  // deallocate deserialized data
proxy.destroy();  // deallocate deserialized data
</syntaxhighlight>
</syntaxhighlight>
एनोटेशन और पहचानकर्ता नामकरण परंपराओं का उपयोग करके, यानी फ़ंक्शन ns__get_rate के लिए उपसर्ग ns__ के साथ योग्यता और उदाहरण में //gsoap निर्देशों का उपयोग करके ns नामस्थान के गुणों की घोषणा करके, वेब सेवा संचालन के लिए एक बंधन स्थापित किया जाता है। ऑटो-जेनरेट की गई वेब सर्विसेज डिस्क्रिप्शन लैंग्वेज (WSDL) दस्तावेज़ एक अनुरोध संदेश, एक प्रतिक्रिया संदेश और गेट-रेट ऑपरेशन पोर्ट टाइप इंटरफ़ेस और SOAP बाइंडिंग को ns__get_rate फ़ंक्शन के लिए निम्नानुसार घोषित करता है:
एनोटेशन और पहचानकर्ता नामकरण परंपराओं का उपयोग करके, यानी फ़ंक्शन एनएस__गेट_रेट के लिए उपसर्ग एनएस__ के साथ योग्यता और उदाहरण में //जीएसओएपी निर्देशों का उपयोग करके एनएस नामस्थान के गुणों की घोषणा करके वेब सेवा संचालन के लिए एक बंधन स्थापित किया जाता है। ऑटो-जेनरेट की गई वेब सर्विसेज डिस्क्रिप्शन लैंग्वेज (डबल्यूएसडीएल) दस्तावेज़ एक अनुरोध संदेश एक प्रतिक्रिया संदेश और गेट-रेट ऑपरेशन पोर्ट टाइप इंटरफ़ेस और सोप बाइंडिंग को एनएस__गेट_रेट फ़ंक्शन के लिए निम्नानुसार घोषित करता है:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<definitions name="Service" targetNamespace="tempuri" xmlns:tns="tempuri" xmlns:ns="tempuri"
<definitions name="Service" targetNamespace="tempuri" xmlns:tns="tempuri" xmlns:ns="tempuri"
Line 109: Line 109:
</types>
</types>
</syntaxhighlight>
</syntaxhighlight>
इसी तरह, क्लाइंट और सर्वर C/C++ सोर्स कोड को WSDLs और XML स्कीमा के सेट से ऑटो-जनरेट किया जा सकता है। उपयुक्त सेवा संचालन को परिभाषित करके सेवाओं को पूरा किया जाना चाहिए। उदाहरण के लिए, इस डब्लूएसडीएल के लिए स्वत: उत्पन्न सी ++ सर्विस क्लास को get_rate विधि को निम्नानुसार परिभाषित करके पूरा किया जाना चाहिए:
इसी तरह, क्लाइंट और सर्वर C/C++ सोर्स कोड को डबल्यूएसडीएलएस और एक्सएमएल स्कीमा के सेट से ऑटो-जनरेट किया जा सकता है। उपयुक्त सेवा संचालन को परिभाषित करके सेवाओं को पूरा किया जाना चाहिए। उदाहरण के लिए, इस डब्लूएसडीएल के लिए स्वत: उत्पन्न सी ++ सर्विस क्लास को गेट_रेट विधि को निम्नानुसार परिभाषित करके पूरा किया जाना चाहिए:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
int Service::get_rate(char *hotel, int guests, float *rate)
int Service::get_rate(char *hotel, int guests, float *rate)
Line 117: Line 117:
}
}
</syntaxhighlight>
</syntaxhighlight>
वेब सर्विस मैसेजिंग के लिए एक्सएमएल में मार्शल किए जा सकने वाले ऑपरेशन पैरामीटर के प्रकार पर कोई प्रतिबंध नहीं है, सिवाय इसके कि डेटा बाइंडिंग स्थापित करने के लिए कुछ प्रकार के डिक्लेरेशन कन्वेंशन और एनोटेशन का पालन किया जाना चाहिए।
वेब सर्विस मैसेजिंग के लिए एक्सएमएल में मार्शल किए जा सकने वाले ऑपरेशन पैरामीटर के प्रकार पर कोई प्रतिबंध नहीं है, अतिरिक्त इसके कि डेटा बाइंडिंग स्थापित करने के लिए कुछ प्रकार के डिक्लेरेशन कन्वेंशन और एनोटेशन का पालन किया जाना चाहिए।


== उदाहरण के द्वारा बाध्यकारी एक्सएमएल डेटा ==
== उदाहरण के द्वारा बाध्यकारी एक्सएमएल डेटा ==


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


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


उदाहरण के लिए पदानुक्रमित कर्मचारी संरचना का एक उदाहरण एक्सएमएल में डिफ़ॉल्ट रूप से पेड़ के रूप में क्रमबद्ध है, उदाहरण के लिए
उदाहरण के लिए पदानुक्रमित कर्मचारी संरचना का एक उदाहरण एक्सएमएल में डिफ़ॉल्ट रूप से ट्री के रूप में क्रमबद्ध है, उदाहरण के लिए
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<ns:employee xmlns:ns="tempuri" xml:lang="en" ns:ID="12">
<ns:employee xmlns:ns="tempuri" xml:lang="en" ns:ID="12">
Line 176: Line 176:
</ns:employee>
</ns:employee>
</syntaxhighlight>
</syntaxhighlight>
जब SOAP एन्कोडिंग शैली सक्षम होती है, तो gSOAP में XML क्रमांकन, SOAP एन्कोडिंग नियमों के अनुसार सह-संदर्भित वस्तुओं और चक्रीय डेटा संरचनाओं का सम्मान करता है, जिसके परिणामस्वरूप XML आईडी-रेफरी किनारों के साथ होता है।
जब सोप एन्कोडिंग शैली सक्षम होती है, तो जिसोप में एक्सएमएल क्रमांकन, सोप एन्कोडिंग नियमों के अनुसार सह-संदर्भित वस्तुओं और चक्रीय डेटा संरचनाओं का सम्मान करता है, जिसके परिणामस्वरूप एक्सएमएल आईडी-रेफरी किनारों के साथ होता है।


स्वत:-जनरेट किए गए XML डेटा बाइंडिंग में फ़ाइल, स्ट्रिंग या स्ट्रीम से पढ़ने और लिखने के संचालन शामिल हैं। उदाहरण के लिए, एक ns__employee_record ऑब्जेक्ट ने पढ़ने और लिखने के संचालन किए हैं:
स्वत:-जनरेट किए गए एक्सएमएल डेटा बाइंडिंग में फ़ाइल, स्ट्रिंग या स्ट्रीम से पढ़ने और लिखने के संचालन सम्मिलित हैं। उदाहरण के लिए, एक एनएस __एम्प्लोई _रिकॉर्ड ऑब्जेक्ट ने पढ़ने और लिखने के संचालन किए हैं:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
int soap_read_ns__employee_record(struct soap*, ns__employee_record*);
int soap_read_ns__employee_record(struct soap*, ns__employee_record*);
int soap_write_ns__employee_record(struct soap*, const ns__employee_record*);
int soap_write_ns__employee_record(struct soap*, const ns__employee_record*);
</syntaxhighlight>
</syntaxhighlight>
किसी XML फ़ाइल से कर्मचारी रिकॉर्ड पढ़ने के लिए:
किसी एक्सएमएल फ़ाइल से कर्मचारी रिकॉर्ड पढ़ने के लिए:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
struct soap *ctx = soap_new();
struct soap *ctx = soap_new();
Line 198: Line 198:
soap_free(ctx);
soap_free(ctx);
</syntaxhighlight>
</syntaxhighlight>
पार्स किए गए एक्सएमएल को आंतरिक रूप से डेटा बाइंडिंग की बाधाओं के खिलाफ मान्य किया गया है।
पार्स किए गए एक्सएमएल को आंतरिक रूप से डेटा बाइंडिंग की बाधाओं के विपरीत मान्य किया गया है।


== एक्सएमएल बाकी एपीआई ==
== एक्सएमएल बाकी एपीआई ==


एप्लिकेशन डेटा REST XML सेवा को/से भेजा और प्राप्त किया जा सकता है। XML डेटा बाइंडिंग REST XML API कॉल प्रदान करती है। उदाहरण के लिए, पिछले अनुभाग के ns__employee_record XML डेटा बाइंडिंग को देखते हुए, निम्नलिखित GET, PUT और POST ऑपरेशन स्वतः उत्पन्न होते हैं:
एप्लिकेशन डेटा रेस्ट एक्सएमएल सेवा को/से भेजा और प्राप्त किया जा सकता है। एक्सएमएल डेटा बाइंडिंग रेस्ट एक्सएमएल एपीआई कॉल प्रदान करती है। उदाहरण के लिए, पिछले अनुभाग के एनएस __एम्प्लोई _रिकॉर्ड एक्सएमएल डेटा बाइंडिंग को देखते हुए, निम्नलिखित गेट , पुट और पोस्ट ऑपरेशन स्वतः उत्पन्न होते हैं:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
int soap_GET_ns__employee_record(struct soap*, const char *URL, ns__employee_record*);
int soap_GET_ns__employee_record(struct soap*, const char *URL, ns__employee_record*);
Line 209: Line 209:
int soap_POST_recv_ns__employee_record(struct soap*, ns__employee_record*);
int soap_POST_recv_ns__employee_record(struct soap*, ns__employee_record*);
</syntaxhighlight>
</syntaxhighlight>
POST कार्यों को एक साथ बुलाया जाना चाहिए, पहले POST_send XML डेटा को समापन बिंदु URL पर भेजने के लिए और उसके बाद प्रतिक्रिया डेटा को स्वीकार करने के लिए POST_recv (एक अलग प्रकार का हो सकता है)।
पोस्ट कार्यों को एक साथ बुलाया जाना चाहिए, पहले पोस्ट_सेंड एक्सएमएल डेटा को समापन बिंदु यूआरएल पर भेजने के लिए और उसके बाद प्रतिक्रिया डेटा को स्वीकार करने के लिए पोस्ट_रिक (एक अलग प्रकार का हो सकता है)।


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


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


== संदर्भ ==
== संदर्भ ==
Line 248: Line 248:


== यह भी देखें ==
== यह भी देखें ==
* [http://www.genivia.com/dev.html gSOAP के साथ आरंभ करना]
* [http://www.genivia.com/dev.html जिसोप के साथ आरंभ करना]
* [http://sourceforge.net/projects/gsoap2 प्रोजेक्ट पेज SourceForge पर]
* [http://sourceforge.net/projects/gsoap2 प्रोजेक्ट पेज सोर्सफोर्ज पर]
* एक्सएमएल डेटा बाइंडिंग
* एक्सएमएल डेटा बाइंडिंग
* क्रमांकन
* क्रमांकन
* [[वेब सेवा ढांचे की सूची]]
* [[वेब सेवा ढांचे की सूची|वेब सेवा रूपरेखा की सूची]]
* [[वेब सेवा विनिर्देशों की सूची]]
* [[वेब सेवा विनिर्देशों की सूची]]


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


[[Category: Machine Translated Page]]
[[Category:Created On 14/06/2023]]
[[Category:Created On 14/06/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with ignored display titles]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]

Latest revision as of 19:14, 12 July 2023

gSOAP
Developer(s)Robert van Engelen
Initial releaseDecember 8, 2000; 23 years ago (2000-12-08)
Stable release
2.8.129 / June 11, 2023 (2023-06-11)
Written inC and C++
Operating systemCross-platform
TypeWeb development software
LicenseGPL v2, commercial licensing
Websitehttps://www.genivia.com/dev.html
https://sourceforge.net/projects/gsoap2/

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

इतिहास

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

एक्सएमएल वेब सेवा संचालन उदाहरण के द्वारा

एक होटल के रहने की दर को पुनः प्राप्त करने के लिए C में एक उदाहरण वेब सेवा संचालन कई मेहमानों को एनोटेट रूप में घोषित किया जा सकता है

//gsoap ns service namespace: tempuri
//gsoap ns service style:     document
//gsoap ns service encoding:  literal
int ns__get_rate(char* hotel, int guests, float *rate);

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

ऑटो-जेनरेट किए गए सोप_कॉल_एनएस__गेट_रेट फ़ंक्शन का उपयोग करके सी में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया गया है:

const char *URL = "http://www.example.com/hotels";
const char *action = NULL;
struct soap *ctx = soap_new();  // new context
float rate;
int err = soap_call_ns__get_rate(ctx, URL, action, "Happy Inn", 2, &rate);
if (err == SOAP_OK && rate < 100.00)
  lets_go();
soap_end(ctx);   // deallocate deserialized data
soap_free(ctx);  // deallocate context

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

ऑटो-जेनरेट प्रॉक्सी क्लास का उपयोग कर C++ में एक सेवा आमंत्रण निम्नानुसार निष्पादित किया जाता है (प्रॉक्सी के डिफ़ॉल्ट एंडपॉइंट यूआरएल और एसओएपी एक्शन वैल्यू का उपयोग करके):

Proxy proxy;
float rate;
int err = proxy.get_rate("Happy Inn", 2, &rate);
if (err == SOAP_OK && rate < 100.00)
  lets_go();
proxy.destroy();  // deallocate deserialized data

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

<definitions name="Service" targetNamespace="tempuri" xmlns:tns="tempuri" xmlns:ns="tempuri"
  xmlns="http://schemas.xmlsoap.org/wsdl/">
...
<message name="get-rateRequest">
 <part name="parameters" element="ns:get-rate"/>
</message>
<message name="get-rateResponse">
 <part name="parameters" element="ns:get-rateResponse"/>
</message>

<portType name="ServicePortType">
 <operation name="get-rate">
  <input message="tns:get-rateRequest"/>
  <output message="tns:get-rateResponse"/>
 </operation>
</portType>

<binding name="Service" type="tns:ServicePortType">
 <SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
 <operation name="get-rate">
  <SOAP:operation soapAction=""/>
  <input>
   <SOAP:body parts="parameters" use="literal"/>
  </input>
  <output>
   <SOAP:body parts="parameters" use="literal"/>
  </output>
 </operation>
</binding>

जहां ऑपरेशन के अनुरोध और प्रतिक्रिया संदेश डब्लूएसडीएल के प्रकार खंड में परिभाषित एक्सएमएल तत्वों को संदर्भित करते हैं:

<types>
 <schema targetNamespace="tempuri" ...> 
  <element name="get-rate">
   <complexType>
    <sequence>
     <element name="hotel" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
     <element name="guests" type="xsd:int" minOccurs="1" maxOccurs="1"/>
    </sequence>
   </complexType>
  </element>
  <element name="get-rateResponse">
   <complexType>
    <sequence>
     <element name="rate" type="xsd:float" minOccurs="0" maxOccurs="1" nillable="true"/>
    </sequence>
   </complexType>
  </element>
 </schema>
</types>

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

int Service::get_rate(char *hotel, int guests, float *rate)
{
  *rate = ...  // determine the lodging rate of the hotel given the number of guests
  return SOAP_OK;
}

वेब सर्विस मैसेजिंग के लिए एक्सएमएल में मार्शल किए जा सकने वाले ऑपरेशन पैरामीटर के प्रकार पर कोई प्रतिबंध नहीं है, अतिरिक्त इसके कि डेटा बाइंडिंग स्थापित करने के लिए कुछ प्रकार के डिक्लेरेशन कन्वेंशन और एनोटेशन का पालन किया जाना चाहिए।

उदाहरण के द्वारा बाध्यकारी एक्सएमएल डेटा

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

पदानुक्रमित कर्मचारी रिकॉर्ड के लिए C में पूरी तरह से एनोटेट संरचना घोषणा के रूप में प्रकट हो सकता है

//gsoap ns schema namespace: tempuri
//gsoap ns schema form:      qualified
struct ns__employee_record
{
   @char  *xml__lang  = "en";
   @int    ID         = 9999;
    char  *full_name         1:1;     
   $int    size              0:12;
    struct ns__employee_record *manages;
};

जहां निम्नलिखित एनोटेशन और सम्मेलनों का उपयोग किया जाता है:

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

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

<schema targetNamespace="tempuri" xmlns:ns="tempuri"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified" attributeFormDefault="qualified">

  <complexType name="employee-record">
   <sequence>
    <element name="full-name" type="xsd:string" minOccurs="1" maxOccurs="1" nillable="true"/>
    <element name="manages" type="ns:employee-record" minOccurs="0" maxOccurs="12"/>
   </sequence>
   <attribute ref="xml:lang" use="default" default="en"/>
   <attribute name="ID" type="xsd:int" use="default" default="9999"/>
  </complexType>

</schema>

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

उदाहरण के लिए पदानुक्रमित कर्मचारी संरचना का एक उदाहरण एक्सएमएल में डिफ़ॉल्ट रूप से ट्री के रूप में क्रमबद्ध है, उदाहरण के लिए

<ns:employee xmlns:ns="tempuri" xml:lang="en" ns:ID="12">
 <ns:full-name>Jane Doe</ns:full-name>
 <ns:manages xml:lang="en" ns:ID="34">
  <ns:full-name>John Doe</ns:full-name>
 </ns:manages>
 <ns:manages xml:lang="en" ns:ID="56">
  <ns:full-name>Bob Oz</ns:full-name>
  <ns:manages xml:lang="en" ns:ID="78">
   <ns:full-name>Alice Oz</ns:full-name>
  </ns:manages>
 </ns:manages>
</ns:employee>

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

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

int soap_read_ns__employee_record(struct soap*, ns__employee_record*);
int soap_write_ns__employee_record(struct soap*, const ns__employee_record*);

किसी एक्सएमएल फ़ाइल से कर्मचारी रिकॉर्ड पढ़ने के लिए:

struct soap *ctx = soap_new();
ctx->recvfd = open("employee.xml", O_RDONLY);
if (ctx->recvfd)
{
  ns__employee_record employee;
  if (soap_read_ns__employee_record(ctx, &employee) == SOAP_OK)
    ...
  close(ctx->recvfd);
}
soap_end(ctx);
soap_destroy(ctx); // also deletes employee data
soap_free(ctx);

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

एक्सएमएल बाकी एपीआई

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

int soap_GET_ns__employee_record(struct soap*, const char *URL, ns__employee_record*);
int soap_PUT_ns__employee_record(struct soap*, const char *URL, const ns__employee_record*);
int soap_POST_send_ns__employee_record(struct soap*, const char *URL, const ns__employee_record*);
int soap_POST_recv_ns__employee_record(struct soap*, ns__employee_record*);

पोस्ट कार्यों को एक साथ बुलाया जाना चाहिए, पहले पोस्ट_सेंड एक्सएमएल डेटा को समापन बिंदु यूआरएल पर भेजने के लिए और उसके बाद प्रतिक्रिया डेटा को स्वीकार करने के लिए पोस्ट_रिक (एक अलग प्रकार का हो सकता है)।

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

सुविधाएँ

  • स्रोत-से-स्रोत कोड जनरेशन के साथ स्वचालित प्रोग्रामिंग पर आधारित 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, एमबीएनकोडिंग, आदि)
  • प्लेटफ़ॉर्म तटस्थ, छोटे उपकरणों का समर्थन करता है (सिम्बियन,वीएक्सवर्क्स, एंड्रॉइड, आईफोन)

संदर्भ

  1. 1.0 1.1 van Engelen, Robert (2008). "C और C++ वेब सेवा घटकों के साथ सेवा-उन्मुख कंप्यूटिंग के लिए एक रूपरेखा". ACM Transactions on Internet Technology. 8 (3): 106–115. doi:10.1145/1361186.1361188.
  2. 2.0 2.1 van Engelen, Robert; Gallivan, Kyle (2002). वेब सेवाओं और पीयर-टू-पीयर कंप्यूटिंग नेटवर्क के लिए gSOAP टूलकिट. IEEE International Symposium on Cluster Computing and the Grid. pp. 128–135.
  3. Head, Michael; Govinderaju, Madhu; Slominski, Aleksander; Liu, Pu; Abu-Ghazaleh, Nayef; van Engelen, Robert; Chiu, Kenneth (2005). ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर. IEEE/ACM Supercomputing (SC).
  4. Head, Michael; Govinderaju, Madhu; van Engelen, Robert; Zhang, Wei (2006). ग्रिड वेब सेवाओं में अनुप्रयोगों के लिए बेंचमार्किंग एक्सएमएल प्रोसेसर. IEEE/ACM Supercomputing (SC).
  5. van Engelen, Robert; Govindaraju, Madhu; Zhang, Wei (2006). XML वेब सेवाओं में दूरस्थ वस्तु सुसंगतता की खोज. International Conference on Web Services (ICWS). pp. 249–256.
  6. van Engelen, Robert (2003). वैज्ञानिक कंप्यूटिंग के लिए वेब सेवाओं के साथ SOAP लिफाफे को आगे बढ़ाना. Conference on Web Services (ICWS). pp. 346–354.
  7. Robert, van Engelen; Zhang, Wei (2008). वेब सेवा सुरक्षा प्रदर्शन अनुकूलन का अवलोकन और मूल्यांकन. IEEE International Conference on Web Services (ICWS). pp. 137–144.
  8. Aloisio, Giovanni; Cafaro, Massimo; Epicoco, Italo; Lezzi, Daniele; van Engelen, Robert (2005). The GSI plug-in for gSOAP: Enhanced Security, Performance, and Reliability. International Conference on Information Technology (ITCC). pp. 304–309.
  9. Cafaro, Massimo; Lezzi, Daniele; Fiore, Sandro; Aloisio, Giovanni; van Engelen, Robert (2007). The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services. International Conference on Parallel Processing and Applied Mathematics (PPAM) 2007, workshop on Models, Algorithms and Methodologies for Grid-enabled Computing Environment (MAMGCE), Springer Verlag LNCS Volume 4967. pp. 894–901.
  10. Challener, David; Yoder, Kent; Catherman, Ryan; Safford, David; Van Doorn, Leendert (2007). भरोसेमंद कंप्यूटिंग के लिए एक व्यावहारिक गाइड. Pearson Education.


यह भी देखें

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

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