WSDL बनाम बाकी पेशेवरों और विपक्ष


108

सम्बंधित:

वेब सेवाओं के बजाय REST का उपयोग क्यों करेगा?

यह तय करते समय कि क्या SOAP या REST का उपयोग करके एक वेब सेवा को लागू करना है (जिसके द्वारा मेरा मतलब HTTP / XML को RESTful तरीके से है) मुझे क्या पता होना चाहिए और मुझे क्या सोचना चाहिए? मुझे लगता है कि यह एक आकार नहीं है सब बात फिट बैठता है तो मैं कैसे उपयोग करने के लिए चुनते हैं।


इस सवाल के कुछ उपयोगी उत्तर भी हो सकते हैं: stackoverflow.com/questions/90451/…
रोब ह्रस्का

2
यह संदर्भ पर निर्भर करता है, SOAP और REST दोनों का अपना स्थान है। आप आम तौर पर हाय-सोप और लो-सोप नहीं देखते हैं जैसे आप REST के बारे में सुनते हैं। वहाँ होने का कारण विनिर्देश है, और या तो आप इसका पालन करते हैं या आप नहीं करते हैं। SOAP इसे उन डेटा केंद्रों में उपयोग करता है जहां आपको विभिन्न सर्वरों के बीच अंतर की आवश्यकता होती है जो सीधे संवाद नहीं कर सकते हैं और प्रदर्शन एक महत्वपूर्ण कारक है। उन मामलों में, TCP पर SOAP करना अच्छा है। SOAP को परिवहन स्वतंत्रता के रूप में डिज़ाइन किया गया था, इसलिए अनिवार्य रूप से आपको इसका उपयोग टीसीपी, एमएसएमक्यू, इत्यादि पर करने में सक्षम होना चाहिए, REST केवल HTTP पर ही काम करता है।
श्रीकर डोडी

CodeToGlory सही है। तथ्य की बात के रूप में, Microsoft के WCF को विशेष रूप से SOAP बनाने के लिए डिज़ाइन किया गया था, जो किसी विन्यास माध्यम में मान के रूप में आसान हो।
ट्रैविस हेस्समैन

जवाबों:


111

दो प्रोटोकॉल वास्तविक दुनिया में बहुत भिन्न उपयोग हैं।

SOAP (WSDL का उपयोग करना) एक भारी-वजन वाला XML मानक है जो दस्तावेज़ पास होने के आसपास केंद्रित है। इसके साथ लाभ यह है कि आपके अनुरोधों और प्रतिक्रियाओं को बहुत अच्छी तरह से संरचित किया जा सकता है, और यहां तक ​​कि एक DTD का उपयोग कर सकते हैं। नकारात्मक पक्ष यह है XML, और बहुत ही क्रिया है। हालांकि, यह अच्छा है अगर दो पक्षों को एक सख्त अनुबंध (अंतर-बैंक संचार के लिए कहना) की आवश्यकता है। SOAP आपको अपने दस्तावेज़ों पर WS-Security जैसी चीजों को परत करने देता है। SOAP आम तौर पर परिवहन-अज्ञेयवादी है, जिसका अर्थ है कि आपको HTTP का उपयोग करने की आवश्यकता नहीं है।

REST बहुत हल्का है, और यह काम करने के लिए HTTP मानक पर निर्भर करता है। एक उपयोगी वेब सेवा प्राप्त करना और तेज़ी से चलना बहुत अच्छा है। अगर आपको सख्त API परिभाषा की आवश्यकता नहीं है, तो यह रास्ता तय करना है। अधिकांश वेब सेवाएँ इस श्रेणी में आती हैं। आप अपना एपीआई संस्करण बना सकते हैं ताकि एपीआई के अपडेट पुराने संस्करणों का उपयोग करने वाले लोगों के लिए इसे न तोड़ें (जब तक वे एक संस्करण निर्दिष्ट करते हैं)। REST को अनिवार्य रूप से HTTP की आवश्यकता है, और प्रारूप-अज्ञेयवादी है (जिसका अर्थ है कि आप XML, JSON, HTML, जो भी उपयोग कर सकते हैं)।

