2012-02-23 14 views
7

के बीच अंतर मैं .NET ढांचे को सीख रहा हूं और मेटाडाटा और मैनिफेस्ट के माध्यम से पढ़ रहा हूं।मेटाडाटा और मैनिफेस्ट

"मेटाडेटा डेटा के बारे में डेटा है और मेनिफेस्ट असेंबली के बारे में डेटा है !!"

प्रश्न: तो मेटाडेटा को प्रकट नहीं किया गया है?

फिर इसके अंतर क्या हैं?

+0

वह उद्धृत कथन संदिग्ध गुणवत्ता का है। यह .NET के विशिष्ट संदर्भ में "प्रकट" की परिभाषा देता है, लेकिन "मेटाडाटा" शब्द के लिए ऐसा करने के बजाय, यह उस शब्द की एक बहुत ही सामान्य परिभाषा पर वापस आ जाता है जो .NET से संबंधित सभी सहायक नहीं है। .NET में, "मेटाडाटा" आमतौर पर "असेंबली में एम्बेड की गई जानकारी, सभी प्रकारों और उनके सदस्यों को परिभाषित या उस असेंबली से संदर्भित" के आधार पर कुछ का अर्थ है। आपके उद्धरण का स्रोत क्या है? – stakx

उत्तर

13

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

मेटाडाटा डेटा के बारे में डेटा का मतलब है। मेटाडाटा उस असेंबली में प्रकार उपलब्ध कराता है, जैसे। कक्षाएं, इंटरफेस, enums, structs, आदि, और उनके युक्त नामस्थान, प्रत्येक प्रकार का नाम, इसकी दृश्यता/दायरा, इसकी बेस क्लास, इंटरफेस लागू किए गए इंटरफेस, इसकी विधियों और उनके दायरे, और प्रत्येक विधि के पैरामीटर , प्रकार के गुण, और इतने पर। विधानसभा मेटाडाटा स्रोत फ़ाइलों से compilers स्वचालित रूप से उच्च स्तर के द्वारा उत्पन्न होता है। संकलक लक्ष्य आउटपुट फ़ाइल में मेटाडाटा, एक DLL, एक .exe या बहु मॉड्यूल विधानसभा के मामले में एक .netmodule एम्बेड करता है।

+0

तो मेटाडेटा प्रकट है या नहीं? –

+2

प्रश्न का उत्तर देने या उन सम्मानों का सुझाव देने का प्रयास करें जहां एक सम्मानजनक उत्तर प्राप्त किया जा सकता है। कॉपी पेस्ट से बचें! –

+1

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

0

"Programming .NET Components, Second Edition" By Juval Lowy published by O'Reilly पृष्ठ 39 पहले पैराग्राफ से:

मेटाडाटा:

मेटाडाटा का वर्णन क्या एक .NET विधानसभा में है की पूरी तरह से है। मेटाडेटा में खुदाई उस असेंबली में उपलब्ध प्रकारों को उत्पन्न करती है, जैसे। कक्षाएं, इंटरफेस, एनम्स, structs, आदि, और उनमें नामस्थान, प्रत्येक प्रकार का नाम, इसकी दृश्यता/गुंजाइश, इसका आधार वर्ग, इंटरफेस लागू किया गया है, इसकी विधियां और उनके दायरे, और प्रत्येक विधि के पैरामीटर, प्रकार के गुण, और इतने पर। विधानसभा metada स्रोत फ़ाइलों से स्वचालित रूप से उच्च स्तरीय संकलक द्वारा उत्पन्न होता है। संकलक लक्ष्य उत्पादन फ़ाइल में मेटाडाटा, एक DLL, एक .exe या बहु मॉड्यूल विधानसभा के मामले में एक .netmodule एम्बेड करता है। एक multimodule विधानसभा के मामले में कभी मॉड्यूल जिसमें आईएल मेटाडाटा यह में embeded कि मॉड्यूल में प्रकार वर्णन करने के लिए होना चाहिए। प्रत्येक संकलक के लिए लक्षित।आउटपुट फ़ाइल में मेटाडेटा उत्पन्न करने और एम्बेड करने के लिए नेट सीएलआर को की आवश्यकता है, और मेटाडेटा मानक प्रारूप में होना चाहिए। .NET प्रतिबिंब बड़े पैमाने पर डायनामिक रूप से प्रकार की जानकारी जानने के लिए मेटाडेटा जानकारी का उपयोग करता है।

मेटाडाटा एक प्रबंधित असेंबली में प्रकार, प्रकार के नाम, विधि नाम इत्यादि जैसे मूलभूत जानकारी है (मूल रूप से, जानकारी जो आप प्रतिबिंब सेवाओं से पुनर्प्राप्त कर सकते हैं)। अधिक जानकारी के लिए http://msdn2.microsoft.com/en-us/library/ms404430.aspx देखें।

विधानसभा मैनिफ़ेस्ट:

