SOAP का वर्तमान में क्या महत्व है


51

अंतिम बार मुझे एक SOAP आधारित सेवा का सामना करना पड़ा था जो 2013 में एक वित्तीय फर्म में मेरी इंटर्नशिप के दौरान था। यह वह समय था जब मैंने आईटी में अपना करियर शुरू किया था। मुझे याद है कि मेरे एक इंजीनियरिंग कोर्स में SOAP के बारे में कुछ अध्ययन सामग्री है। उसके बाहर, मैंने अपने करियर के दौरान सोप का ज्यादा इस्तेमाल नहीं किया।

मैं "SOAP और REST के बीच अंतर" के प्रश्न के बाद से यह पूछ रहा हूं जो मेरे हालिया साक्षात्कार में से एक में आया था। जो मुझे पता है (और जो मैंने Google पर पाया है) से SOAP एक प्रोटोकॉल है जो ग्राहक और सर्वर के बीच सूचना के आदान-प्रदान के लिए तंग युग्मन के साथ एक प्रोटोकॉल है जो व्यावसायिक तर्क से निकटता से संबंधित है। जबकि REST डेटा ट्रांसफर के लिए अधिक लचीली स्टेटलेस आर्किटेक्चर है।

अगर SOAP और REST के बीच इस अंतर के बारे में गलत हो तो क्या कोई मुझे सही कर सकता है? इसके अलावा, SOAP का वर्तमान में क्या महत्व है? क्या लोग अभी भी नए सोप-आधारित एपीआई विकसित कर रहे हैं, या यह अब एक विरासत है?



2
इन्हें भी देखें: भविष्य का SOAP, REST के साथ
gnat

14
@gnat: इसके लायक क्या है, उन दोनों सवालों के जवाब सभी भयानक हैं।
रॉबर्ट हार्वे

7
क्या आपने वास्तव में एक REST सेवा देखी है? मैं देख रहा हूं कि "वेब सेवाएं जो अंततः सीखती हैं कि HTTP क्रियाएं क्या हैं"। हम अचानक HTTP REST क्यों कह रहे हैं?
लुआं

8
@ Luaan: इसके बारे में अचानक कुछ भी नहीं है; लोग वर्षों से "REST" शब्द का दुरुपयोग कर रहे हैं।
मोनिका

जवाबों:


58

वास्तव में वास्तुशिल्प शैली है। SOAP एक डेटा प्रोटोकॉल है। भेद महत्वपूर्ण है; आप सीधे उनकी तुलना नहीं कर सकते।

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

ध्यान दें कि आपको वास्तव में इंटरनेट पर दो कंप्यूटरों के बीच क्लाइंट / सर्वर संबंध बनाने के लिए REST की आवश्यकता नहीं है। आपको बस एक ऐसा तंत्र चाहिए जो JSON या XML को स्थानांतरित करता है, और आपको इसकी आवश्यकता भी नहीं है कि यदि आप अन्य सभी के साथ असंगत होने के लिए तैयार हैं।

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

लेकिन उनमें से किसी का भी REST के साथ वास्तव में बहुत कुछ नहीं है।

इसके अलावा पढ़ना
SOAP से बेहतर है? (अच्छा लेख, भले ही यह गलत तरीके से REST को प्रोटोकॉल कहे)।
रिचर्डसन परिपक्वता मॉडल


3
मैं कहूंगा कि JSON वेब सेवाओं की हत्यारा सुविधा वास्तव में तथ्य यह है कि ब्राउज़र को XML और SOAP के लिए खराब समर्थन है, जबकि उनके पास JSON के लिए (लगभग) मूल समर्थन है। SOAP में इसके लिए बहुत कुछ है, लेकिन यदि आप SOAP सेवा के खिलाफ AJAX अनुरोध नहीं कर सकते हैं, तो यह मृत है। जावास्क्रिप्ट / JSON इंटरनेट का सबसे कम सामान्य भाजक बन गया है, इसलिए आपको इसका उपयोग न करने के लिए एक बड़ा लाभ की आवश्यकता होगी, और SOAP उतना बेहतर नहीं है
लुआं

3
@ Luaan मैं यह नहीं कहूंगा कि ब्राउज़र को XML के लिए खराब समर्थन है। वास्तव में, XML HttpRequest करने और किसी विशेषता को एक्सेस करने से बेहतर है जिसे पार्स किया गया DOM है। यह सिर्फ इतना है कि अगर कोई चाहता है कि एक विशिष्ट डेटा संरचना हो, और दस्तावेज़ नहीं है, तो JSON बस अधिक उपयुक्त है, चाहे आप ब्राउज़र में हों या किसी अन्य वातावरण में।
एंड्रे परमेस