आम तौर पर मैं REST का उपयोग करता हूं, क्योंकि मुझे फैंसी WS- * सुविधाओं की आवश्यकता नहीं है। SOAP अच्छा है यदि आप चाहते हैं कि कंप्यूटर WSDL का उपयोग करके आपके वेब सेवा को समझें। अन्य विनिर्देश आमतौर पर मानव-पठनीय होते हैं।


5
@JohnSaunders अगर कोई दस्तावेज़ नहीं है तो लिफाफे क्यों हैं? मुझे नहीं लगता कि मैंने कहा कि DTD SOAP की एक अनूठी विशेषता है। मैं वास्तव में आज बहस करने के मूड में नहीं हूं, क्षमा करें। हो सकता है कि लगभग 3 साल पहले से इस प्रश्न के उत्तर के लिए टिप्पणियों को फिर से पढ़ें। मुझे नहीं लगता कि भारी वजन जरूरी एक बुरी चीज है, कभी-कभी आप होलीफील्ड चाहते हैं, लेकिन दूसरी बार पचकुइयो को काम मिल जाता है। इसे गलत तरीके से न लें और व्यक्तिगत कुछ भी नहीं :)
Kekoa

1
SOAP दस्तावेज़-शैली या RPC- शैली इंटरफ़ेस के साथ काम करता है। इसके अलावा, सोप मेरे ज्ञान के सर्वश्रेष्ठ के लिए DTD का उपयोग बिल्कुल नहीं करता है। और आपने कभी भी "हेवीवेट" की मात्रा निर्धारित नहीं की। क्षमा करें, मैंने केवल आपका उत्तर देखा है, या मैंने तीन साल पहले अस्वीकृत किया था।
जॉन सॉन्डर्स

2
@ जॉनसनर्स कोई समस्या नहीं एक अच्छा दिन है!
कोकोआ 21

2
SOAP की तरह REST, प्रोटोकॉल स्वतंत्र है। यह HTTP पर निर्भर नहीं करता है, हालांकि यह इस तरह से सबसे अधिक उपयोग किया जाता है। मुझे लगता है कि एक महत्वपूर्ण तथ्य यह है कि अक्सर असम्बद्ध हो जाता है कि SOAP बनाम REST एक w3c मानक प्रोटोकॉल की तुलना एक कम परिभाषित व्यावहारिक वास्तुकला पैटर्न से कर रहा है।
joelmdev 17

1
@ jm2 मैंने कभी भी HTTP के बाहर आराम का उपयोग नहीं देखा है। मुझे यह देखने में दिलचस्पी होगी कि कैसे क्रिया GET / POST / PUT / DELETE / etc होती है। HTTP के बिना आराम "प्रोटोकॉल" में काम करें। संपर्क?
काकाओ

33

निम्नलिखित लिंक पेशेवरों और विपक्षों सहित WSDL बनाम REST के बारे में उपयोगी जानकारी प्रदान करते हैं

मुख्य बिंदुओं के एक जोड़े हैं

1) SOAP को एक वितरित कंप्यूटिंग वातावरण के लिए डिज़ाइन किया गया था जहाँ REST को बिंदु से पर्यावरण के लिए डिज़ाइन किया गया था।

2) WADL का उपयोग REST सेवाओं के लिए इंटरफ़ेस को परिभाषित करने के लिए किया जा सकता है।

http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest
http://ajaxonomy.com/2008/xml/web-services-part-2-wsdl-and -wadl


