2012-07-29 16 views
17

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

तो, क्या कोई यहां एक्सएमएल-आरपीसी का उपयोग कर आरईएसटी + जेएसओएन का उपयोग कर एपीआई को लागू करने के व्यावहारिक कारण प्रदान कर सकता है?

+0

आमतौर पर जब हम "वेब" के बारे में बात करते हैं तो आमतौर पर आरईएसटी शैली बेहतर है क्योंकि यह HTTP तरीके से काम करता है ... यहां एक [चर्चा] है (http://www.linkedin.com/answers/technology/web - विकास/टीसीएच_डब्ल्यूडीडी/371332-132625) इस विषय पर लिंक्डइन पर – Adil

उत्तर

15

आरईएसटी बनाम आरपीसी कार्यान्वयन जैसे एक्सएमएल-आरपीसी एक झूठी डिकोटॉमी है। आप XML-RPC का उपयोग करके एक विश्वसनीय इंटरफ़ेस को कार्यान्वित कर सकते हैं (हालांकि आप शायद नहीं चाहते हैं)। जिसके अनुसार, कारणों में से एक गुच्छा तुम क्यों बजाय वेनिला HTTP का उपयोग कर XML-RPC की तरह एक प्रौद्योगिकी का उपयोग कर अपनी खुद की RPC इंटरफ़ेस रोलिंग एक RESTful तरीके से संसाधनों का पर्दाफाश करने के लिए चाहते हो जाएगा देखते हैं:

  1. भविष्य कार्यों मुख्य रूप से नियंत्रित कर रहे हैं प्रक्रिया कॉल के माध्यम से क्लाइंट में हार्ड-कोड किए जाने के बजाय सर्वर, तैनाती और संस्करण को सरल बनाना।
  2. कैशिंग, थ्रॉटलिंग और वर्जनिंग जैसी चीजों के लिए मौजूदा कार्यान्वयन बॉक्स से बाहर किया जा सकता है।
  3. आरपीसी इंटरफ़ेस के साथ रोल की जाने वाली कस्टम प्रक्रियाओं को बहुत कम रूप से स्कॉप्ड होने की संभावना है।

अधिक जानकारी के लिए this ब्लॉग पोस्ट देखें।

6
  • एक्सएमएल-आरपीसी पेटेंट को घेर लिया गया है। आप पाते हैं कि आप एक दिन अपने उपयोग के लिए रॉयल्टी का भुगतान करने के लिए कहा जाता है। जहां तक ​​मैं कह सकता हूं, आरईएसटी नहीं है।

  • एक्सएमएल-आरपीसी अनुरोध सुरक्षा बुनियादी ढांचे के लिए अपारदर्शी हैं। जबकि एक HTTP जागरूक फ़ायरवॉल को आरईएसटी कॉल को डेटा पढ़ने की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है लेकिन इसे अपडेट या डिलीट नहीं किया जा सकता है।

आरईएसटी के अन्य फायदे बड़े डेटा सेट से निपटने के लिए और अधिक लागू होते हैं।

  • आरईएसटी तार पर बहुत हल्का है (विशेष रूप से जब एक्सएमएल के बजाय JSON का उपयोग करते हैं)।

  • एक्सएमएल-आरपीसी HTTP अर्थशास्त्र को अनदेखा करता है। सभी एक्सएमएल-आरपीसी कॉल HTTP पोस्ट हैं। इसमें कई प्रभाव हैं। इसमें

    • आरईएसटी अनुरोध HTTP कैशिंग इंफ्रास्ट्रक्चर से लाभ प्राप्त करते हैं जहां सभी एक्सएमएल-आरपीसी कॉल को लक्ष्य सर्वर द्वारा संसाधित किया जाना चाहिए।
    • REST क्लाइंट को एक साधारण HTTP HEAD अनुरोध का उपयोग करके अपडेट की जांच करने में सक्षम बनाता है। एक्सएमएल-आरपीसी में ऐसा करने के लिए, आपको इसे अपने एपीआई में बनाना होगा।
  • XML-RPC क्लाइंट ताकि एक वापसी मान जहां यह एक बाकी ग्राहक स्ट्रीम प्रोसेस होने के लिए के रूप में यह आता है सरल है के रूप में प्रस्तुत किया जा सकता है स्मृति में पूरे प्रतिक्रिया लोड करना होगा। इसका मतलब यह है कि आरईएसटी कॉल के लिए रिकॉर्ड्स के लिए यह ठीक है कि किसी भी रिकॉर्ड के साथ प्रतिक्रिया दें जहां एक एक्सएमएल-आरपीसी एपीआई को प्रतिक्रिया के आकार को सीमित करना चाहिए।

+2

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

+0

मैं मानता हूं कि पेटेंट, सुरक्षा और प्रदर्शन अच्छी तुलना मानदंड नहीं हैं। प्रदर्शन के संबंध में, जेएसओएन-आरपीसी है, जो एक्सएमएल-आरपीसी से हल्का है। –