2012-06-11 10 views
73

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

अंतर है:

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

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

+16

वे uncomparable रहे कम से कम क्योंकि सोप एक प्रोटोकॉल है और बाकी कोई परिभाषित कल्पना पर सभी के साथ एक अवधारणा है। आरईएसटी के साथ संगत एसओएपी वेब सेवा लिखने से कुछ भी प्रतिबंधित नहीं है। –

उत्तर

54

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

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

सोप मानव पठनीय परिणाम वापस नहीं करता है, जबकि बाकी परिणाम पठनीय है सादे एक्सएमएल है के साथ या JSON

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

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

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

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

  • नियंत्रण जानकारी के बारे में अधिक जानकारी के लिए मैं अत्यधिक की सलाह देते हैं इस पढ़ें: http://www.amundsen.com/hypermedia/hfactor/
  • वेब लिंकिंग: http://tools.ietf.org/html/rfc5988
  • पंजीकृत लिंक संबंधों:

बाकी केवल खत्म हो गया है HTTP

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

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

+0

+1 ("मैंने अपनी पत्नी को आरईएसटी कैसे समझाया") –

0

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

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

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

getUser(User); 

इस के रूप में आप एक संसाधन (डेटा) तक पहुँच रहे हैं एक आराम ऑपरेशन है।

switchCategory(User, OldCategory, NewCategory) 

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

+4

दिलचस्प, यह जवाब बिल्कुल वैसा ही है [यह] (http://spf13.com/post/soap-vs-rest/) जनवरी 2010 ब्लॉग पोस्ट कहता है ...शब्द – brazilianldsjaguar

+0

"(डेटा नहीं)" के लिए लगभग शब्द = गलत - एसओएपी वेब सेवाओं में डब्लूएसडीएल लौटाए गए डेटा के लिए एक बहुत समृद्ध और स्पष्ट विवरण प्रदान करता है ताकि डेटा को आसानी से सीएसआईएल के अनुसार क्रमबद्ध/डी-क्रमबद्ध किया जा सके। अनुबंध'। नेट/डब्ल्यूसीएफ –

+0

("एसओएपी केवल एक्सएमएल परमिट") में 'डेटाकंट्रैक्ट' के रूप में इसे संदर्भित करने का यही कारण है = इसका मतलब यह नहीं है कि आप एक्सएमएल मार्कअप को बेहद हल्का नहीं रख सकते हैं और किसी अन्य प्रारूप को एम्बेड नहीं कर सकते , जेएसओएन या बेस 64 एन्कोडेड डेटा सहित। यदि आप तर्क देते हैं कि एसओएपी डेटा मार्कअप (एक्सएमएल) में लपेटा जाना चाहिए तो यह पुन: समायोजित करना काफी आसान है कि जेएसओएन को बिंदु ए से बिंदु बी तक पहुंचने के लिए मार्कअप रैपिंग की भी आवश्यकता होती है। एसओएपी वेब-सर्विसेज जावास्क्रिप्ट का उपभोग करना काफी आसान है। –

4

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

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

में तथ्य, कुछ (अनेक/सबसे) का तर्क था कि "डायनामिक" JSON का रहस्य सॉस डेटा अनुबंध (Should JSON RESTful web services use data contract)

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

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

+0

प्रोटोबफ एक्सएमएल की तुलना में अधिक दृढ़ता से टाइप किया गया है! – fread2281

+0

[प्रलेखन] (https://code.google.com/p/protobuf/) से: ".. आप प्रोटोकॉल के साथ [डेटा] संकलित करते हैं, प्रोटोकॉल बफर कंपाइलर, सी ++, जावा, या पायथन में कोड उत्पन्न करने के लिए "- बहुत सीमित लगता है। सीधे जेएसओएन और एसओएपी इन सीमाओं को पीड़ित नहीं करते क्योंकि पूरे बिंदु भाषा तटस्थ है। –

+0

@ fread2281 protobuf अधिक दृढ़ता से टाइप नहीं किया गया है (यह वास्तव में एक बात नहीं है)। यह एक उच्च प्रदर्शन तार प्रोटोकॉल है जिसके लिए नवीनतम प्रारूप का समर्थन करने के लिए संकलित कोड की आवश्यकता होती है, (@ माइकल.एम) जो अभ्यास में एसओएपी की सीमाओं से अलग नहीं है, जहां आपको डब्ल्यूएसडीएल और कोड को प्रत्येक छोर पर सामना करने के लिए तैनात किया जाना है नवीनतम प्रारूपों के साथ। –

संबंधित मुद्दे