4
आपको बस एक ऐसा तंत्र चाहिए जो JSON या XML को स्थानांतरित करता है, और आपको इसकी आवश्यकता भी नहीं है कि यदि आप अन्य सभी के साथ असंगत होने के लिए तैयार हैं। -1: यदि आप एक क्लाइंट और सर्वर को कनेक्ट करना चाहते हैं, तो आपको एक मनमाना प्रोटोकॉल चाहिए, जो दोनों पक्षों को समझ में आता है कि इसका xml, JSON का उपयोग करने या अन्य सभी के साथ संगत होने से कोई लेना-देना नहीं है। यहां तक ​​कि json या xml का उपयोग करना इस बात की गारंटी नहीं देता है कि आपका संगत सभी के साथ या यहां तक ​​कि किसी के साथ भी। Json और xml सिर्फ डेटा फॉर्मेट हैं और कुछ नहीं।
पॉल वासिल्वेस्की

6
@PaulWasilewski: हां, मैंने यही कहा है। शब्दों पर मत लटकाओ। एक कारण है कि हर कोई JSON का उपयोग करता है; यह एक मानक है। इसका उपयोग करना इस बात की गारंटी देता है कि आप किसी ऐसी चीज का उपयोग कर रहे हैं जो दूसरों के लिए पहचानने योग्य है।
रॉबर्ट हार्वे

3
@RobertHarvey, नहीं, यह वह नहीं है जो आपने लिखा था, शायद आपका मतलब यह था। JSON मानक है तो क्या है? CSV, Protcol Buffers, BSON मानकीकृत हैं और साथ ही कई अन्य। तो हर कोई JSON का उपयोग करने का कारण कई गुना है। और कुछ ऐसे भी हैं जो JSON का उपयोग कर रहे हैं क्योंकि हर कोई JSON का उपयोग कर रहा है;)
पॉल वासिल्वेस्की

29

REST SOAP की तुलना में बहुत अधिक सीमित है, जो इसकी ताकत और इसकी लोकप्रियता का कारण है।

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

REST + JSON ने अपनी सादगी के कारण विशेष रूप से लोकप्रियता हासिल की। यह डेटा प्रकारों के एक सीमित सेट के साथ संचालन के एक सीमित सेट को परिभाषित करता है, एपीआई डिजाइनर की आवश्यकता होती है ध्यान से अमूर्त डिजाइन करने के लिए जो इस सीमित शब्दावली के अंदर फिट होते हैं और वास्तव में व्यावसायिक डोमेन के मानचित्रण के माध्यम से REST संसाधनों के बारे में सोचते हैं। REST API बिना किसी विशेष टूलिंग के समझने में आसान और उपयोग में आसान है। एक सार्वजनिक-सामना करने वाले एपीआई के लिए जहां आपके एपीआई उपयोगकर्ताओं के पास कौशल और ज्ञान के सभी स्तर हो सकते हैं, यह वही है जो आप चाहते हैं, यही वजह है कि वेब के चारों ओर आप जो एपीआई देख रहे हैं, वह आरईएसटी में संक्रमण कर रहा है। SOAP को उन उद्यम स्थितियों में वापस लाया जाता है, जहाँ अभी भी जटिल API को सिस्टम के बीच साझा करने की इच्छा और आवश्यकता है। हालाँकि,

अनिवार्य रूप से, लोगों ने महसूस किया है कि एपीआई को सरल और अमूर्त बनाने के लिए आपके एपीआई डिजाइन पर लागू होने वाली बाधाओं का एक सेट जो इसे बनाए रखने में आसान है और उपयोग करने में आसान है, ठीक यही बाधाओं का सेट है, जो कि आरईएस का परिचय देता है, जो एसओएपी को प्रभावी ढंग से बेअसर करता है लाभ आपको केवल इसके डाउनसाइड के साथ छोड़ रहा है। आप SOAP के साथ एक सरलीकृत API का निर्माण कर सकते हैं, लेकिन REST का उपयोग करना कभी भी आसान नहीं होगा, इसलिए व्यवहार में हर कोई केवलEST का चयन करता है।


4
अच्छा पुराना स्टेटिक बनाम डायनामिक टाइपिंग डिबेट, yay: D नीट और हार्ड बनाम हैकी और सरल, युद्ध जो कभी खत्म नहीं होता है।
लुआं

@ Luaan ... और डायनेमिक हमेशा डेटा इंटरचेंज के लिए जीतता है। youtube.com/watch?v=ROor6_NGIWU
जेरेड स्मिथ

6
@JaredSmith मैं दृढ़ता से असहमत हूं। अनुबंधों का पालन किया जाना चाहिए ताकि दोनों एंडपॉइंट डेटा को सही ढंग से मैप करें, यदि आप ऐसा कर सकते हैं कि मेटाडेटा प्रकाशन के माध्यम से त्रुटि प्रवण प्रलेखन पृष्ठों के बजाय आप क्यों नहीं करेंगे?
drake7707

