RPC-ish दृष्टिकोण REST से अधिक उपयुक्त कब हैं?


33

स्टीव विनोस्की द्वारा REST, Reuse और Serendipity पर यह बात देखने के बाद , मुझे आश्चर्य है कि अगर ग्रीनफील्ड प्रोजेक्ट्स (XML-) RPC-ish सेटअप के लिए व्यावसायिक मामले हैं , तो REST बेहतर तरीके से हल नहीं कर सकता है।

कुछ RPC- समस्याओं का उन्होंने उल्लेख किया है:

  • भाषा पर ध्यान दें (वितरित प्रणाली को भाषा में फिट करें, न कि दूसरे तरीके से)
  • "इसे स्थानीय बनाएं" (और नियम के बजाय विफलता और विलंबता के साथ सामना करें)
  • भाषा-स्वतंत्र होने का इरादा है, लेकिन अभी भी मुख्य घटक के रूप में भाषाओं में "फ़ंक्शन कॉल" है
  • IDL बॉयलरप्लेट
  • प्रकार की सुरक्षा का भ्रम
  • और कुछ और ...

बस इसे थोड़ा सा नाटकीय करने के लिए, RPC बनाम REST के लिए कुछ Google झटपट परिणाम:

आरपीसी

आराम

जवाबों:


20

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

यहां ऐसे मामले हैं जहां मैंने आरपीसी को एक बेहतर फिट पाया है:

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

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

उपरोक्त तीन आइटम अक्सर तब होते हैं जब आप एक बड़े सिस्टम के एक घटक का निर्माण करना चाहते हैं। मेरे अनुभव में, ये घटक अक्सर ऐसे होते हैं, जहां उनके उपतंत्र स्वतंत्र रूप से विफल होने में सक्षम होते हैं और अन्य उप-प्रणालियों या संपूर्ण घटक की कुल विफलता का कारण नहीं बनते हैं। इन लक्ष्यों को पूरा करने के लिए एर्लांग में कई प्रणालियां लिखी गई हैं, और कुछ मामलों में एर्लैंग एक अन्य भाषा में एक प्रणाली लिखने और इन लाभों को प्राप्त करने के लिए आरपीसी का उपयोग करने से बेहतर विकल्प हो सकता है।

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


1

REST के कुछ प्रमुख लाभ हैं जब उत्पादों को एक डेटासेंटर के ऊपर बढ़ाया जाता है और आप उच्च उपलब्धता और भार संतुलन कर रहे होते हैं।

हालांकि, एक छोटे पैमाने की परियोजना के बारे में सोचें। एक webservice की आवश्यकता है कि एक घंटे में कुछ सौ अनुरोध होगा? WCF सभी परिवहन मुद्दों से संबंधित है। नेटवर्क के पार वस्तुओं को भेजने के लिए एक सुविधाजनक इंटरफ़ेस है, और नेटवर्क कनेक्शन को कॉन्फ़िगर करने, एन्क्रिप्ट करने और शून्य प्रोग्रामिंग के साथ प्रमाणित करने की अनुमति देता है बस application.config फ़ाइल का उपयोग कर।


1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.