जवाबों:
SOAP - "सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल"
SOAP इंटरनेट पर संदेश, या थोड़ी मात्रा में जानकारी स्थानांतरित करने की एक विधि है। SOAP संदेशों को XML में स्वरूपित किया जाता है और आमतौर पर HTTP (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल) का उपयोग करके भेजा जाता है।
बाकी - प्रतिनिधि राज्य हस्तांतरण
बाकी क्लाइंट और सर्वर के बीच डेटा भेजने और प्राप्त करने का एक सरल तरीका है और इसमें बहुत सारे मानक परिभाषित नहीं हैं। आप JSON, XML या यहां तक कि सादे पाठ के रूप में डेटा भेज और प्राप्त कर सकते हैं। यह SOAP की तुलना में हल्का है।
दोनों तरीकों का उपयोग कई बड़े खिलाड़ियों द्वारा किया जाता है। यह वरीयता की बात है। मेरी प्राथमिकता REST है क्योंकि इसका उपयोग करना और समझना सरल है।
सरल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP):
प्रतिनिधि राज्य स्थानांतरण (REST):
Google पर REST vs SOAP पर अंतहीन बहसें हैं ।
मेरा पसंदीदा इस एक है । 27 नवंबर 2013 को अपडेट करें: पॉल प्रेस्कॉड की साइट ऑफ़लाइन हो गई है और यह लेख अब उपलब्ध नहीं है, प्रतियां हालांकि वेबैक मशीन या CiteSeerX में पीडीएफ के रूप में पाई जा सकती हैं ।
आराम
मैं समझता हूं कि REST का मुख्य विचार अत्यंत सरल है। हमने वर्षों से वेब ब्राउज़र का उपयोग किया है और हमने देखा है कि वेब साइट्स कितनी आसान, लचीली, प्रदर्शनकारी आदि हैं। HTML साइटें उपयोगकर्ता के इंटरैक्शन के प्राथमिक साधनों के रूप में हाइपरलिंक और फॉर्म का उपयोग करती हैं। उनका मुख्य लक्ष्य हमें ग्राहकों, केवल उन लिंक को जानना है, जिन्हें हम वर्तमान स्थिति में उपयोग कर सकते हैं । और REST बस कहता है कि 'हमारे एप्लिकेशन के माध्यम से मानव क्लाइंट के बजाय कंप्यूटर को चलाने के लिए समान सिद्धांतों का उपयोग क्यों न करें?' इसे डब्ल्यूडब्ल्यूडब्ल्यू बुनियादी ढांचे की शक्ति के साथ मिलाएं और आपको महान वितरित अनुप्रयोगों के निर्माण के लिए हत्यारा उपकरण मिलेगा।
गणितीय रूप से सोचने वाले लोगों के लिए एक और संभावित स्पष्टीकरण है। प्रत्येक आवेदन मूल रूप से एक राज्य मशीन है जिसमें व्यावसायिक तर्क क्रियाएं राज्य संक्रमण हैं। REST का विचार संसाधन में कुछ अनुरोध पर प्रत्येक संक्रमण को मैप करना है और ग्राहकों को वर्तमान स्थिति में उपलब्ध संक्रमणों का प्रतिनिधित्व करने वाले लिंक प्रदान करना है। इस प्रकार यह प्रतिनिधित्व और लिंक के माध्यम से राज्य मशीन को मॉडल करता है। यही कारण है कि इसे स्टेटिकेशनल स्टेट ट्रांसफर कहा जाता है।
यह काफी आश्चर्यजनक है कि सभी उत्तर संदेश प्रारूप पर या HTTP क्रिया उपयोग पर ध्यान केंद्रित करते हैं। वास्तव में, संदेश प्रारूप बिल्कुल भी मायने नहीं रखता है, REST किसी भी एक का उपयोग कर सकता है, बशर्ते कि सेवा डेवलपर उसे दस्तावेज दे। HTTP verbs केवल एक सेवा को CRUD सेवा बनाते हैं, लेकिन अभी तक RESTful नहीं। क्या वास्तव में एक सेवा को REST सेवा में बदल देता है हाइपरलिंक्स (उर्फ हाइपरमीडिया नियंत्रण) डेटा के साथ एक साथ सर्वर प्रतिक्रियाओं में एम्बेडेड होते हैं, और किसी भी क्लाइंट के लिए उनकी राशि उन लिंक से अगली कार्रवाई चुनने के लिए पर्याप्त होनी चाहिए।
दुर्भाग्य से, रॉय फील्डिंग की थीसिस को छोड़कर, वेब पर REST की सही जानकारी प्राप्त करना कठिन है । (वह वही है जो बाकी प्राप्त किया है)। मैं सिफारिश करूंगा 'रीस्ट इन प्रैक्टिस' पुस्तक क्योंकि यह SOAP से REST तक विकसित होने के बारे में एक व्यापक चरण-दर-चरण ट्यूटोरियल देता है।
साबुन
यह आरपीसी (रिमोट प्रक्रिया कॉल) वास्तुकला शैली के संभावित रूपों में से एक है। संक्षेप में, यह सिर्फ एक तकनीक है जो ग्राहकों को सेवा सीमाओं (नेटवर्क, प्रक्रियाओं, आदि) के माध्यम से सर्वर के तरीकों को कॉल करने की अनुमति देता है जैसे कि वे स्थानीय तरीकों को बुला रहे थे। बेशक, यह वास्तव में गति, विश्वसनीयता और इतने पर स्थानीय तरीकों को कॉल करने से अलग है, लेकिन विचार यह सरल है।
तुलना
परिवहन प्रोटोकॉल, संदेश प्रारूप, xsd, wsdl, आदि जैसे विवरण RPC के REST के किसी भी रूप की तुलना करते समय कोई फर्क नहीं पड़ता। मुख्य अंतर यह है कि एक RPC सेवा डिजाइनिंग द्वारा साइकिल को पुनर्निर्मित करती है, यह RPC API में स्वयं के शब्दार्थ के साथ ही अनुप्रयोग प्रोटोकॉल है जो केवल आपको पता है। इसलिए, सभी ग्राहकों को सेवा का उपयोग करने से पहले इस प्रोटोकॉल को समझना होगा, और सभी अनुरोधों के मालिकाना शब्दार्थ के कारण कैश जैसी कोई बुनियादी संरचना नहीं बनाई जा सकती है। इसके अलावा, आरपीसी एपीआई सुझाव नहीं देते हैं कि वर्तमान स्थिति में किन कार्यों की अनुमति है, इसे अतिरिक्त प्रलेखन से प्राप्त किया जाना है। दूसरी ओर REST का अर्थ है कि विभिन्न क्लाइंट्स को एपीआई सिमेंटिक्स की कुछ समझ होने के लिए एक समान इंटरफेस का उपयोग करके और हाइपरमीडिया कंट्रोल (लिंक) को प्रत्येक राज्य में उपलब्ध विकल्पों को हाइलाइट करने के लिए। इस प्रकार,
एक तरह से, एसओएपी (किसी भी अन्य आरपीसी के रूप में) एक सेवा सीमा के माध्यम से सुरंग बनाने का प्रयास है, जो कनेक्टिंग मीडिया को केवल संदेशों को प्रसारित करने में सक्षम ब्लैक बॉक्स के रूप में व्यवहार करता है। REST यह स्वीकार करने का निर्णय है कि वेब एक विशाल वितरित सूचना प्रणाली है, जो दुनिया को वैसा ही स्वीकार करना है और इसके खिलाफ लड़ने के बजाय इसे हासिल करना सीखना है।
आंतरिक नेटवर्क API के लिए SOAP बहुत अच्छा लगता है, जब आप सर्वर और क्लाइंट दोनों को नियंत्रित करते हैं, और जबकि इंटरैक्शन बहुत जटिल नहीं होते हैं। डेवलपर्स के लिए इसका उपयोग करना अधिक स्वाभाविक है। हालांकि, एक सार्वजनिक एपीआई के लिए जो कई स्वतंत्र पार्टियों द्वारा उपयोग किया जाता है, जटिल और बड़ा है, आरईएसटी को बेहतर फिट होना चाहिए। लेकिन यह आखिरी तुलना बहुत फजी है।
अपडेट करें
मेरे अनुभव ने अप्रत्याशित रूप से RAP विकास को SOAP से अधिक कठिन बना दिया है। कम से कम .NET के लिए। हालांकि ASP.NET वेब एपीआई जैसी महान रूपरेखाएं हैं, कोई भी टूलिंग नहीं है जो स्वचालित रूप से क्लाइंट-साइड प्रॉक्सी उत्पन्न करेगा। 'वेब सेवा संदर्भ जोड़ें' या 'WCF सेवा संदर्भ जोड़ें' जैसा कुछ नहीं। एक को हाथ से सभी क्रमांकन और सेवा क्वेरी कोड लिखना होगा। और आदमी, यह बहुत सारे बॉयलरप्लेट कोड है। मुझे लगता है कि REST विकास को प्रत्येक विकास मंच के लिए WSDL और टूलिंग कार्यान्वयन के समान कुछ चाहिए। वास्तव में, एक अच्छा आधार प्रतीत होता है: WADL या WSDL 2.0 , लेकिन दोनों में से कोई भी मानक अच्छी तरह से समर्थित नहीं है।
अपडेट (जनवरी 2016)
अब पता चलता है कि REST API परिभाषा के लिए कई प्रकार के उपकरण हैं । वर्तमान में मेरी व्यक्तिगत प्राथमिकता RAML है ।
वेब सेवा कैसे काम करती है
खैर, यह एक बहुत व्यापक प्रश्न है, क्योंकि यह विशिष्ट वेब सेवा में उपयोग की जाने वाली वास्तुकला और प्रौद्योगिकी पर निर्भर करता है। लेकिन सामान्य तौर पर, एक वेब सेवा वेब में बस कुछ अनुप्रयोग है जो ग्राहकों से अनुरोध स्वीकार कर सकते हैं और प्रतिक्रियाएं दे सकते हैं। यह वेब के संपर्क में है, इस प्रकार यह एक वेब सेवा है, और यह आमतौर पर 24/7 उपलब्ध है, इसीलिए यह एक सेवा है । बेशक, यह कुछ समस्या को हल करता है (अन्यथा कोई अपने ग्राहकों के लिए किसी वेब सेवा का उपयोग क्यों करेगा)।
यह सबसे सरल स्पष्टीकरण है जो आप कभी भी पाएंगे।
यह लेख एक पति को पत्नी की कथा में ले जाता है, जहाँ पति अपनी पत्नी को शुद्ध आम शब्दों में REST के बारे में समझाता है। जरूर पढ़े!
How-i-समझाया-बाकी-से-मेरी पत्नी (मूल लिंक)
how-i-समझाया-बाकी-से-मेरी पत्नी (2013-07-19 कामकाजी लिंक)
SOAP - सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल एक प्रोटोकॉल है !
बाकी - प्रतीकात्मक राज्य स्थानांतरण एक स्थापत्य शैली है !
SOAP
एक XML प्रोटोकॉल है जो आमतौर पर HTTP पर संदेशों को स्थानांतरित करने के लिए उपयोग किया जाता है
REST
और यकीनन परस्पर अनन्य नहींSOAP
हैं । एक आरामदायक वास्तुकला का उपयोग कर सकते या या कुछ अन्य संचार प्रोटोकॉल। वेब के लिए अनुकूलित है और इस प्रकार एक आदर्श विकल्प है। रॉय फील्डिंग के पेपर में चर्चा करने वाला एकमात्र प्रोटोकॉल भी है । HTTP
SOAP
REST
HTTP
HTTP
हालाँकि REST और SOAP स्पष्ट रूप से बहुत अलग हैं, लेकिन यह प्रश्न इस तथ्य पर रोशनी डालता है कि REST
औरHTTP
इसका उपयोग अक्सर किया जाता है। यह मुख्य रूप से HTTP की सादगी और Restful सिद्धांतों के लिए बहुत ही प्राकृतिक मानचित्रण के कारण है।
क्लाइंट-सर्वर संचार
क्लाइंट-सर्वर आर्किटेक्चर के पास चिंताओं का एक अलग अलगाव है। रैस्टफुल स्टाइल में निर्मित सभी एप्लिकेशन को प्रिंसिपल में क्लाइंट-सर्वर भी होना चाहिए।
राज्यविहीन
सर्वर से प्रत्येक क्लाइंट अनुरोध के लिए आवश्यक है कि उसका राज्य पूरी तरह से प्रतिनिधित्व किया जाए। सर्वर को किसी भी सर्वर संदर्भ या सर्वर सत्र स्थिति का उपयोग किए बिना क्लाइंट अनुरोध को पूरी तरह से समझने में सक्षम होना चाहिए। यह निम्नानुसार है कि सभी राज्य क्लाइंट पर रखे जाने चाहिए। हम बाद में और अधिक विस्तार में स्टेटलेस प्रतिनिधित्व पर चर्चा करेंगे।
संचित करने योग्य
कैश की कमी का उपयोग किया जा सकता है, इस प्रकार प्रतिक्रिया डेटा को कैचीबल या नहीं-केचबल के रूप में चिह्नित किया जा सकता है। कैचवेबल के रूप में चिह्नित किसी भी डेटा को उसी बाद के अनुरोध की प्रतिक्रिया के रूप में पुन: उपयोग किया जा सकता है।
यूनिफ़ॉर्म इंटरफ़ेस
सभी घटकों को एक समान वर्दी इंटरफेस के माध्यम से बातचीत करनी चाहिए। क्योंकि इस इंटरफ़ेस के माध्यम से सभी घटक इंटरैक्शन होते हैं, विभिन्न सेवाओं के साथ बातचीत बहुत सरल है। इंटरफ़ेस एक ही है! इसका अर्थ यह भी है कि अलगाव में कार्यान्वयन परिवर्तन किए जा सकते हैं। इस तरह के परिवर्तन, मौलिक घटक इंटरैक्शन को प्रभावित नहीं करेंगे क्योंकि वर्दी इंटरफ़ेस हमेशा अपरिवर्तित रहता है। एक नुकसान यह है कि आप इंटरफ़ेस के साथ फंस गए हैं। यदि इंटरफ़ेस बदलकर एक विशिष्ट सेवा के लिए एक अनुकूलन प्रदान किया जा सकता है, तो आप भाग्य से बाहर हैं क्योंकि REST इसे प्रतिबंधित करता है। उज्ज्वल पक्ष पर, हालांकि, REST वेब के लिए अनुकूलित है, इसलिए HTTP पर REST की अविश्वसनीय लोकप्रियता है!
उपरोक्त अवधारणाएं आरईएसटी की परिभाषित विशेषताओं का प्रतिनिधित्व करती हैं और अन्य आर्किटेक्चर जैसे वेब सेवाओं से अन्य आर्किटेक्चर को अलग करती हैं। यह ध्यान रखना उपयोगी है कि REST सेवा एक वेब सेवा है, लेकिन एक वेब सेवा आवश्यक रूप से REST सेवा नहीं है।
REST और ऊपर बताई गई गोलियों के बारे में अधिक जानकारी के लिए REST डिज़ाइन प्रिंसिपलों पर इस ब्लॉग पोस्ट को देखें ।
मुझे ब्रायन आर बॉडी का जवाब पसंद है। मैं सिर्फ यह जोड़ना चाहता था कि विकिपीडिया REST का स्पष्ट विवरण प्रदान करता है । लेख इसे SOAP से अलग करता है।
REST राज्य सूचनाओं का एक आदान-प्रदान है, बस यथाशीघ्र किया जाता है।
SOAP एक संदेश प्रोटोकॉल है जो XML का उपयोग करता है।
कई लोगों ने SOAP से REST में जाने के मुख्य कारणों में से एक यह है कि SOAP आधारित वेब सेवाओं के साथ जुड़े WS- * (WS splat) मानक अत्यधिक जटिल हैं। विनिर्देशों की सूची के लिए विकिपीडिया देखें । इनमें से प्रत्येक विनिर्देश बहुत जटिल है।
संपादित करें: किसी कारण से लिंक सही ढंग से प्रदर्शित नहीं हो रहे हैं। REST = http://en.wikipedia.org/wiki/REST
WS- * = http://en.wikipedia.org/wiki/WS- *
SOAP वेबसर्विस और REST वेबसर्विस दोनों HTTP प्रोटोकॉल और अन्य प्रोटोकॉल का उपयोग कर सकते हैं (बस SOAP का उल्लेख करने के लिए REST के अंतर्निहित प्रोटोकॉल हो सकते हैं)। मैं केवल HTTP प्रोटोकॉल से संबंधित SOAP और REST के बारे में बात करूंगा, क्योंकि यह उनका सबसे अधिक उपयोग है।
SOAP ("सरल" ऑब्जेक्ट एक्सेस प्रोटोकॉल) एक प्रोटोकॉल (और एक W3C मानक ) है। यह SOAP संदेशों को बनाने, भेजने और संसाधित करने का तरीका निर्धारित करता है।
SOAP संदेश एक विशिष्ट संरचना के साथ XML दस्तावेज़ हैं: इनमें एक लिफाफा होता है जिसमें हेडर और बॉडी सेक्शन होता है। शरीर में वास्तविक डेटा होता है - हम एक XML प्रारूप में भेजना चाहते हैं। कर रहे हैं दो एन्कोडिंग शैलियों , लेकिन हम आम तौर पर शाब्दिक चुनें , जिसका अर्थ है कि हमारे आवेदन या उसके सोप ड्राइवर एक्सएमएल क्रमबद्धता और डेटा की unserialization करता है।
SOAP + XML MIME उपप्रकार के साथ SOAP संदेश HTTP संदेश के रूप में यात्रा करते हैं। ये HTTP संदेश मल्टीपार्ट हो सकते हैं, इसलिए वैकल्पिक रूप से हम SOAP संदेशों में फ़ाइलें संलग्न कर सकते हैं।
स्पष्ट रूप से हम एक क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करते हैं, इसलिए एसओएपी क्लाइंट एसओएपी वेबसीरीज के लिए अनुरोध भेजते हैं और सेवाएं ग्राहकों को प्रतिक्रियाएं भेजती हैं। अधिकांश वेबसर्विसेस सेवा का वर्णन करने के लिए एक WSDL फ़ाइल का उपयोग करते हैं। WSDL फ़ाइल में XML स्कीमा (XSD उसके बाद) जो हम भेजना चाहते हैं और WSDL बाइंडिंग है जो परिभाषित करता है कि कैसे webservice HTTP प्रोटोकॉल के लिए बाध्य है। वहां दो बाध्यकारी शैलियों: RPC और दस्तावेज़। RPC शैली बाइंडिंग SOAP बॉडी में पैरामीटर (HTTP अनुरोध) या रिटर्न वैल्यूज़ (HTTP रिस्पांस) के साथ एक ऑपरेशन कॉल का प्रतिनिधित्व होता है। पैरामीटर और रिटर्न मान XSD के खिलाफ मान्य हैं। दस्तावेज़ शैली द्वारा SOAP बॉडी को बाइंड करने पर XML दस्तावेज़ होता है जो XSD के विरुद्ध मान्य होता है। मुझे लगता है कि दस्तावेज़ बाध्यकारी शैली घटना आधारित प्रणालियों के लिए बेहतर है, लेकिन मैंने कभी भी उस बाध्यकारी शैली का उपयोग नहीं किया। RPC बाइंडिंग शैली अधिक प्रचलित है, इसलिए अधिकांश लोग वितरित अनुप्रयोगों द्वारा XML / RPC उद्देश्यों के लिए SOAP का उपयोग करते हैं। यूडीडीआई सर्वर आमतौर पर यूडीडीआई सर्वर से पूछकर एक दूसरे को खोजते हैं। UDDI सर्वर रजिस्ट्रियां हैं जो वेबसर्विस के स्थान को स्टोर करती हैं।
तो - मेरी राय में - सबसे प्रचलित SOAP वेब सेवा RPC बाइंडिंग शैली और शाब्दिक एन्कोडिंग शैली का उपयोग करती है और इसमें निम्नलिखित विशेषताएं हैं:
आरईएसटी (रिप्रेजेंटेशनल स्टेट ट्रांसफर) एक वास्तुकला शैली है जो रॉय फील्डिंग के शोध प्रबंध में वर्णित है । यह SOAP जैसे प्रोटोकॉल की चिंता नहीं करता है। यह एक अशक्त वास्तुकला शैली के साथ शुरू होता है जिसमें कोई बाधा नहीं होती है और एक-एक करके REST वास्तुकला की बाधाओं को परिभाषित करता है। लोग Webservices के लिए RESTful शब्द का उपयोग करते हैं जो सभी REST बाधाओं को पूरा करते हैं, लेकिन रॉय फील्डिंग के अनुसार, REST स्तरों जैसी कोई चीज़ नहीं हैं । जब एक webservice हर एक REST बाधा के साथ नहीं मिलती है, तो यह REST webservice नहीं है।
यूनिफ़ॉर्म इंटरफ़ेस
https://example.com/api/v1/users?offset=50&count=25
। URL में कुछ विनिर्देश हैं, उदाहरण के लिए एक ही पथ वाले URL, लेकिन अलग-अलग क्वेरीज़ समान नहीं हैं, या पथ भाग में URL का श्रेणीबद्ध डेटा होना चाहिए और क्वेरी भाग में गैर-श्रेणीबद्ध डेटा होना चाहिए। REST द्वारा URL कैसे बनाया जाए, ये मूल बातें हैं। Btw। URL संरचना केवल सेवा डेवलपर्स के लिए ही मायने रखती है, एक वास्तविक REST क्लाइंट इसके साथ चिंता नहीं करता है। एक और अक्सर पूछा जाने वाला प्रश्न एपीआई संस्करण है, जो एक आसान है, क्योंकि क्षेत्ररक्षण के अनुसार संसाधन द्वारा एकमात्र स्थिर चीज शब्दार्थ है। यदि शब्दार्थ बदल जाता है, तो आप एक नया संस्करण संख्या जोड़ सकते हैं। आप शास्त्रीय 3 नंबर संस्करण का उपयोग कर सकते हैं और URL में केवल प्रमुख संख्या जोड़ सकते हैं (https://example.com/api/v1/
)। इसलिए पिछड़े संगत परिवर्तनों से कुछ नहीं होता है, गैर-पिछड़े संगत परिवर्तनों के द्वारा आपके पास एक नया एपीआई रूट के साथ एक गैर-पिछड़े संगत शब्दार्थ होगा https://example.com/api/v2/
। इसलिए पुराने ग्राहक टूटेंगे नहीं, क्योंकि वे https://example.com/api/v1/
पुराने शब्दार्थ के साथ प्रयोग कर सकते हैं ।PATCH https://example.com/api/v1/users/1 {name: "Mrs Smith"}
अनुरोध भेज सकते हैं, जहां {name: "Mrs Smith"}
दूसरे संसाधन में JSON प्रतिनिधित्व है, दूसरे शब्दों में: नया नाम। यह विकी-वर्सा होता है, सेवा अपने राज्यों को बदलने के लिए ग्राहकों को संसाधनों का प्रतिनिधित्व भेजती है। उदाहरण के लिए यदि हम नया नाम पढ़ना चाहते हैं, तो हम एक GET https://example.com/api/v1/users/1?fields="name"
रिट्रीवल अनुरोध भेज सकते हैं, जिसके परिणामस्वरूप ए200 ok, {name: "Mrs Smith"}
प्रतिक्रिया। इसलिए हम ग्राहक की स्थिति को बदलने के लिए इस प्रतिनिधित्व का उपयोग कर सकते हैं, उदाहरण के लिए हम "हमारे पृष्ठ पर आपका स्वागत है श्रीमती स्मिथ!" संदेश। संसाधन के पास रिसोर्स आइडेंटिफ़ायर (URL) या accept
अनुरोध के साथ भेजे गए हेडर के आधार पर कई अभ्यावेदन हो सकते हैं । उदाहरण के लिए, यदि image/jpeg
अनुरोध किया जाए तो हम श्रीमती स्मिथ की छवि भेज सकते हैं (शायद नग्न नहीं) ।हाइपरमीडिया अनुप्रयोग राज्य के इंजन के रूप में (उसके बाद) - हाइपरमीडिया एक मीडिया प्रकार है जिसमें हाइपरलिंक हो सकते हैं। वेब द्वारा हम एक लक्ष्य को प्राप्त करने के लिए हाइपरमीडिया प्रारूप (आमतौर पर HTML) द्वारा वर्णित लिंक का अनुसरण करते हैं - URL को एडरेस बार में टाइप करने के बजाय, एक लक्ष्य प्राप्त करने के लिए। REST समान अवधारणा का अनुसरण करता है, सेवा द्वारा भेजे गए अभ्यावेदन में हाइपरलिंक हो सकते हैं। हम सेवा में अनुरोध भेजने के लिए इन हाइपरलिंक्स का उपयोग करते हैं। प्रतिक्रिया के साथ हमें डेटा (और शायद अधिक लिंक) मिलते हैं, जिसका उपयोग हम नए क्लाइंट राज्य के निर्माण के लिए कर सकते हैं, और इसी तरह ... इसलिए हाइपरमीडिया एप्लीकेशन स्टेट (क्लाइंट स्टेट) का इंजन है। आप शायद आश्चर्य करते हैं कि क्लाइंट हाइपरलिंक को कैसे पहचानते हैं और उसका पालन करते हैं? मनुष्यों द्वारा यह बहुत सरल है, हम लिंक का शीर्षक पढ़ते हैं, शायद इनपुट फ़ील्ड भरें, और उसके बाद बस एक क्लिक करें।JSON-LD हाइड्रा के साथ ) या हाइपरमीडिया विशिष्ट समाधानों के साथ (उदाहरण के लिए IANA लिंक संबंध और HAL + JSON द्वारा विशिष्ट MIME प्रकार )। कई मशीन पठनीय XML और JSON हाइपरमीडिया प्रारूप हैं , बस उनकी एक छोटी सूची है:
कभी-कभी चुनना मुश्किल होता है ...
इसलिए REST webservice एक SOAP webservice (RPC बाइंडिंग स्टाइल और शाब्दिक एन्कोडिंग शैली के साथ) से बहुत अलग है
और इसी तरह...
एक SOAP RPC वेबसर्स्ट बाकी सभी बाधाओं को पूरा नहीं करता है:
खैर मैं दूसरे प्रश्न से शुरू करता हूं: वेब सेवा क्या हैं? , ज़ाहिर कारणों की वजह से।
WebServices अनिवार्य रूप से तर्क के टुकड़े हैं (जिन्हें आप अस्पष्ट रूप से एक विधि के रूप में संदर्भित कर सकते हैं) जो कुछ कार्यक्षमता या डेटा को उजागर करते हैं। लागू करने वाला क्लाइंट (तकनीकी रूप से बोलना, उपभोग करना शब्द है) बस यह जानने की जरूरत है कि पैरामीटर क्या हैं ( विधि ) को स्वीकार करने जा रहा है और डेटा का प्रकार यह लौटने वाला है (यदि यह बिल्कुल भी है)।
निम्न लिंक यह बहुत ही आकर्षक तरीके से बाकी और SOAP के बारे में कहता है।
यदि आप यह भी जानना चाहते हैं कि कब (REST या SOAP) क्या चुनना है, तो इसके माध्यम से जाने के सभी और कारण!
SOAP और REST दोनों एक दूसरे से बात करने के लिए विभिन्न प्रणालियों के तरीकों का उल्लेख करते हैं।
REST यह उन तकनीकों का उपयोग करता है, जो आपके ब्राउज़र में वेब सर्वर के साथ संचार के समान होती हैं: एक वेब पेज का अनुरोध करने के लिए GET का उपयोग करना, फॉर्म फील्ड में पोस्ट करना, आदि।
SOAP कुछ समान प्रदान करता है, लेकिन XML के ब्लॉक को आगे और पीछे भेजने के माध्यम से सब कुछ करता है। SOAP का एक अन्य प्रमुख घटक WSDL है जो एक XML दस्तावेज है जो बताता है कि कौन से फ़ंक्शन और डेटा तत्व समर्थित हैं। WSDL का उपयोग प्रोग्रामेटिक रूप से "डिस्कवर" के लिए किया जा सकता है कि प्रोग्रामिंग कोड स्टब्स उत्पन्न करने के लिए क्या फ़ंक्शन समर्थित हैं।
मुझे लगता है कि यह उतना आसान है जितना मैं इसे समझा सकता हूं। कृपया, किसी का भी स्वागत है मुझे सुधारने के लिए या इसे जोड़ने के लिए।
SOAP एक संदेश प्रारूप है जिसका उपयोग डिस्कनेक्टेड सिस्टम (जैसे इंटरनेट पर) सूचना / डेटा के आदान-प्रदान के लिए किया जाता है। यह एक्सएमएल संदेशों को आगे और पीछे जाने के साथ करता है।
वेब सेवाएं SOAP संदेश प्रेषित या प्राप्त करती हैं। वे जिस भाषा में लिखे गए हैं, उसके आधार पर वे अलग-अलग तरीके से काम करते हैं।
SOAP के साथ समस्या यह है कि यह HTTP स्टैक के पीछे के आदर्शों के विरोध में है। किसी भी मिडलवेयर को अनुरोध या प्रतिक्रिया की सामग्री को समझे बिना HTTP अनुरोधों के साथ काम करने में सक्षम होना चाहिए, लेकिन उदाहरण के लिए एक नियमित HTTP कैशिंग सर्वर SOAP अनुरोधों के साथ काम नहीं करेगा, केवल यह जानते हुए कि कैशिंग के लिए SOAP सामग्री के कौन से हिस्से मायने रखते हैं। SOAP बस HTTP की तरह अपने संचार प्रोटोकॉल के लिए एक प्रॉक्सी के रूप में रैपर का उपयोग करता है।
SOAP - "सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल"
SOAP संदेशों को स्थानांतरित करने, या इंटरनेट पर थोड़ी मात्रा में जानकारी देने का एक छोटा सा हिस्सा है। SOAP संदेश XML में स्वरूपित किए जाते हैं और आमतौर पर HTTP को नियंत्रित करने के लिए भेजे जाते हैं ।
REST - "स्टेटिकेशनल स्टेट ट्रांसफर"
REST घटना की एक अल्पविकसित प्रक्रिया है और प्रशंसक और सर्वर के बीच जानकारी प्राप्त करता है और इसमें असमान रूप से परिभाषित कई मानक नहीं हैं। आप JSON , XML या यहां तक कि सादे पाठ के रूप में जानकारी भेज और स्वीकार कर सकते हैं । यह SOAP की तुलना में हल्का है ।
SOAPbased Web Services संक्षेप में, SOAPbased Services मॉडल दुनिया को एक-समान सहकर्मी के पारिस्थितिक तंत्र के रूप में देखता है जो एक दूसरे को नियंत्रित नहीं कर सकते, लेकिन प्रकाशित अनुबंधों का सम्मान करके एक साथ काम करना होगा। यह गन्दा वास्तविक दुनिया का एक मान्य मॉडल है, और मेटाडेटा आधारित अनुबंध SOAP सेवा इंटरफ़ेस बनाते हैं।
हम अभी भी SOAP को XMLbased Remote Procedure Calls के साथ जोड़ सकते हैं, लेकिन SOAPbased Web Services Technology एक लचीली और शक्तिशाली मैसेजिंग मॉडल के रूप में उभरी है।
SOAP मानता है कि सभी प्रणालियां स्वतंत्र हैं और किसी भी प्रणाली को दूसरे और आंतरिक कार्यक्षमता के आंतरिक ज्ञान का कोई ज्ञान नहीं है। इस तरह के सबसे अधिक सिस्टम एक दूसरे को संदेश भेज सकते हैं और आशा करते हैं कि उन पर कार्रवाई की जाएगी। सिस्टम उन अनुबंधों को प्रकाशित करता है जो वे सम्मान के लिए करते हैं, और अन्य सिस्टम इन अनुबंधों पर भरोसा करते हैं ताकि उनके साथ संदेशों का आदान-प्रदान हो सके।
सिस्टम के बीच के अनुबंधों को सामूहिक रूप से मेटाडेटा कहा जाता है, और इसमें सेवा विवरण शामिल हैं, संदेश विनिमय पैटर्न समर्थित हैं और सेवा के गुणों को नियंत्रित करने वाली नीतियां (एक सेवा को एन्क्रिप्ट किया जाना चाहिए, मज़बूती से वितरित करना, आदि) एक सेवा विवरण, बदले में, एक विस्तृत विवरण है। डेटा के विनिर्देश (संदेश दस्तावेज) जो सिस्टम द्वारा भेजे और प्राप्त किए जाएंगे। दस्तावेज़ों का वर्णन एक्सएमएल स्कीमा परिभाषा जैसी एक्सएमएल विवरण भाषा का उपयोग करके किया जाता है। जब तक सभी सिस्टम अपने प्रकाशित अनुबंधों का सम्मान करते हैं, तब तक वे आपस में जुड़ सकते हैं, और सिस्टम के आंतरिक हिस्से में परिवर्तन कभी भी किसी अन्य को प्रभावित नहीं करते हैं। प्रत्येक प्रणाली अपने आंतरिक कार्यान्वयन को अपने अनुबंधों से और उसके लिए अनुवाद करने के लिए जिम्मेदार है
आरईएसटी - रिप्रेजेंटेशनल स्टेट ट्रांसफर। भौतिक प्रोटोकॉल HTTP है। असल में, REST यह है कि वेब पर सभी विशिष्ट संसाधन जो URL द्वारा विशिष्ट रूप से पहचाने जाने योग्य हैं। इन संसाधनों पर किए जा सकने वाले सभी ऑपरेशनों को क्रियाओं के सीमित सेट ("CRUD" क्रियाओं) द्वारा वर्णित किया जा सकता है, जो बदले में HTTP क्रियाओं का मानचित्र बनाते हैं।
REST SOAP की तुलना में बहुत कम "हैवीवेट" है।