2010-11-09 7 views
9

मैं विभिन्न साइटों कर लिया है और केवल जवाब वे प्रदान करना है - शोकहारा webservices जैसे (प्राप्त, पोस्ट, PUT, DELETE) .. सोप जबकि Http के स्वयं के तरीकों का उपयोग करता है आधारित वेबसाइसेस अपने स्वयं के कस्टम तरीकों का उपयोग करता है .. - आराम से वेब सेवाएं संसाधन के रूप में प्रत्येक सेवा विधि का इलाज करती हैं और इसे एक यूआरआई देता है ..कैसे है RESTful वेब सेवाओं सोप की तुलना में बेहतर आधारित webservices

हालांकि मुझे इन उत्तरों का पूरा महत्व समझ में नहीं आता है .. क्यों इन चीजों को एसओएपी आधारित वेब सेवाओं पर इतना बड़ा फायदा साबित होता है ..

एक उदाहरण की सराहना की जाएगी

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/76595/soap-or-rest – michid

+0

क्या आपके कोई विचार हैं? आपके पास 4 बहुत अच्छे उत्तर हैं। – RPM1984

+0

@ RPM1984: हां, मुझे लगता है कि मैं आरईएसटी के साथ जाऊंगा क्योंकि इसमें अलग-अलग सेवाओं के लिए अलग-अलग यूआरएल हैं जो इसे बहुत कमजोर जोड़ते हैं और यूआरएल संरचना जैसी निर्देशिका भी है (एसओएपी के विपरीत "www.somesite.com?query=something") जो इसे खोज इंजन अनुकूल बनाता है। :) – Anand

उत्तर

10

बाकी स्वाभाविक रूप से, वेब/बादल एपीआई के लिए फिट बैठता है, जबकि साबुन वितरित अभिकलन परिदृश्यों के लिए फिट बैठता है।

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

नहीं उल्लेख करने के लिए बाकी XmlHttpRequest वस्तु है, जो फिर से, वेब एपीआई के लिए AJAX-क्षमता के लिए महत्वपूर्ण है करने के लिए उपलब्ध है।

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

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

तो मेरी राय (और पूरी SOAP बनाम रीस्ट चीज की अत्यधिक राय है), वितरित कंप्यूटिंग परिदृश्यों के लिए SOAP का उपयोग करें, वेब एपीआई के लिए आरईएसटी का उपयोग करें।

+0

@ आरपीएम 1 9 84: "आरईएसटी की कैशबिलिटी फीचर" से आपका क्या मतलब है? – Cratylus

+0

@ user384706 - क्योंकि आरईएसटी HTTP पर आधारित है, यह प्रतिक्रियाओं के लिए कैश हेडर (समाप्त) को जोड़ने की अनुमति देता है ताकि उन्हें ब्राउज़र द्वारा कैश किया जा सके। प्रतिक्रिया पैकेट * स्पष्ट रूप से * cacheability बताता है। अब यह ** क्लाइंट ** कैशिंग है, सर्वर कैशिंग के साथ उलझन में नहीं है। फिर से मेरा मुख्य पोस्ट वेब के लिए आरईएसटी क्यों है, वितरित कंप्यूटिंग के लिए एसओएपी। – RPM1984

+0

उस स्पष्टीकरण में जोड़ने के उत्तर के साथ भी संपादित किया गया। – RPM1984

1

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

4

सोप के साथ मुख्य मुद्दा ब्लोट है। जितना अधिक आप कर सकते हैं उतना कम आप डिफ़ॉल्ट का उपयोग कर सकते हैं। यह सरल तरीकों के लिए भी विशाल डब्ल्यूएसडीएल डाउनलोड की ओर जाता है। इसके बाद, यह पारसर्स (विशिष्ट पारसर्स हमेशा सामान्य प्रयोजन की तुलना में छोटे होते हैं), संदेश (बजाय एक्सएमएल की एक पूरी गुच्छा DELETE यूआरआई के साथ), त्रुटि संचालकों bloats (आप सर्वर से XML का 20-30KB भेज सकते हैं और यह 50 केबी त्रुटि संदेश के साथ प्रतिक्रिया करता है; अच्छी किस्मत पढ़ना और समझना)।

कंक्रीट उदाहरण: एक शेयरपॉइंट सर्वर से SOAP के माध्यम से दस्तावेज़ों की एक सूची पढ़ने के लिए जावा कोड इतना बड़ा है कि आपको इसे संकलित करने के लिए जावा कंपाइलर 1 जीबी रैम देने की आवश्यकता है।

शोकहारा जरूरतों सिर्फ कोड की कुछ लाइनों के साथ एक ही। ग्राहक पर, आपको GET list/some/url के साथ अनुरोध बनाने की आवश्यकता है। पार्सिंग कि सर्वर पर डब्ल्यूएसडीएल को संकलित करने से कम प्रयास होगा भले ही आपको हाथ से कोड लिखना पड़े।

+1

इसकी आवाज़ से, आपको ढांचे के साथ वास्तव में बुरा अनुभव हुआ है। एसओएपी को आम तौर पर आरईएसटी से शुरू करने के लिए कम मैन्युअल कोडिंग की आवश्यकता होती है, क्योंकि ढांचे आमतौर पर नलसाजी के एक बड़े हिस्से को स्वचालित करते हैं। डब्लूएसडीएल का आकार रनटाइम प्रदर्शन के लिए अप्रासंगिक होना चाहिए क्योंकि इसका उपयोग केवल क्लाइंट साइड प्रॉक्सी पीढ़ी में सहायता के लिए किया जाता है। –

+1

मैंने एक्सिस का इस्तेमाल किया। क्या जावा पर कुछ और है? इसके अलावा, डब्लूएसडीएल का आकार प्रासंगिक है क्योंकि बड़े डब्लूएसडीएल == बड़े अनुरोध। –

2

कई अतिरिक्त जटिलता सोप परत से जोड़ा की वजह से सोप आधारित वेब सेवाओं पर सिकोड़ी है, एक अनुचित भूमि के ऊपर के रूप में यह विचार, RESTful वेब सेवाओं का प्रस्ताव।
आरईएसटी ढांचे में, एक्सएमएल संदेश सीधे HTTP पेलोड में encapsulated है और एक एसओएपी लिफाफा के अंदर नहीं (AJAX के समान)।
जो पार्सिंग ओवरहेड को काफी कम करता है।
लेकिन असली मामलों में अक्सर सर्वर/क्लाइंट को अतिरिक्त जानकारी भेजने की आवश्यकता होती है जो वास्तविक xml संदेश पेलोड से संबंधित नहीं है।
इससे HTTP संदेश के माध्यम से जानकारी को स्थानांतरित करने के तरीके मिलते हैं।
के बाद से कुछ जवाबी तर्क दिया कि सोप आधारित सेवाओं, thesed जरूरतों के लिए सुविधाजनक बनाने के लिए है इस तरह की जानकारी को हस्तांतरण करने की आवश्यकता है।

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