मेटाडाटा, एक सभा में सामग्री का वर्णन जबकि प्रकट विधानसभा में वर्णन, उपलब्ध कराने के तार्किक गुण सभी मॉड्यूल और विधानसभा में सभी घटकों द्वारा साझा । मेनिफेस्ट में असेंबली नाम, संस्करण संख्या, लोकेल और एक वैकल्पिक मजबूत नाम है जो विशिष्ट रूप से असेंबली की पहचान करता है। यह मेनिफेस्ट जानकारी सीएलआर द्वारा उपयोग की जाती है। मेनिफेस्ट में इस असेंबली को सत्यापित करने के लिए सुरक्षा मांग भी शामिल है। इसमें नाम और असेंबली बनाने वाली सभी फ़ाइलों के हैंश शामिल हैं। .NET असेंबली मेनिफेस्ट में असेंबली में विभिन्न मॉड्यूल के क्रिप्टोग्राफ़िक हैश शामिल हैं। और जब असेंबली लोड हो जाती है, तो सीएलआर हाथ में मॉड्यूल के हैश को पुन: गणना करता है, और इसे एम्बेडेड हैश के साथ तुलना करता है। यदि रनटाइम पर उत्पन्न हैश मेनिफेस्ट में पाया गया है, तो .NET असेंबली लोड करने से इनकार करता है और अपवाद फेंकता है। यह COM से अलग है, COM के तहत एक मूल DLL या EXE फ़ाइल को दूसरे के साथ स्वैप करना संभव है, जिसमें लाइब्रेरी/इंटरफेस हैं और मैलासिश कोड चलाकर सिस्टम को नुकसान पहुंचाते हैं। असेंबली में सभी मॉड्यूल की स्रोत फ़ाइलों से उच्च स्तरीय कंपाइलर द्वारा मेनिफेस्ट स्वचालित रूप से जेनरेट किया जाता है। मैनिफेस्ट केवल एक भौतिक फ़ाइल में एम्बेड किया गया है और केवल एक बार है क्योंकि यह असेंबली के सभी मॉड्यूल के लिए आम है, जबकि मेटाडाटा को सभी मॉड्यूल एम्बेड करने की आवश्यकता है। .NET CLR संगत कंपाइलर्स को मैनिफेस्ट उत्पन्न करना होगा और यह मानक प्रारूप में होना चाहिए। मेनिफेस्ट का उपयोग करना .NET अन्य संदर्भित असेंबली के बारे में जानकारी कैप्चर करता है। यह संस्करण संगतता सुनिश्चित करता है, और असेंबली अन्य विधानसभाओं के सटीक विश्वसनीय सेट के साथ बातचीत करने के लिए मिलता है। मेनिफेस्ट में प्रत्येक संदर्भित असेंबली नाम है, इसकी सार्वजनिक कुंजी (यदि एक मजबूत नाम उपलब्ध है), इसका संस्करण नंबर, और लोकेल शामिल है। इस असेंबली को चलाने के दौरान, .NET गारंटी देता है कि केवल इन विशिष्ट असेंबली का उपयोग किया जाता है, और केवल संगत संस्करण लोड किए जाते हैं।

"मैनिफेस्ट" एक सुंदर ओवरलोडेड शब्द है। .NET में, एक "असेंबली मैनिफेस्ट" संस्करणिंग सामग्री का वर्णन करने वाली असेंबली में कुछ मेटाडेटा है। अधिक जानकारी के लिए यहां देखें http://msdn2.microsoft.com/en-us/library/1w45z383.aspx

आप समग्र विधानसभा और मॉड्यूल के बारे में के बारे में विधानसभा प्रकट here

मेटाडाटा अधिक पढ़ सकते हैं प्रकट

+1

उद्धरण के स्रोत को शामिल करने के लिए इसे अच्छा अभ्यास माना जाता है। क्या यह [यह] (http://kamleshsingh.wetpaint.com/page/Assembly+manifest,metadata) है? –

+0

ओह क्षमा करें। मुझे फिर से जांच करने दो। क्योंकि मैं पूरे दिन गुगल रहा हूं और कुछ समझ में आया हूं। –

+0

स्रोत: डॉटनेट फ़ंडा और एमएसडीएन –

0

मेटाडाटा कहा जाता है, एक सभा में सामग्री का वर्णन जबकि प्रकट विधानसभा में वर्णन, उपलब्ध कराने के असेंबली में सभी मॉड्यूल और सभी घटकों द्वारा साझा तार्किक गुण। मेनिफेस्ट में असेंबली का नाम, संस्करण संख्या, लोकेल और एक वैकल्पिक मजबूत नाम होता है जो विशिष्ट रूप से असेंबली की पहचान करता है।

3

मैनिफ़ेस्ट: यह जानकारी (विधानसभाओं के नाम की तरह, संस्करण आदि) विधानसभाओं जो CLR के लिए आवश्यक है विधानसभाओं लोड करने के लिए के बारे में दुकान।

मेटाडाटा: यह विधि नाम की तरह विधानसभाओं के विस्तार की दुकान, यह सदस्यों आदि

दोनों फ़ाइलों जब MSIL करने के लिए कोड में परिवर्तित करने संकलक द्वारा स्वचालित रूप से उत्पन्न कर रहे हैं।

6

यहाँ सबसे सरल जवाब है।

असेंबली: आपके प्रोग्राम में एक या अधिक फ़ाइलें शामिल हैं। आम तौर पर एक्सई या डीएल या इनके संयोजन और फ़ाइलों के कुछ अन्य सेट

मेटाडाटा: दोनों) विधानसभा मेटाडाटा 2) मेटाडाटा टाइप करें।

1) विधानसभा मेटाडाटा भी MANIFEST के रूप में जाना जाता है, यह विधानसभा का नाम, संस्करण, संस्कृति, मजबूत नाम जानकारी, संदर्भित विधानसभा की जानकारी ... आदि शामिल हैं।

2) प्रकार मेटाडाटा डेटा प्रकार का निर्यात किया और विधानसभा के तरीके है।

enter image description here

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