3
वितरित सिस्टम के लिए REST डिज़ाइन किया गया था: "[...] वितरित हाइपरमीडिया सिस्टम के लिए प्रतिनिधि राज्य स्थानांतरण (REST) ​​वास्तुशिल्प शैली [...]" (क्षेत्ररक्षण, 2000) ics.uci.edu/~fielding/pubs/dissertation/ rest_arch_style.htm
थॉमस ईज़िंगर

19

WSDL के बारे में (जिसका अर्थ है "SOAP") "भारी-वजन" के रूप में। भारी मामलों में कैसे? यदि टूलसेट आपके लिए सभी "हेवी लिफ्टिंग" कर रहा है, तो यह क्यों मायने रखता है?

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

यहां तक ​​कि जब यह सब किया जाता है, तब भी आपने कोड में मानव-पठनीय प्रलेखन का अनुवाद किया होगा, सभी परिचर जोखिम के साथ कि मनुष्य इसे गलत पढ़ते हैं। चूंकि डब्ल्यूएसडीएल सेवा का एक मशीन-पठनीय विवरण है, इसलिए "इसे गलत पढ़ना" बहुत कठिन है।


बस एक ध्यान दें: इस पोस्ट के बाद से, मैं है एक मामूली जटिल बाकी सेवा के साथ काम करने का अवसर मिला। मैंने वास्तव में, एक WSDL या समकक्ष के लिए कामना की, और मैंने किया, वास्तव में, हाथ से बहुत सारे कोड लिखना है। वास्तव में, विकास के समय का एक बड़ा हिस्सा उन सभी कोडों के कोड दोहराव को हटाने में खर्च किया गया था, जिन्हें "हाथ से" अलग-अलग सेवा संचालन कहा जाता था।


मुझे लगता है कि "लाइट-वेट" प्रदर्शन के बारे में है, उदाहरण के लिए मान लीजिए कि आप सुझाए गए खोज शब्दों को लोड करते हैं। मैं एक .NET लड़का हूं और मैं वास्तव में आपके द्वारा कहे गए (स्वचालित रूप से उत्पन्न प्रॉक्सी कक्षाओं) के समान कुछ IDE सुविधाओं की सराहना करता हूं, लेकिन REST ws के लिए। ऐसी बात मौजूद है?
रोमिया

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

3
भारी वजन अपमानजनक नहीं है, मेरा मतलब है कि SOAP आपको बहुत कुछ देता है, और एक प्रदर्शन और जटिलता की कीमत पर आता है। मुक्केबाजी में, एक हैवीवेट एक हल्के से अधिक नुकसान की संभावना कर सकता है, लेकिन एक हल्के को कई बार काम मिल सकता है जब हेवीवेट की आवश्यकता नहीं होती है। इसके अलावा, WS-Security, या Transactions की तरह अतिरिक्त "सामान" अतिरिक्त जटिलता का परिचय देता है जो REST के पास नहीं है।
काकोआ

3
"बैक दैट नंबर्स अप" - क्लासिक फ्लेमबैट। मैं दोनों का प्रशंसक हूं, लेकिन दोनों में से कोई भी एक आकार-फिट नहीं है।
कोकोआ 18

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

15

यह संभवतः उपरोक्त पोस्टों में से कई में टिप्पणियों के रूप में है, लेकिन मेरे पास अभी तक ऐसा करने का प्रतिनिधि नहीं है, इसलिए यहां जाता है।

मुझे लगता है कि यह दिलचस्प है कि बहुत सारे पेशेवरों और विपक्षों को अक्सर SOAP और REST के लिए उद्धृत किया जाता है (IMO) दो प्रौद्योगिकियों के वास्तविक मूल्यों या सीमाओं के साथ बहुत कम। संभवत: REST के लिए सबसे अधिक उद्धृत समर्थक यह है कि यह "हल्का-वजन" है या अधिक "मानव पठनीय" है। एक स्तर पर यह निश्चित रूप से सच है, आरईएसटी में प्रवेश के लिए एक कम बाधा है - एसओएपी की तुलना में कम आवश्यक संरचना है (हालांकि मैं उन लोगों से सहमत हूं जिन्होंने कहा है कि अच्छा टूलींग यहां काफी हद तक जवाब है - सोप टूलींग का बहुत बुरा है। बहुत खूंखार)।

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