1
प्रैक्टिकल REST एक प्रोटोकॉल है; थीसिस और धर्म 'स्थापत्य शैली' है। यह उत्तर व्यावहारिक आराम की तुलना व्यावहारिक साबुन से करता है।
bmargulies

1
आपके उत्तर ने पहले ही दिखा दिया कि आप REST को नहीं समझते हैं और आप टिप्पणी करते हैं कि।
पॉल वासिल्वेस्की

5

आप REST और SOAP की तुलना नहीं कर सकते। REST एक वास्तुशिल्प शैली है जबकि SOAP एक प्रोटोकॉल है।

दुर्भाग्य से, REST बोलचाल की भाषा बन गया RESTful HTTP सेवा के लिए एक पर्यायवाची, इसका अर्थ है कि HTTP (अनुप्रयोग) प्रोटोकॉल के साथ REST स्टाइल आर्किटेक्चर का एहसास।

REST निम्नलिखित सिद्धांतों (बाधाओं और तत्वों) पर आधारित है (RESTful HTTP में बोध कोष्ठक में) [1]

  • स्टेटलेस (HTTP एक स्टेटलेस प्रोटोकॉल है)
  • संसाधन (URI द्वारा पहचाना गया)
  • यूनिफ़ॉर्म इंटरफ़ेस (HTTP तरीके)
  • प्रतिनिधित्व (MIME-TYPE)
  • HATEOS (हाइपरलिंक)
  • कैश (HTTP कैश)

दूसरी तरफ बहुत से लोग SOAP को WSDL और SOAP पर आधारित एक वेब सेवा कहते हैं, जो W3C वेब सेवा वास्तुकला [2] का हिस्सा है

  • SOAP का उपयोग सूचना (मूल रूप से विधि का नाम, पैरामीटर, रिटर्न मान, डेटा प्रकार, ...) का आदान-प्रदान करने के लिए प्रोटोकॉल के रूप में किया जाता है।
  • WSDL वेब सेवा का वर्णन करने के लिए एक इंटरफ़ेस परिभाषा भाषा।

SOAP * का वर्तमान में क्या महत्व है?

SOAP एक W3C मानक है और इसका उपयोग W3C वेब सेवाओं में सूचना विनिमय प्रारूप के रूप में किया जाता है। वे वेब सेवाएँ थीं - विशेष रूप से 2008 (+ - 3 वर्ष) के आस-पास SOAs (सेवा-उन्मुख आर्कटिटिटेक) के प्रचार के दौरान - और (दुर्भाग्य से) अभी भी ज्यादातर एंटरप्राइज़ अनुप्रयोगों में लागू की जाती हैं।

इसके कई कारण हैं। तब Restful HTTP अच्छी तरह से ज्ञात नहीं था, और यह गलत समझा गया था। दुर्भाग्य से, यह अभी भी गलत समझा गया है कि अन्य उत्तरों पर एक नज़र डालें

„[...] बाकी SOAP [...] की तुलना में बहुत अधिक सीमित है।

Is REST का प्राथमिक उद्देश्य इंटरनेट पर संसाधनों का प्रतिनिधित्व करना है [...]।

इसके अतिरिक्त, SOAP (और WSDL) W3C वेब सेवा प्रोटोकॉल स्टैक का एक हिस्सा है जो वेब सेवा को लागू करने के लिए और भी अधिक मानक प्रदान करता है।

क्या लोग अभी भी नए सोप-आधारित एपीआई विकसित कर रहे हैं, या यह अब एक विरासत है?

तो हां, अभी भी हैं और भविष्य के सिस्टम में भी होंगे, जो SOAP का उपयोग कर रहे हैं (कम से कम उद्यम प्रणालियों में, ज्यादातर दरवाजे के पीछे)। लेकिन बहुमत आजकल "रेस्ट" के कुछ प्रकार करने की कोशिश कर रहा है।

अगर SOAP और REST के बीच इस अंतर के बारे में गलत हो तो क्या कोई मुझे सही कर सकता है?

यह कहना कि डेटा ट्रांसफर के लिए REST अधिक लचीली स्टेटलेस आर्किटेक्चर है, अच्छी व्याख्या नहीं है। सामान्य तौर पर बोली जाने वाली REST विशिष्ट बाधाओं और तत्वों के साथ एक वास्तुकला शैली है। जबकि SOAP एक सूचना विनिमय प्रोटोकॉल है।

जैसे मैंने पहले ही लिखा था आप उनकी तुलना नहीं कर सकते। लेकिन आप एक RESTful HTTP वेब सेवा की तुलना SOAP / WSDL वेब सेवा से कर सकते हैं।


"लेकिन आप एक SOAP / WSDL वेब सेवा के साथ एक प्रतिष्ठित HTTP वेब सेवा की तुलना कर सकते हैं।" लेकिन यही ओपी पूछ रहा है। क्या किसी ने जवाब दिया कि अभी तक?
RoboJ1M
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.