2012-05-18 9 views
25

प्रश्न 1:जावा में "स्टब" और "एआईडीएल" क्या है?

मैं एंड्रॉयड सेवा पढ़ रहा हूँ और अक्सर इस तरह कोड देखें:

private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){} 

.Stub क्या है?

प्रश्न 2:

मैं "AIDL", जाँच की, लेकिन मैं जानना चाहता है कि हम चाहते हैं कि उपयोग करने के लिए जावा इंटरफ़ेस फ़ाइल के बजाय है करना चाहते हैं?

उत्तर

26

'स्टब' एक ऐसी कक्षा है जो दूरस्थ इंटरफ़ेस को इस तरह से लागू करती है कि आप इसका उपयोग कर सकें जैसे कि यह स्थानीय था। यह डेटा marashalling/unmarshalling और रिमोट सेवा से भेजने/प्राप्त करने के लिए संभालती है। शब्द 'स्टब' आमतौर पर अन्य आरपीसी विधियों (COM, जावा रिमोटिंग इत्यादि) में इस कार्यक्षमता का वर्णन करने के लिए प्रयोग किया जाता है, लेकिन इसका मतलब थोड़ा अलग चीजें हो सकता है।

आईडीएल (इंटरफ़ेस परिभाषा भाषा) आमतौर पर भाषा स्वतंत्र होती है, और आप सैद्धांतिक रूप से सी ++ या पायथन स्टब कोड उत्पन्न कर सकते हैं। हालांकि एंड्रॉइड जावा आधारित है, इसलिए भेद सूक्ष्म है। एक अंतर यह है कि आप एक .aidl फ़ाइल में केवल एक इंटरफ़ेस प्राप्त कर सकते हैं, जबकि जावा प्रति .java फ़ाइल एकाधिक कक्षाओं/इंटरफेस की अनुमति देता है। ऐसे कुछ नियम भी हैं जिनके लिए प्रकार समर्थित हैं, इसलिए यह जावा इंटरफेस के समान नहीं है, और आप एआईडीएल के बजाय एक का उपयोग नहीं कर सकते हैं।

+0

मैं अभी भी उलझन में हूं। शायद मुझे और समय चाहिए। विभिन्न कंप्यूटर भाषा में आईपीसी के उपकरणों के बारे में समान हैं? या वे अलग हैं लेकिन उनमें से सभी को उस तरह की चीज करने की ज़रूरत है। और जावा में विशेष रूप से एसडीके पर आधारित, अगर हम आईडीएल का उपयोग करते हैं, तो यह आसान होगा? क्या मैं इसे इस तरह समझा सकता हूं? धन्यवाद निकोले। – AmyWuGo

+1

वे सामान्य अवधारणाएं हैं। जबकि आप शायद एंड्रॉइड में एआईडीएल के अलावा कुछ और लागू कर सकते हैं, यह मानक नहीं होगा, इसलिए आप एआईडीएल को केवल मानक आरपीसी तंत्र के रूप में सोच सकते हैं। –

+0

आप बुनियादी विचार प्राप्त करने के लिए यहां प्रारंभ कर सकते हैं: http://en.wikipedia.org/wiki/Remote_procedure_call –

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