2008-10-09 4 views
6

अगर मुझे यह प्रश्न "चर्चा" प्रश्न होने पर क्षमा करें, लेकिन मैं वास्तव में उचित स्पष्टीकरण के साथ हां/नहीं उत्तर की सराहना करता हूं।क्या आप अगले जेन मंगल रोवर के नियंत्रण एपीआई को आरपीसी के बजाय रीस्टफुल करने के लिए आर्किटेक्ट करेंगे?

मान लीजिए कि आपको रोबोट के लिए नियंत्रण API को डिज़ाइन और कार्यान्वित करना है, अगले पीढ़ी मंगल रोवर कहें। क्या आप इस एपीआई को RESTful सिद्धांतों के अनुसार आर्किटेक्ट करते हैं, या आप क्लासिक आरपीसी, जैसे XMLRPC का उपयोग करते हैं?

मैं यह पूछता हूं क्योंकि मुझे कुछ ऐसा करना है, हालांकि "रोबोट" आभासी मशीनों का संग्रह है। एपीआई रीस्टफुल बनाने के लिए, मुझे एक बल्कि प्रेरक अभियंता, एक प्रसिद्ध आरईएसटी वकील द्वारा आग्रह किया जा रहा है। मैंने कभी भी आरईएसटी सिद्धांतों का उपयोग नहीं किया है, और मैं यह देखने के लिए संघर्ष कर रहा हूं कि वे निम्न स्तर के इंटर-प्रोसेस एपीआई को डिजाइन करने में कैसे फिट होते हैं। आरईएसटी एक संशोधित डेटा भंडार के साथ बातचीत करने के विषय के साथ infused लगता है, आमतौर पर कई hops दूर। जो मैं करने की कोशिश कर रहा हूं वह रोबोट को बारीकी से नियंत्रित करने जैसा लगता है। मैं देख सकता हूं कि कैसे कोई तर्क दे सकता है कि रोबोट, सार में, केवल एक डेटा भंडार है - "बाएं मोड़ डालें", "100 मीटर यात्रा करें", "बाहरी तापमान प्राप्त करें"। लेकिन ऐसा लगता है कि यह एक बल्कि विपरीत मॉडल है। मुझे निश्चित रूप से कैशिंग या प्रॉक्सी से कोई फायदा नहीं मिलेगा ("हैलो, जेपीएल? यह कैनबरा में अकामाई सह-लो है। हम अब रोवर ले रहे हैं, ठीक है?")

तो, एक शानदार वास्तुकला है यहाँ उपयोगी है? क्या यह आरपीसी से भी बेहतर है जब बातचीत इतनी कम ध्यान केंद्रित होती है?

+0

जेपीएल/अकामाई/usurp टिप्पणी से प्यार करें :-) –

+0

एक्सएमएलआरपीसी बिल्कुल इसके लिए डिज़ाइन किया गया है। इस संदर्भ में आरईएसटी क्रियाओं में से कोई भी समझ में नहीं आता है, आपका पूरा काम दूरस्थ प्रक्रिया कॉल को कॉल कर रहा है। इसके अतिरिक्त, अन्य आरईएसटी लाभ (जैसे कि अंतर्निहित पकड़) यहां या तो कोई समझ नहीं लेते हैं। – FlySwat

उत्तर

7

मुझे लगता है कि आरईएसटी पारंपरिक आरपीसी की तुलना में अधिक समझदार होगा। यहां तक ​​कि Micorosft Robotics Studio runtime application model आरईएसटी का उपयोग करता है।

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

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

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

लंबी दूरी के लिए आप कैशिंग के लिए रिले प्रॉक्सी का उपयोग कर सकते हैं।

रोबोट को स्थानांतरित करने वाले आदेशों के लिए, POST जैसे कुछ का उपयोग किया जाएगा जहां हर ऐसा संदेश रोबोट को बदल देगा (उदाहरण के लिए, दाएं मुड़ें)। एक स्टेटस कोड वापस किया जा सकता है यह दर्शाता है कि आदेश को तत्काल निष्पादित किया गया था या प्रसंस्करण के लिए कतारबद्ध किया गया था या नहीं।

किसी भी संसाधन की पूर्ण स्थिति को PUT जैसे कुछ का उपयोग करके सेट किया जा सकता है, जहां एकाधिक संदेश केवल एक संदेश से अधिक नहीं बदलेंगे (उदाहरण के लिए, उत्तरी ध्रुव या मंद फ्रंट रोशनी को 10% चमक तक इंगित करें)। मार्ग में खोने वाले संदेशों की संभावना के मामले में यह विश्वसनीय संदेश की अनुमति देता है।

एक नया संसाधन पोस्ट-जैसे ऑपरेशन के माध्यम से भी बनाया जा सकता है, उदाहरण के लिए, डेटा-संग्रह दिनचर्या और पैरामीटर का एक सेट। POST अनुरोध नए संसाधन के लिए एक यूआरआई के साथ एक क्रिएटिव परिणाम वापस भेज सकता है, जिसका उपयोग अब आवश्यक होने पर DELETE करने के लिए किया जा सकता है।

रोबोट का एक समूह एक ही आरईएसटी आधारित प्रोटोकॉल का उपयोग करके एक-दूसरे से बात कर सकता है और उसी लाभ का आनंद ले सकता है।

अनुमोदित, एक अलग अलग स्थानीय रोबोट को नियंत्रित करने वाले व्यक्ति की तरह कुछ सरल, एक आरईएसटी एपीआई अधिक हो सकता है। लेकिन बहु-उपयोगकर्ता और/या अविश्वसनीय-संचार-चैनलों और/या वेब-स्केल-नेटवर्किंग के लिए, आरईएसटी कुछ विचार करने के लिए है।

+0

दिलचस्प लेख - धन्यवाद! –

+0

+1, यह स्वीकार किए गए एक से बेहतर जवाब है। –

+0

मैं सहमत हूं! डॉट डॉट डॉट... –

1

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

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