इसलिए कंप्यूटर सिस्टम के बीच संरचित डेटा के आदान-प्रदान में उपयोग के लिए मुझे यकीन नहीं है कि REST SOAP (या वीजा-वर्सा) की तुलना में स्वाभाविक रूप से बेहतर है, वे बस अलग हैं। मुझे लगता है कि रेस्ट बनाम सोप की तुलना डायनेमिक बनाम स्टैटिक टाइपिंग से ऊपर है। जहां डायनमिक भाषाएं चलने में परेशानी होती हैं, एक प्रणाली के दीर्घकालिक रखरखाव और रखरखाव में है (और लंबे समय तक मैं एक या 2 साल से बात नहीं कर रहा हूं, मैं 5 या 10 पर बात कर रहा हूं)। यह देखना दिलचस्प होगा कि क्या REST समय के साथ समान चुनौतियों में चलता है। मुझे लगता है कि अगर मैं एक वितरित, सूचना प्रसंस्करण प्रणाली का निर्माण कर रहा हूं, तो मैं संचार तंत्र के रूप में SOAP को प्रभावित करूंगा (यह भी कि ट्रांसमिशन और एप्लिकेशन प्रोटोकॉल लेयरिंग और लचीलेपन के कारण यह ऊपर बताए गए हैं)।

अन्य स्थानों में हालांकि REST अधिक उपयुक्त लगता है। ग्राहक और उसके सर्वर के बीच AJAX (पेलोड की परवाह किए बिना) एक प्रमुख उदाहरण है। मुझे इस प्रकार के कनेक्शन की दीर्घायु और देखभाल में आसानी और लचीलेपन की अधिक परवाह नहीं है। इसी तरह अगर मुझे किसी बाहरी सेवा तक त्वरित पहुँच की आवश्यकता होती है और मुझे नहीं लगता कि मैं समय के साथ बातचीत की स्थिरता के बारे में परवाह करने जा रहा था (फिर से मैं यह मान रहा हूँ कि REST मुझे और अधिक लागत देने वाला है, एक तरह से या कोई अन्य), तब मैं REST चुन सकता हूं ताकि मैं जल्दी से अंदर और बाहर निकल सकूं।

वैसे भी, वे दोनों व्यवहार्य प्रौद्योगिकियां हैं और इस बात पर निर्भर करता है कि आप किसी दिए गए आवेदन के लिए क्या ट्रेडऑफ चाहते हैं, वे आपकी अच्छी सेवा कर सकते हैं (या खराब स्थिति)।


5

REST एक प्रोटोकॉल नहीं है; यह एक वास्तुशिल्प शैली है। या यदि आप चाहते हैं तो एक प्रतिमान। इसका मतलब है कि यह एक बहुत कम परिभाषित किया गया है कि SOAP है। बुनियादी CRUD के लिए, आप Atompub जैसे मानक प्रोटोकॉल पर झुक सकते हैं, लेकिन अधिकांश सेवाओं के लिए आपके पास बस से अधिक कमांड होंगे।

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


क्या जावा और .NET के बाहर खराब टूल सपोर्ट का कोई वैध कारण है? क्या डब्लूएसडीएल फ़ाइल से कुछ गायब है, जो कहेगा कि एक रूबी प्रॉक्सी बनाई जा रही है?
जॉन सॉन्डर्स

