क्या कुछ बॉडी मुझे एक डॉक्यूमेंट स्टाइल और RPC स्टाइल वेबसर्विस के बीच के अंतर के बारे में समझा सकती है?
दो संचार शैली के मॉडल हैं जो WSDL बाइंडिंग को SOAP संदेश बॉडी में अनुवाद करने के लिए उपयोग किए जाते हैं। वे हैं:
दस्तावेज़ और आरपीसी
डॉक्यूमेंट स्टाइल मॉडल का उपयोग करने का लाभ यह है कि आप SOAP बॉडी को किसी भी तरह से स्ट्रक्चर कर सकते हैं, जब तक आप यह चाहते हैं कि SOAP मैसेज बॉडी का कंटेंट किसी भी तरह का एक्सएमएल इंस्टेंस हो। दस्तावेज़ शैली को संदेश-उन्मुख शैली भी कहा जाता है ।
हालाँकि, RPC शैली मॉडल के साथ , SOAP अनुरोध निकाय की संरचना में ऑपरेशन नाम और विधि पैरामीटर दोनों सेट होने चाहिए। RPC शैली मॉडल संदेश निकाय में निहित XML उदाहरण के लिए एक विशिष्ट संरचना मानता है ।
इसके अलावा, दो एन्कोडिंग उपयोग मॉडल हैं जो WSDL बाइंडिंग को SOAP संदेश में अनुवाद करने के लिए उपयोग किए जाते हैं। वे हैं: शाब्दिक, और एन्कोडेड
एक का उपयोग करते समय शाब्दिक उपयोग मॉडल , शरीर सामग्री उपयोगकर्ता परिभाषित के अनुरूप होना चाहिए , XML- स्कीमा (XSD) संरचना । फायदा दो गुना है। एक के लिए, आप उपयोगकर्ता द्वारा परिभाषित XML-स्कीमा के साथ संदेश निकाय को मान्य कर सकते हैं, इसके अलावा, आप XSLT जैसी परिवर्तनकारी भाषा का उपयोग करके भी संदेश को बदल सकते हैं।
SO (SOAP) एन्कोडेड उपयोग मॉडल के साथ , संदेश को XSD डेटाटिप्स का उपयोग करना होता है, लेकिन संदेश की संरचना को किसी भी उपयोगकर्ता-निर्धारित XML स्कीमा के अनुरूप नहीं होना चाहिए। इससे संदेश निकाय को मान्य करना या संदेश निकाय पर XSLT आधारित परिवर्तनों का उपयोग करना मुश्किल हो जाता है।
विभिन्न शैली और उपयोग मॉडल का संयोजन हमें WSDL बाइंडिंग को SOAP संदेश में अनुवाद करने के लिए चार अलग-अलग तरीके देता है।
Document/literal
Document/encoded
RPC/literal
RPC/encoded
मैं अनुशंसा करूंगा कि आप इस लेख को डब्ल्यूएसडीएल की किस शैली का उपयोग करें, जिसे मुझे उपयोग करना चाहिए? रसेल ब्यूटेक द्वारा, जिसमें विभिन्न शैली और मॉडल का उपयोग करने की एक अच्छी चर्चा है, जो एक WSDL को SOAP संदेश, और उनकी सापेक्ष शक्तियों और कमजोरियों के लिए बाध्य करने के लिए उपयोग करता है।
एक बार कलाकृतियों को प्राप्त करने के बाद, मैं संचार की दोनों शैलियों में, पोर्ट पर विधि लागू करता हूं। अब, यह RPC शैली और दस्तावेज़ शैली में भिन्न नहीं है। तो क्या अंतर है और वह अंतर कहां दिखाई दे रहा है?
जिस स्थान पर आप अंतर पा सकते हैं वह "RESPONSE" है!
RPC शैली:
package com.sample;
import java.util.ArrayList;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style=Style.RPC)
public interface StockPrice {
public String getStockPrice(String stockName);
public ArrayList getStockPriceList(ArrayList stockNameList);
}
दूसरे ऑपरेशन के लिए SOAP संदेश में खाली आउटपुट होगा और ऐसा दिखेगा:
RPC स्टाइल रिस्पांस:
<ns2:getStockPriceListResponse
xmlns:ns2="http://sample.com/">
<return/>
</ns2:getStockPriceListResponse>
</S:Body>
</S:Envelope>
दस्तावेज़ शैली:
package com.sample;
import java.util.ArrayList;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style=Style.DOCUMENT)
public interface StockPrice {
public String getStockPrice(String stockName);
public ArrayList getStockPriceList(ArrayList stockNameList);
}
यदि हम उपरोक्त SEI के लिए क्लाइंट चलाते हैं, तो आउटपुट है:
123 [123, 456]
यह आउटपुट दिखाता है कि ArrayList तत्वों का वेब सेवा और क्लाइंट के बीच आदान-प्रदान हो रहा है। यह परिवर्तन केवल SOAPBinding एनोटेशन की शैली विशेषता को बदलकर किया गया है। अमीर डेटा प्रकार के साथ दूसरी विधि के लिए SOAP संदेश संदर्भ के लिए नीचे दिखाया गया है:
दस्तावेज़ शैली प्रतिक्रिया:
<ns2:getStockPriceListResponse
xmlns:ns2="http://sample.com/">
<return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:string">123</return>
<return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:string">456</return>
</ns2:getStockPriceListResponse>
</S:Body>
</S:Envelope>
निष्कर्ष
- जैसा कि आपने दो SOAP प्रतिक्रिया संदेशों में देखा होगा कि DOCUMENT शैली के मामले में SOAP प्रतिक्रिया संदेश को मान्य करना संभव है, लेकिन RPC शैली वेब सेवाओं में नहीं।
- RPC शैली का उपयोग करने का मूल नुकसान यह है कि यह अमीर डेटा प्रकारों का समर्थन नहीं करता है और दस्तावेज़ शैली का उपयोग करने का यह है कि यह अमीर डेटा प्रकारों को परिभाषित करने के लिए XSD के रूप में कुछ जटिलता लाता है।
- इनमें से एक का उपयोग करने का विकल्प ऑपरेशन / विधि की आवश्यकताओं और अपेक्षित ग्राहकों पर निर्भर करता है।
इसी तरह, HTTP पर एसओएपी किस तरह से एक्सएमएल पर HTTP से अलग है? आखिर SOAP भी SOAP नामस्थान के साथ XML दस्तावेज है। तो यहाँ क्या अंतर है?
हमें SOAP जैसे मानक की आवश्यकता क्यों है? HTTP पर एक्सएमएल दस्तावेजों का आदान-प्रदान करके, दो कार्यक्रम एक अतिरिक्त मानक की शुरूआत के बिना समृद्ध, संरचित जानकारी का आदान-प्रदान कर सकते हैं जैसे कि एसओएपी एक संदेश लिफाफे प्रारूप का स्पष्ट रूप से वर्णन करने और संरचित सामग्री को एन्कोड करने का एक तरीका है।
SOAP एक मानक प्रदान करता है ताकि डेवलपर्स को प्रत्येक सेवा के लिए एक कस्टम XML संदेश प्रारूप का आविष्कार न करना पड़े जिसे वे उपलब्ध कराना चाहते हैं। सेवा विधि के हस्ताक्षर को देखते हुए, SOAP विनिर्देश एक अस्पष्ट XML संदेश प्रारूप निर्धारित करता है। SOAP विनिर्देशन से परिचित कोई भी डेवलपर, जो किसी भी प्रोग्रामिंग भाषा में काम करता है, किसी विशेष सेवा के लिए एक सही SOAP XML अनुरोध तैयार कर सकता है और निम्नलिखित सेवा विवरण प्राप्त करके सेवा से प्रतिक्रिया को समझ सकता है।
- सेवा का नाम
- सेवा द्वारा कार्यान्वित विधि के नाम
- प्रत्येक विधि का विधि हस्ताक्षर
- सेवा कार्यान्वयन का पता (URI के रूप में व्यक्त)
SOAP का उपयोग मौजूदा सॉफ्टवेयर घटक को वेब सेवा के रूप में उजागर करने के लिए प्रक्रिया को सुव्यवस्थित करता है क्योंकि सेवा के विधि हस्ताक्षर अनुरोध और प्रतिक्रिया दोनों के लिए उपयोग किए जाने वाले XML दस्तावेज़ संरचना की पहचान करते हैं।