2012 के ताज़ा (दूसरे बाउंटी द्वारा) प्रश्न का उत्तर देना, और आज के परिणामों (अन्य उत्तरों) की समीक्षा करना।
SOAP, पेशेवरों और विपक्ष
SOAP 1.2, फायदे और कमियों के बारे में जब "REST" के साथ तुलना की जाती है ... ठीक है, 2007 के बाद से आप WSDL के साथ REST वेब सेवाओं का वर्णन कर सकते हैं , और SOAP प्रोटोकॉल का उपयोग कर सकते हैं ... अर्थात, यदि आप थोड़ा कठिन परिश्रम करते हैं, तो W3C के सभी मानक 1.2
वेब सेवा प्रोटोकॉल स्टैक REST हो सकता है !
यह एक अच्छा प्रारंभिक बिंदु है, क्योंकि हम एक ऐसे परिदृश्य की कल्पना कर सकते हैं जिसमें सभी दार्शनिक और पद्धति संबंधी चर्चाओं को अस्थायी रूप से टाला जाता है। हम समान सेवाओं में "NON-SOAP-REST" के साथ तकनीकी रूप से "SOAP-REST" की तुलना कर सकते हैं,
SOAP-REST (= "REST-SOAP"): जैसा कि L.Mandel द्वारा दिखाया गया है , WSDL2 एक REST webservice का वर्णन कर सकता है, और, अगर हमें लगता है कि एक्सएमएल को SOAP में कवर किया जा सकता है, तो सभी कार्यान्वयन "SOAP-REST" होंगे। ।
NON-SOAP-REST : कोई भी REST वेब सेवा जो SOAP नहीं हो सकती ... जो कि अच्छी तरह से ज्ञात REST उदाहरणों का "90%" है। कुछ एक्सएमएल का उपयोग नहीं करते हैं (उदाहरण के लिए विशिष्ट AJAX RESTs JSON का उपयोग करते हैं), कुछ SOAP हेडर या नियमों के बिना एक और XML स्ट्रक्यूटर्स का उपयोग करते हैं। पुनश्च: अनौपचारिकता से बचने के लिए, हम तुलना में REST स्तर 2 को मान सकते हैं ।
बेशक, अधिक वैचारिक रूप से तुलना करने के लिए, विभिन्न मॉडलिंग दृष्टिकोणों के रूप में "NON-SOAP-REST" के साथ "NON-REST-SOAP" की तुलना करें। इसलिए, वेब सेवाओं के इस वर्गीकरण को पूरा करना:
NON-REST-SOAP : कोई भी SOAP वेब सेवा जो REST नहीं हो सकती ... जो कि अच्छी तरह से ज्ञात SOAP उदाहरणों का "90%" है।
NON-REST-NEITHER-SOAP : हां, "वेब सेवाओं मॉडलिंग" के ब्रह्मांड में अन्य चीजें शामिल हैं (जैसे एक्सएमएल-आरपीसी )।
बाकी के चुनावों में एसओएपी
: तुलनीय चीजों की तुलना सोप-बाकी के साथ गैर-सोप-बाकी ।
पेशेवरों
कुछ शब्दों की व्याख्या करते हुए,
संविदात्मक स्थिरता : सभी प्रकार के अनुबंधों के लिए ("लिखित समझौते"),
स्टैंडर्स के उपयोग से : W3C स्टैक के सभी स्तर परस्पर अनुरूप हैं। दूसरी ओर, REST, W3C या ISO मानक नहीं है, और इसमें सेवा के बाह्य उपकरणों के बारे में कोई विवरण नहीं है। इसलिए, जैसा कि मैंने , @DaveWoldrich (20 वोट), @cynicalman (5), @Exitos (0) ने पहले कहा, एक संदर्भ में जहां STANDARDS के लिए आवश्यक हैं, आपको SOAP की आवश्यकता है।
सर्वोत्तम प्रथाओं के उपयोग द्वारा : डब्ल्यू 3 सी स्टैक कार्यान्वयन का " क्रिया पहलू" , प्रासंगिक मानव / कानूनी / न्यायिक समझौतों का अनुवाद करता है।
रोबस्टनेस : SOAP संरचना और हेडर की सुरक्षा। मेटाडा संचार (एक्सएमएल की पूर्ण अभिव्यक्ति के साथ) और सत्यापन के साथ आपके पास किसी भी परिवर्तन या शोर के खिलाफ "बीमा पॉलिसी" है।
SOAP में संचार विफलताओं के साथ "लेन-देन की विश्वसनीयता (...) है। SOAP के पास रिट्री लॉजिक के आसपास अधिक नियंत्रण है और इस प्रकार यह एंड-टू-एंड विश्वसनीयता और सेवा गारंटी प्रदान कर सकता है", ई। टरमन ।
लोकप्रियता के आधार पर छंटनी,
बेहतर उपकरण (~ 70 वोट): SOAP में वर्तमान में 2007 और 2012 के बाद से बेहतर उपकरणों का लाभ है, क्योंकि यह एक अच्छी तरह से परिभाषित और व्यापक रूप से स्वीकृत मानक है। @MarkCidade (27 वोट), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9) देखें।
स्टैंडर्स अनुपालन (25 वोट): जैसा कि I , @DaveWoldrich (20 वोट), @cynicalman (5), @Exitos (0) ने पहले कहा, एक संदर्भ में जहां STANDARDS के लिए आवश्यक हैं, आपको AAP की आवश्यकता है।
मजबूती : सोप हेडर, @JohnSaunders (8 वोट) का बीमा।
कान्स
एसओएपी स्ट्रिकुलेट अधिक जटिल (300 से अधिक वोट) है: यहां सभी उत्तर, और "सोप बनाम रेस्ट" के बारे में स्रोत, एसओएपी की अतिरेक और जटिलता के साथ नापसंद के कुछ डिग्री को प्रकट करते हैं। यह औपचारिक सत्यापन (नीचे देखें), और मजबूती (ऊपर देखें) के लिए आवश्यकताओं का एक स्वाभाविक परिणाम है । "REST NON-SOAP" (और XML-RPC, SOAP प्रवर्तक ) अधिक सरल और अनौपचारिक हो सकता है।
"केवल XML" प्रतिबंध छोटी सेवाओं (~ 50 वोट) का उपयोग करते समय एक प्रदर्शन बाधा है : json.org/xml देखें और यह प्रश्न , या यह अन्य । यह बिंदु @toluju (41), और अन्य लोगों द्वारा दिखाया गया है।
पुनश्च: चूंकि JSON एक IETF मानक नहीं है , लेकिन हम वेब सॉफ्टवेयर समुदाय के लिए एक वास्तविक मानक पर विचार कर सकते हैं।
SOAP के साथ मॉडलिंग सेवाएँ
अब, हम SOAP-NON-REST को NON-SOAP-REST तुलना के साथ जोड़ सकते हैं , और बता सकते हैं कि SOAP का उपयोग करना कब बेहतर है :
मानकों और स्थिर अनुबंधों की आवश्यकता ("PROS" अनुभाग देखें)। पुनश्च: @saille द्वारा वर्णित एक सामान्य "बी 2 बी मानकों की आवश्यकता है" देखें ।
उपकरण की आवश्यकता है ("PROS" अनुभाग देखें)। पुनश्च: मानक , और औपचारिक सत्यापन (बेलो देखें) का अस्तित्व , उपकरण स्वचालन के लिए महत्वपूर्ण मुद्दे हैं।
समानांतर भारी प्रसंस्करण (नीचे "संदर्भ / नींव" अनुभाग देखें): बड़ी और / या धीमी प्रक्रियाओं के साथ, सोप की थोड़ी अधिक जटिलता के साथ कोई फर्क नहीं पड़ता, विश्वसनीयता और स्थायित्व सबसे अच्छा निवेश हैं।
अधिक सुरक्षा की आवश्यकता : जब HTTPS से अधिक की आवश्यकता होती है, और आपको वास्तव में सुरक्षा के लिए अतिरिक्त सुविधाओं की आवश्यकता होती है, तो SOAP एक बेहतर विकल्प है ( देखें @Bell , 32 वोट)। "अनुरोध / प्रतिक्रिया से अधिक जटिल पथ पर संदेश भेजना या HTTP शामिल नहीं करने वाले परिवहन पर", एस। सेली । XML एक मुख्य मुद्दा है, XML एन्क्रिप्शन , XML हस्ताक्षर और XML Canonicalization के लिए मानक की पेशकश , और, केवल SOAP के साथ आप इन तंत्रों को संदेश में WS- सुरक्षा के रूप में अच्छी तरह से स्वीकार किए गए मानक द्वारा एम्बेड कर सकते हैं ।
अधिक लचीलापन (कम प्रतिबंध) की आवश्यकता है: SOAP को URI के साथ सटीक पत्राचार की आवश्यकता नहीं है; HTTP पर एनडीडी प्रतिबंधित नहीं है; 4 क्रियाओं को प्रतिबंधित करने की आवश्यकता नहीं है। जैसा कि @TravisHeseman (9 वोट) कहते हैं, यदि आप "ग्राहक प्रौद्योगिकियों और उपयोगों की एक मनमानी संख्या के लिए लचीला" चाहते थे, तो SOAP का उपयोग करें।
पुनश्च: याद रखें कि XML JSON (et al) की तुलना में अधिक सार्वभौमिक / अभिव्यंजक है।
औपचारिक सत्यापन की आवश्यकता : यह समझना महत्वपूर्ण है कि डब्ल्यू 3 सी स्टैक औपचारिक तरीकों का उपयोग करता है , और आरईएसटी अधिक अनौपचारिक है। आपका WSDL (एक औपचारिक भाषा ) सेवा विवरण आपकी वेब सेवाओं के इंटरफेस का एक औपचारिक विनिर्देश है, और SOAP एक मजबूत प्रोटोकॉल है जो सभी संभव WSDL नुस्खे को स्वीकार करता है।
संदर्भ
ऐतिहासिक
रुझानों का आकलन करने के लिए आवश्यक ऐतिहासिक परिप्रेक्ष्य है। इस विषय के लिए, 10 या 15 साल के परिप्रेक्ष्य ...
W3C मानकीकरण से पहले, कुछ अराजकता हैं। अलग-अलग चौखटे के साथ इंटरऑपरेबल सेवाओं को लागू करना मुश्किल था, और अधिक कठिन, महंगा और कंपनी के बीच कुछ अंतर को लागू करने में समय लगता है। W3C ढेर मानकों एक प्रकाश, जटिल वेब सेवाओं के सेट में से अंतर्संचालन के लिए एक उत्तर दिया गया है।
AJAX को लागू करने के लिए दिन-प्रतिदिन के कार्यों के लिए, SOAP भारी है ... इसलिए, एक नए सिद्धांत-ढांचे को चुनने के लिए सरल दृष्टिकोण की आवश्यकता है ... और Google, अमेज़ॅन के रूप में बड़े "वेब सॉफ्टवेयर खिलाड़ी", याहू, एट अल, ने सबसे अच्छा विकल्प चुना, जो कि आरईएसटी दृष्टिकोण है। इस संदर्भ में कि REST अवधारणा एक "प्रतिस्पर्धात्मक ढाँचे" के रूप में आई थी, और आज (2012) में, यह विकल्प प्रोग्रामरों के लिए एक वास्तविक मानक है।
नींव
समानांतर कम्प्यूटिंग के संदर्भ में वेब सेवाएं समानांतर सबट्यूसर प्रदान करती हैं; और प्रोटोकॉल, सोप की तरह, अच्छा तुल्यकालन और संचार सुनिश्चित करता है। "कोई कार्य" नहीं: वेब सेवाओं को
मोटे-मोटे और शर्मनाक समानता के रूप में वर्गीकृत किया जा सकता है ।
जैसा कि कार्य बड़ा हो जाता है, यह कम महत्वपूर्ण "जटिलता बहस" बन जाता है, और संचार की मजबूती और अनुबंधों की दृढ़ता से अधिक प्रासंगिक हो जाता है।