तकनीकी रूप से नहीं, लेकिन कुछ को इसे लागू करना है, और न तो सूर्य (माफ करना, ओरेकल) या Microsoft रूबी में क्लाइंट पुस्तकालयों को लागू करने के लिए किसी को भुगतान करने जा रहे हैं। SOAP प्रोटोकॉल काफी जटिल है। इस तथ्य को जोड़ें कि सभी जटिलता प्रकार प्रणाली में है, जो कि गतिशील भाषा के दृष्टिकोण से सिर्फ कचरा है। तो आप कह सकते हैं कि SOAP गतिशील भाषाओं पर स्थिर प्रकार की प्रणालियों को मजबूर करता है। REST आसपास के विपरीत तरीके की तरह है।
troelskn

4

मेरे लिए हमें सावधान रहना चाहिए जब हम वेब सेवा शब्द का उपयोग करते हैं। यदि हम SOAP वेब सेवा, REST वेब सेवा या अन्य प्रकार की वेब सेवाओं के बारे में बात कर रहे हैं, तो हमें हर समय निर्दिष्ट करना चाहिए क्योंकि हम यहां विभिन्न चीजों के बारे में बोल रहे हैं और लोग समझ नहीं पाते हैं कि क्या हमने उन सभी वेब सेवाओं का नाम दिया है।

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

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

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


1
यह अब और नहीं होगा?
स्टीवन शॉ

3

SOAP : इसे SMTP के माध्यम से भी ले जाया जा सकता है, इसका मतलब है कि हम ईमेल सरल पाठ प्रारूप का उपयोग करके भी इस सेवा को लागू कर सकते हैं

विभिन्न भाषाओं में एसओएपी संदेश को संबंधित वस्तुओं की संरचना में बदलने के लिए वेब सेवा उपभोक्ता मशीन में अतिरिक्त ढांचा / इंजन होना चाहिए।

REST : अब WSDL2.0 REST वेब सेवा का भी वर्णन करने का समर्थन करता है

जब आप अपनी सेवा को हल्का बनाना चाहते हैं, तो हम सेल फोन, पीडीए आदि जैसे मोबाइल उपकरणों से उदाहरण के लिए उपयोग कर सकते हैं ...


इसे ऊपर लाने के लिए धन्यवाद, @ जेनिथ। कोई भी इसे लाना नहीं चाहता है। डब्ल्यूएसडीएल को विवरण के साथ करना होगा। REST एक प्रतिमान है। दूसरों के लिए: कृपया ibm.com/developerworks/webservices/library/ws-restwsdl में परिचय देखें । मूल प्रश्न, इस प्रकार (इसकी प्रविष्टि की तारीख को देखते हुए) से पता चलता है कि प्रश्न शीर्षक खराब तरीके से चुना गया है (संभवतः डब्ल्यूएसडीएल 1.0 को ध्यान में रखते हुए)।
सन्नी

3

एंटरप्राइज़ सिस्टम के लिए जिसमें आपका सिस्टम आपके निगमों के भीतर सीमित है, साबुन का उपयोग करना आसान और उचित है क्योंकि आप लगभग ग्राहकों के नियंत्रण में हैं। यह आसान है क्योंकि कई प्रकार के उपकरण हैं जो कक्षाएं (परदे के पीछे) बनाते हैं और ऐसा लगता है कि आप अपना नियमित ओओपी कर रहे हैं जो एक जावा या नेट वातावरण से मेल खाता है (जिसमें अधिकांश कॉर्पोरेट उपयोग करते हैं)।

मैं इंटरनेट के लिए REST का उपयोग इंटरफेस (जैसे ट्विटर एप) को उजागर करने के लिए कर रहा हूं क्योंकि क्लाइंट javascripts या html या अन्य का उपयोग कर सकते हैं जिसमें टाइपिंग सख्त नहीं है। और अधिक उदार होने से अधिक समझ में आता है।

