2009-03-22 8 views
41

आईडीएल का क्या अर्थ है? मैंने इसे गुगल किया है, और पाया कि यह इंटरफ़ेस परिभाषा भाषा के लिए है, जिसका उपयोग घटकों के लिए इंटरफ़ेस परिभाषा के लिए किया जाता है। लेकिन, व्यावहारिक रूप से, आईडीएल का उद्देश्य क्या है? क्या माइक्रोसॉफ्ट इसका इस्तेमाल करता है?आईडीएल क्या है?

+0

आईडीएल के लिए http://en.wikipedia.org/wiki/Interface_description_language भी देखें ... – Thufir

उत्तर

57

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

असल में, आप क्लाइंट और सर्वर के बीच इंटरफ़ेस निर्दिष्ट करने के लिए एक आईडीएल का उपयोग करते हैं ताकि RPC तंत्र नेटवर्क पर फ़ंक्शन कॉल करने के लिए आवश्यक कोड स्टब्स बना सके।

आरपीसी को आईडीएल जानकारी का उपयोग कर क्लाइंट और सर्वर के लिए स्टब फ़ंक्शन बनाने की आवश्यकता है। यह बहुत सी में एक समारोह के प्रोटोटाइप के समान है, लेकिन अंतिम परिणाम थोड़ा अलग, इस तरह के रूप में है:

+----------------+ 
| Client   | 
| +----------+ | +---------------+ 
| | main | | | Server  | 
| |----------| | | +----------+ | 
| | stub_cli |------->| stub_svr | | 
| +----------+ | | |----------| | 
+----------------+ | | function | | 
        | +----------+ | 
        +---------------+ 

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

सर्वर में, एक 'श्रोता' प्रक्रिया है जो उस जानकारी को प्राप्त करेगी और उसे सर्वर पर पास करेगी। सर्वर का स्टब जानकारी प्राप्त करता है, इसे अनपैक करता है और इसे वास्तविक फ़ंक्शन में भेज देता है।

असली फ़ंक्शन तब करता है जो सर्वर की स्टब पर करता है और रिटर्न जानकारी (दोनों रिटर्न कोड और [out] या [in,out] चर) को पैकेज कर सकता है और इसे क्लाइंट स्टब पर वापस भेज सकता है।

क्लाइंट स्टब फिर उसे अनपैक करता है और इसे main पर वापस भेज देता है।

वास्तविक विवरण थोड़ा अलग हो सकता है लेकिन यह स्पष्टीकरण एक वैचारिक अवलोकन के लिए पर्याप्त होना चाहिए।

वास्तविक आईडीएल लग सकता है जैसे:

[uuid(f9f6be21-fd32-5577-8f2d-0800132bd567), 
    version(0), 
    endpoint("ncadg_ip_udp:[1234]", "dds:[19]")] 
interface function_iface { 
    [idempotent] void function(
     [in] int handle, 
     [out] int *status 
    ); 
} 

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

माइक्रोसॉफ्ट COM सामान के लिए आईडीएल (मुझे लगता है कि उनके पास MIDL कंपाइलर है) का उपयोग करता है। मैंने एमएस ऑपरेटिंग सिस्टम, डीसीई और ओएनसी आरपीसी दोनों के साथ तीसरे पक्ष के उत्पादों का भी उपयोग किया है।

+2

उनके पास MIDL कंपाइलर है। इसे midlc कहा जाता है। हर हर। – sblom

+8

मिडलसी सी # के विपरीत है? :-) केवल संगीतकार इस विनोद, लंगड़ा को समझेंगे। – paxdiablo

1

यह एक ऐसी भाषा है जिसका उपयोग COM युग में किया गया है ताकि एक (माना जाता है) भाषा-तटस्थ फैशन में इंटरफेस को परिभाषित किया जा सके।

10

Interactive Data Language भी है जो मेरे पास वैज्ञानिक डेटा विश्लेषण के लिए उपयोग करने का काम था, लेकिन शायद संदर्भ से यह स्पष्ट है कि यह आईडीएल क्या नहीं है।

1

यह किसी अन्य एप्लिकेशन में एक उजागर सेवा के साथ संचार के लिए उपयोग किए जाने वाले इंटरफ़ेस को परिभाषित करता है।

