web services आरईएसटी और एसओएपी वेब सेवाओं की तुलना करें और विपरीत करें?




web-services rest (3)

एसओएपी संचार बीटीडब्ल्यू उपभोक्ता और प्रदाता के लिए डब्ल्यूएसडीएल का उपयोग करता है, जबकि आरईएसटी डेटा भेजने और प्राप्त करने के लिए एक्सएमएल या जेएसओएन का उपयोग करता है

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

एसओएपी मानव पठनीय परिणाम नहीं लौटाता है, जबकि आरईएसटी परिणाम केवल सादा एक्सएमएल या जेएसओएन के साथ पठनीय है

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

लिंक + अर्थात् लिंक संबंधों के साथ ग्राहकों को यह निर्धारित करने में सक्षम होना चाहिए कि अगला इंटरैक्शन चरण क्या है और इन लिंक का पालन करें और सेवा के साथ संचार जारी रखें।

यह जरूरी नहीं है कि संदेश मानव पठनीय हो, क्रिप्टिक प्रारूप का उपयोग करना और पूरी तरह से मान्य आरईएसटी अनुप्रयोगों का निर्माण करना संभव है। इससे कोई फर्क नहीं पड़ता कि संदेश मानव पठनीय है या नहीं।

इस प्रकार, सादा एक्सएमएल (एप्लिकेशन / एक्सएमएल) या जेएसओएन (एप्लिकेशन / जेसन) आरईएसटी अनुप्रयोगों के निर्माण के लिए पर्याप्त प्रारूप नहीं हैं। क्लाइंट और सर्वर के बीच बातचीत को समन्वयित करने के लिए इन सामान्य मीडिया प्रकारों के सबसेट का उपयोग करना हमेशा उचित होता है, जिनमें मजबूत अर्थपूर्ण अर्थ होता है और पर्याप्त नियंत्रण जानकारी (लिंक इत्यादि ...) प्रदान करता है।

आरईएसटी केवल HTTP से अधिक है

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

पीएस आरईएसटी के बहुत ही सरल, अभी तक बहुत ही रोचक स्पष्टीकरण: http://www.looah.com/source/view/2284

मैं वर्तमान में उपभोक्ता और प्रदाता के बीच डेटा का आदान-प्रदान करने के लिए इंटरनेट प्रोटोकॉल (HTTP) दोनों का उपयोग कर रहा हूं।

अंतर यह है:

  1. एसओएपी एक एक्सएमएल आधारित संदेश प्रोटोकॉल है, जबकि आरईएसटी एक वास्तुशिल्प शैली है
  2. एसओएपी उपभोक्ता और प्रदाता के बीच संचार के लिए डब्ल्यूएसडीएल का उपयोग करता है, जबकि आरईएसटी डेटा भेजने और प्राप्त करने के लिए एक्सएमएल या जेएसओएन का उपयोग करता है
  3. एसओएपी आरपीसी विधि को कॉल करके सेवाओं का आह्वान करता है, आरईएसटी बस यूआरएल पथ के माध्यम से सेवाओं को कॉल करता है
  4. एसओएपी मानव पठनीय परिणाम नहीं लौटाता है, जबकि आरईएसटी परिणाम केवल सादा एक्सएमएल या जेएसओएन के साथ पठनीय है
  5. एसओएपी सिर्फ HTTP से अधिक नहीं है, यह एसएमटीपी, एफ़टीपी, आदि जैसे अन्य प्रोटोकॉल का भी उपयोग करता है, आरईएसटी केवल HTTP से अधिक है

यही वह सब कुछ है जो मुझे उनके बीच मतभेद के रूप में पता है। क्या कोई मुझे सही कर सकता है और अधिक जोड़ सकता है।


एसओएपी इसका अपना प्रोटोकॉल लाता है और सेवाओं के रूप में आवेदन तर्क (डेटा नहीं) के टुकड़ों को उजागर करने पर केंद्रित है। एसओएपी संचालन का खुलासा करता है। एसओएपी नामित संचालन तक पहुंचने पर केंद्रित है, प्रत्येक अलग-अलग इंटरफेस के माध्यम से कुछ व्यावसायिक तर्क लागू करता है।

हालांकि एसओएपी को आमतौर पर "वेब सेवाओं" के रूप में जाना जाता है, यह एक गलत नाम है। वेब के साथ कुछ भी करने के लिए SOAP बहुत कम है। आरईएसटी यूआरआई और HTTP के आधार पर सही "वेब सेवाएं" प्रदान करता है।

चित्रण के माध्यम से यहां कुछ कॉल और टिप्पणी के साथ उनके उचित घर हैं।

getUser(User);

यह एक बाकी ऑपरेशन है क्योंकि आप संसाधन (डेटा) तक पहुंच रहे हैं।

switchCategory(User, OldCategory, NewCategory)

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


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

JSON डेटा आमतौर पर दृढ़ता से परिभाषित प्रारूप के अनुसार पारित नहीं होता है (जब तक कि आप इसका समर्थन करने वाले ढांचे का उपयोग नहीं कर रहे हों .. उदाहरण के लिए http://msdn.microsoft.com/en-us/library/jj870778.aspx या json- स्कीमा)।

वास्तव में, कुछ (कई / सबसे अधिक) तर्क देंगे कि जेएसओएन की "गतिशील" गुप्त सॉस डेटा अनुबंधों द्वारा इसे बाधित करने के दर्शन / संस्कृति के खिलाफ जाती है ( क्या JSON रीस्टफुल वेब सेवाएं डेटा अनुबंध का उपयोग करनी चाहिए )

गतिशील ढीले टाइप की गई भाषाओं में काम करने वाले लोग जेएसओएन की नीरसता के साथ अधिक सहज महसूस करते हैं, जबकि दृढ़ता से टाइप की गई भाषाओं के डेवलपर्स एक्सएमएल पसंद करते हैं।

http://www.mnot.net/blog/2012/04/13/json_or_xml_just_decide





soap