इसके अलावा इंटरनेट का सामना करने वाले ग्राहकों (वर्ल्ड वाइड वेब) के लिए, एक साबुन इंटरफ़ेस से आने वाले विशुद्ध रूप से xml के बजाय बाकी इंटरफ़ेस से बाहर आने वाले json या xml को पार्स करना आसान है। जावास्क्रिप्ट पर जावास्क्रिप्ट का उपयोग करना कठिन है और जावास्क्रिप्ट स्वाभाविक रूप से वस्तुओं का समर्थन नहीं करता है। यदि आप जावास्क्रिप्ट के साथ REST का उपयोग कर रहे हैं, तो आप आमतौर पर json स्ट्रिंग को पार्स करेंगे और आप बंद हो जाएंगे। इंटरनेट का सामना करने वाले इंटरफेस आमतौर पर बहुत सरल होते हैं (इसलिए अधिकांश समय इसकी सरल पार्सिंग) और आमतौर पर स्थिरता की मांग नहीं करता है यही कारण है कि REST पर्याप्त पर्याप्त है।

उद्यम अनुप्रयोगों के लिए मुझे नहीं लगता कि REST पर्याप्त है क्योंकि लेनदेन, सुरक्षा, सख्त टाइपिंग, एंटरप्राइज़ अनुप्रयोग विकास में स्कीमा बहुत महत्वपूर्ण भूमिका निभाते हैं यही कारण है कि SOAP उनके लिए अधिक अनुकूल है।

मेरा निष्कर्ष यह है कि SOAP एंटरप्राइज सिस्टम के लिए है, REST इंटरनेट या WWW के लिए है। आप इसे परस्पर उपयोग कर सकते हैं, लेकिन आप अपने आप को एक मुश्किल समय पा सकते हैं अंततः नौकरी के लिए सही उपकरण का उपयोग नहीं कर सकते हैं।

मेरी खराब इंग्लिश के लिए माफ़ कीजिये।


2

REST के बचाव में, यह HTTP और एड्रेसबिलिटी के सिद्धांतों का बारीकी से अनुसरण करता है, जैसे पढ़े गए ऑपरेशन GET, अपडेट ऑपरेशंस POST आदि का उपयोग करते हैं। मुझे लगता है कि यह एक दूर का क्लीनर दृष्टिकोण है। ओरेली की पुस्तक रेस्टफुल वेब सर्विसेज मुझे बताती है कि यदि आप इसे पढ़ते हैं तो मुझे लगता है कि आप आरईटी दृष्टिकोण को पसंद करेंगे।


1

क्लाइंट साइड पर टूलसेट एक होगा। और SOAP के साथ परिचित अन्य सेवाओं। अधिक से अधिक सेवाएँ इन दिनों RESTful मार्ग पर जा रही हैं, और ऐसी सेवाओं का परीक्षण सरल cURL उदाहरणों के साथ किया जा सकता है। हालांकि, यह दोनों तरीकों को लागू करने और ग्राहकों से व्यापक उपयोग के लिए अनुमति देने के लिए मुश्किल नहीं है।

यदि आपको एक लेने की आवश्यकता है, तो मैं सुझाव दूंगा, यह आसान है।


1

पिछले उत्तरों में बहुत सारी जानकारी है, लेकिन मुझे लगता है कि एक दार्शनिक अंतर है जिसे इंगित नहीं किया गया है। SOAP का उत्तर था "हम RPC में एक आधुनिक, वस्तु-उन्मुख, मंच और प्रोटोकॉल स्वतंत्र उत्तराधिकारी कैसे बना सकते हैं?" REST इस प्रश्न से विकसित हुआ, "हम उन अंतर्दृष्टि को कैसे लेते हैं जो HTTP को वेब के लिए इतना सफल बनाते हैं, और वितरित कंप्यूटिंग के लिए उनका उपयोग करते हैं?"