यदि आप SOAP का उपयोग करते हैं तो आपको डब्लूएसडीएल के बारे में पता चल जाएगा। डब्ल्यूएसडीएल एक आईडीएल का एक और रूप है।आईडीएल आमतौर पर माइक्रोसॉफ्ट COM या कोर्बा आईडीएल को संदर्भित करता है।

5

आईडीएल Interface Definition Language के लिए एक संक्षिप्त शब्द है जिसमें से भाषा को परिभाषित करने वाले विक्रेता या मानक समूह के आधार पर कई भिन्नताएं हैं। आईडीएल का लक्ष्य कुछ सेवा के लिए इंटरफ़ेस का वर्णन करना है ताकि ग्राहक सेवा का उपयोग करना चाहें, यह जान लेंगे कि कौन सी विधियां और गुण, इंटरफ़ेस, सेवा प्रदान करता है। आईडीएल आमतौर पर बाइनरी इंटरफेस के साथ प्रयोग किया जाता है और आईडीएल भाषा फ़ाइल बाइनरी इंटरफ़ेस में उपयोग किए जाने वाले डेटा प्रकारों का वर्णन करती है।

बाइनरी घटकों के लिए कई अलग-अलग मानक हैं, आमतौर पर COTS or Commercial Off The Shelf, और क्लाइंट बाइनरी घटक के साथ संचार कैसे कर सकता है हालांकि परंपरागत रूप से Remote Procedure Call or RPC का कुछ संस्करण उपयोग किया जाता है। ऐसे दो मानक Microsoft Common Object Model or COM standard और Common Object Request Broker or CORBA standard हैं। Firefox plugins जैसे घटकों के लिए अन्य मानकों या विजुअल स्टूडियो जैसे अन्य अनुप्रयोगों के लिए प्लगइन्स हैं, हालांकि इन्हें किसी प्रकार की सॉफ़्टवेयर डेवलपमेंट किट या एसडीके के बजाय मानक और जाने-माने इंटरफेस के साथ इंटरफ़ेस विवरण भाषा का कुछ रूप उपयोग नहीं करना चाहिए। एपीआई।

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

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

माइक्रोसॉफ्ट एमआईडीएल कंपाइलर प्रदान करता है जो टाइप लाइब्रेरी उत्पन्न करने के लिए एक आईडीएल फ़ाइल को संसाधित करता है, इंटरफ़ेस के बारे में COM ऑब्जेक्ट के उपयोगकर्ताओं को जानकारी प्रदान करता है, और क्लाइंट और सेवा के बीच इंटरफ़ेस में मार्शल डेटा के लिए आवश्यक स्टब्स प्रदान करता है।

डेटा का मार्शलिंग मूल रूप से स्टब क्लाइंट द्वारा प्रदान किया गया डेटा लेता है, इसे संकुल करता है और इसे उस सेवा में भेजता है जो कुछ क्रिया करता है और डेटा वापस भेजता है। डेटा भेजने और प्राप्त करने से कुछ आरपीसी सेवा या प्रत्यक्ष डीएलएल फ़ंक्शन कॉल के माध्यम से हो सकता है। सेवा से प्रतिक्रिया क्लाइंट के लिए उपयुक्त फॉर्म में अनुवादित की जाती है और फिर ग्राहक को प्रदान की जाती है। इसलिए मूल रूप से मार्शल कार्यक्षमता क्लाइंट और सेवा के बीच adapter (see the adapter design pattern) या bridge (see the bridge design pattern) है।

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

कोडप्रोजेक्ट.com जैसी वेबसाइटों पर कई उदाहरण परियोजनाएं भी हैं। उदाहरण के लिए यहां one using C to expose all the ugly plumbing behind COM है और यहां one using C++ without ATL है।

1

आईडीएल 2 मामलों में महत्वपूर्ण है। 1. exe सर्वर के लिए प्रॉक्सी/स्टब dlls बनाने के लिए। 2. स्वचालन सर्वर के लिए टाइप लाइब्रेरी बनाने के लिए।

link

में आईडीएल की मूल बातें के लिए बहुत अच्छा लेख आईडीएल का अध्ययन करने के भी नहीं है, यह बेहतर है compilers के अपने आईडीएल हेडर फाइल जो दिया जाता है पढ़ने के लिए कुलपति ++ पैकेज की उप-निर्देशिका में शामिल हैं।

+0

जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। – Rizier123

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