सोप आपको वितरित प्रोग्रामिंग लुकिंग ... प्रोग्रामिंग जैसे उपकरण बनाने के बारे में है। REST वितरित इंटरफ़ेस को सरल बनाने के लिए एक शैली लगाने की कोशिश करता है, ताकि वितरित संसाधन एक दूसरे को संदर्भित कर सकें जैसे वितरित html पृष्ठ एक दूसरे को संदर्भित कर सकते हैं। एक ऐसा तरीका है जो संसाधनों पर "CRUD" के लिए (अधिकतर) संचालन को प्रतिबंधित करने का प्रयास करता है (बनाएं, पढ़ें, अपडेट, हटाएं)।

REST अभी भी युवा है - हालांकि यह "मानव पठनीय" सेवाओं की ओर उन्मुख है, यह आत्मनिरीक्षण सेवाओं, आदि या प्रॉक्सी के स्वत: निर्माण से इंकार नहीं करता है। हालांकि, इनका मानकीकरण नहीं किया गया है (जैसा कि मैं लिखता हूं)। SOAP आपको ये चीजें प्रदान करता है, लेकिन (IMHO) आपको इन चीजों को "केवल" देता है, जबकि REST द्वारा लगाया गया स्टाइल पहले से ही अपनी सादगी के कारण वेब सेवाओं के प्रसार को प्रोत्साहित कर रहा है। मैं स्वयं नौसिखिया सेवा प्रदाताओं को REST चुनने के लिए प्रोत्साहित करूंगा जब तक कि विशिष्ट SOAP द्वारा प्रदान की जाने वाली सुविधाएँ न हों, जिनका उन्हें उपयोग करने की आवश्यकता है।

मेरी राय में, यदि आप "ग्रीनफील्ड" एपीआई को लागू कर रहे हैं, और संभावित ग्राहकों के बारे में इतना नहीं जानते हैं, तो मैं रीस्ट का चयन करूंगा क्योंकि यह उस शैली को प्रोत्साहित करता है जिससे इंटरफेस को समझने में मदद मिलती है, और विकसित करने में आसान होता है। यदि आप क्लाइंट और सर्वर के बारे में बहुत कुछ जानते हैं, और ऐसे विशिष्ट एसओएपी उपकरण हैं जो दोनों के लिए जीवन को आसान बना देंगे, तो मैं REST के बारे में धार्मिक नहीं होगा, हालांकि।


-1: यह वास्तव में सवाल का जवाब नहीं देता है। यह बहुत कम या कुछ भी नहीं कहता है "मुझे दूसरे पर एक क्यों चुनना चाहिए"?
जॉन सॉन्डर्स

1
मैं उन सूचनाओं को प्रदान करने पर ध्यान केंद्रित कर रहा था जो दूसरों ने नहीं की हैं - लेकिन आपके संकेत को देखते हुए निष्कर्ष निकाला है।
शौंक

0

आप आसानी से अपनी कॉन्फ़िगरेशन सेटिंग्स को बदलकर अपने WSDL-spewing WCF वेब घटकों को अन्य उपयोगों में बदल सकते हैं। आप अपना कोड बदलने के बिना HTTP और उसके बाद पाइप, टीसीपी, कस्टम प्रोटोकॉल आदि का नाम ले सकते हैं। मेरा मानना ​​है कि WCF घटक सुरक्षा, टू-वे कॉलिंग, लेनदेन, संगामिति इत्यादि जैसे सामानों को स्थापित करने में आसान हो सकते हैं।

REST आपको बहुत अधिक HTTP (जो कई मामलों में ठीक है) तक सीमित करता है।


0

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

सोप जटिल और भारी है क्योंकि यह आपको जटिल भारी पदानुक्रमित डेटा भेजने की अनुमति देता है। REST सादा पाठ है, जिसमें मूल और समापन बिंदु नियमों को छांटते हैं।

SOAP व्यवसाय स्वतंत्र है, क्योंकि इसमें दस्तावेज़ में सभी डेटा नियम निहित हैं।

SOAP और REST के बीच अंतर यह है कि SOAP एक स्व-निहित व्यवसाय उन्मुख स्कीमा है। REST एक टेक्स्ट डॉक्यूमेंट है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.