.NET असेंबली क्या हैं? मैं नेट पर पहुंच गया और मैं परिभाषा को समझने में सक्षम नहीं हूं।
.NET असेंबली क्या हैं? मैं नेट पर पहुंच गया और मैं परिभाषा को समझने में सक्षम नहीं हूं।
जवाबों:
अधिक सरल शब्दों में: .NET रनटाइम वातावरण द्वारा निष्पादित किया जा सकता है जो (precompiled) कोड का एक हिस्सा। .NET प्रोग्राम में एक या अधिक असेंबलियाँ होती हैं।
.classजावा-दुनिया में एक फाइल की तरह है ?
असेंबली एक .net अनुप्रयोग की तैनाती की सबसे छोटी इकाई है। यह एक dll या एक exe हो सकता है ।
मुख्य रूप से इसके दो प्रकार हैं:
निजी असेंबली: dll या exe जो केवल एक आवेदन की एकमात्र संपत्ति है। यह आम तौर पर एप्लिकेशन रूट फ़ोल्डर में संग्रहीत होता है
सार्वजनिक / साझा सभा: यह एक dll है जिसे एक बार में कई अनुप्रयोगों द्वारा उपयोग किया जा सकता है। GAC यानी ग्लोबल असेंबली कैश में एक साझा असेंबली संग्रहीत है ।
मुश्किल लगता है? ना ....
जीएसी बस सी: \ विंडोज \ असेंबली है फ़ोल्डर जहां आप अपने पीसी में स्थापित सभी सॉफ्टवेयर्स की सार्वजनिक असेंबली / डीएल पा सकते हैं।
एक विधानसभा का तीसरा और सबसे कम ज्ञात प्रकार भी है: सैटेलाइट असेंबली ।
एक सैटेलाइट असेंबली में केवल स्थिर ऑब्जेक्ट होते हैं जैसे कि चित्र और अन्य गैर-निष्पादन योग्य फ़ाइलें जो एप्लिकेशन द्वारा आवश्यक हैं।
आशा है कि यह पाठकों की मदद करेगा!
सभाओं
जब आप किसी अनुप्रयोग को संकलित करते हैं, तो बनाया गया MSIL कोड एक असेंबली में संग्रहीत किया जाता है। असेंबली में निष्पादन योग्य एप्लिकेशन फ़ाइलें शामिल होती हैं, जिन्हें आप किसी अन्य प्रोग्राम (इन .exe फ़ाइल एक्सटेंशन) की आवश्यकता के बिना विंडोज से सीधे चला सकते हैं, और अन्य अनुप्रयोगों द्वारा उपयोग के लिए लाइब्रेरी (जिसमें एक .dll एक्सटेंशन है)।
MSIL युक्त के अलावा, असेंबली में मेटा जानकारी (यानी, विधानसभा में निहित जानकारी के बारे में जानकारी, जिसे मेटाडेटा के रूप में भी जाना जाता है) और वैकल्पिक संसाधन (MSIL द्वारा उपयोग किए जाने वाले अतिरिक्त डेटा, जैसे ध्वनि फ़ाइलें और चित्र) शामिल हैं। मेटा जानकारी असेंबलियों को पूरी तरह से स्व-वर्णनात्मक बनाने में सक्षम बनाती है। असेंबली का उपयोग करने के लिए आपको किसी अन्य जानकारी की आवश्यकता नहीं है, जिसका अर्थ है कि आप ऐसी स्थितियों से बचते हैं जैसे सिस्टम रजिस्ट्री में आवश्यक डेटा जोड़ने में विफल रहते हैं, जो कि अन्य प्लेटफार्मों के साथ विकसित होने पर अक्सर एक समस्या थी।
इसका मतलब यह है कि अनुप्रयोगों को तैनात करना अक्सर दूरस्थ कंप्यूटर पर निर्देशिका में फ़ाइलों की प्रतिलिपि बनाने के रूप में सरल होता है। क्योंकि टारगेट सिस्टम पर कोई अतिरिक्त जानकारी की आवश्यकता नहीं है, आप बस इस निर्देशिका से एक निष्पादन योग्य फ़ाइल चला सकते हैं और (.NET CLR स्थापित है) आप जाने के लिए अच्छा है।
बेशक, आप एक जगह एक आवेदन को चलाने के लिए आवश्यक हर चीज को शामिल करना चाहते हैं। आप कुछ कोड लिख सकते हैं जो कई अनुप्रयोगों के लिए आवश्यक कार्य करता है। इस तरह की स्थितियों में, पुन: प्रयोज्य कोड को सभी अनुप्रयोगों के लिए सुलभ जगह में रखना अक्सर उपयोगी होता है। .NET फ्रेमवर्क में, यह ग्लोबल असेंबली कैश (GAC) है। GAC में कोड रखना सरल है - आप बस इस कैश वाले डायरेक्टरी में कोड वाले असेंबली को रखें।
एक असेंबली आपकी हार्ड ड्राइव पर वास्तविक .dll फ़ाइल होती है जहाँ .NET फ्रेमवर्क में कक्षाएं संग्रहीत की जाती हैं। उदाहरण के लिए, ASP.NET फ्रेमवर्क में शामिल सभी वर्ग System.Web.dll नामक एक असेंबली में स्थित हैं।
अधिक सटीक रूप से, एक सभा .NET फ्रेमवर्क में तैनाती, सुरक्षा और संस्करण नियंत्रण की प्राथमिक इकाई है। क्योंकि एक असेंबली कई फ़ाइलों को जोड़ सकती है, एक असेंबली को अक्सर "तार्किक" dll के रूप में संदर्भित किया जाता है।
ध्यान दें
.NET फ्रेमवर्क (संस्करण 2.0) में 51 विधानसभाएं शामिल हैं।
दो प्रकार की विधानसभाएं हैं: निजी और साझा। एक निजी विधानसभा का उपयोग केवल एक आवेदन द्वारा किया जा सकता है। दूसरी ओर एक साझा असेंबली, एक ही सर्वर पर स्थित सभी अनुप्रयोगों द्वारा उपयोग की जा सकती है।
साझा असेंबली ग्लोबल असेंबली कैश (GAC) में स्थित हैं। उदाहरण के लिए, System.Web.dll असेंबली और .NET असेंबली के साथ शामिल सभी अन्य असेंबली ग्लोबल असेंबली कैश में स्थित हैं।
ध्यान दें
वैश्विक असेंबली कैश आपके कंप्यूटर के \ WINDOWS \ असेंबली फ़ोल्डर में भौतिक रूप से स्थित है। आपके \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 फ़ोल्डर में हर असेंबली की एक अलग प्रतिलिपि है। असेंबली का पहला सेट रनटाइम पर उपयोग किया जाता है और दूसरा सेट संकलन समय पर उपयोग किया जाता है।
इससे पहले कि आप अपने आवेदन में विधानसभा में निहित वर्ग का उपयोग कर सकें, आपको विधानसभा में एक संदर्भ जोड़ना होगा। डिफ़ॉल्ट रूप से, ASP.NET अनुप्रयोग वैश्विक असेंबली कैश में शामिल सबसे आम असेंबली का संदर्भ देता है:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
System.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
.NET फ्रेमवर्क में किसी विशेष वर्ग का उपयोग करने के लिए, आपको दो काम करने होंगे। सबसे पहले, आपके आवेदन में उस विधानसभा का संदर्भ होना चाहिए जिसमें कक्षा शामिल है। दूसरा, आपके आवेदन को कक्षा से जुड़े नाम स्थान का आयात करना चाहिए।
ज्यादातर मामलों में, आपको आवश्यक असेंबली को संदर्भित करने के बारे में चिंता नहीं होगी क्योंकि सबसे आम असेंबली स्वचालित रूप से संदर्भित हैं। हालाँकि, यदि आपको किसी विशेष असेंबली का उपयोग करने की आवश्यकता है, तो आपको असेंबली में एक संदर्भ जोड़ना होगा। उदाहरण के लिए, यदि आपको System.DirectoryServices नामस्थान में कक्षाओं का उपयोग करके सक्रिय निर्देशिका के साथ सहभागिता करने की आवश्यकता है, तो आपको अपने आवेदन में System.DirectoryServices.dll विधानसभा का संदर्भ जोड़ना होगा।
.NET फ्रेमवर्क SDK डॉक्यूमेंटेशन में प्रत्येक क्लास एंट्री में असेंबली से जुड़े असेंबली और नेमस्पेस को सूचीबद्ध किया गया है। उदाहरण के लिए, यदि आप दस्तावेज़ीकरण में MessageQueue वर्ग देखते हैं, तो आपको पता चलेगा कि यह वर्ग System.Messaging नामस्थान में स्थित है। System.Messaging.dll असेंबली में स्थित है।
यदि आप विज़ुअल वेब डेवलपर का उपयोग कर रहे हैं, तो आप मेनू विकल्प वेबसाइट, संदर्भ जोड़ें और असेंबली के नाम का चयन करके एक असेंबली का संदर्भ स्पष्ट रूप से जोड़ सकते हैं, जिसे आपको संदर्भ के लिए आवश्यक है। उदाहरण के लिए, सूची में System.Messaging.dll असेंबली परिणामों को वेब कॉन्फ़िगरेशन फ़ाइल में एक संदर्भ जोड़कर सूचीकरण 1.4 को आपके आवेदन में जोड़ा जा रहा है।
उदाहरण के लिए। Web.Config
enter code here
यदि आप विज़ुअल वेब डेवलपर का उपयोग नहीं करना पसंद करते हैं, तो आप सिस्टम को संदर्भित कर सकते हैं। ऊपर दिए उदाहरण में फ़ाइल बनाकर, System.Messaging.dll असेंबली को हाथ से जोड़ें
विकिपीडिया का कहना है:
Microsoft .NET फ्रेमवर्क में, एक असेंबली एक आंशिक रूप से संकलित कोड लाइब्रेरी है जिसका उपयोग परिनियोजन, संस्करण और सुरक्षा में किया जाता है। दो प्रकार के होते हैं: प्रोसेस असेंबली (EXE) और लाइब्रेरी असेंबली (DLL)। एक प्रक्रिया असेंबली एक प्रक्रिया का प्रतिनिधित्व करती है जो लाइब्रेरी असेंबली में परिभाषित कक्षाओं का उपयोग करेगी। .NET असेंबलियों में CIL का कोड होता है, जो आमतौर पर एक CLI भाषा से उत्पन्न होता है, और फिर CLR रन-टाइम द्वारा मशीन भाषा में संकलित किया जाता है। एक विधानसभा में एक या अधिक फाइलें हो सकती हैं। कोड फ़ाइलों को मॉड्यूल कहा जाता है। एक असेंबली में एक से अधिक कोड मॉड्यूल हो सकते हैं और चूंकि कोड मॉड्यूल बनाने के लिए विभिन्न भाषाओं का उपयोग करना संभव है इसलिए असेंबली बनाने के लिए कई अलग-अलग भाषाओं का उपयोग करना तकनीकी रूप से संभव है।
यदि आप वास्तव में ब्राउज़ करते हैं तो यह मदद करेगा यदि आप स्पष्ट करें कि आप क्या नहीं समझते हैं
देखें इस :
Microsoft .NET फ्रेमवर्क में, एक असेंबली एक आंशिक रूप से संकलित कोड लाइब्रेरी है जिसका उपयोग परिनियोजन, संस्करण और सुरक्षा में किया जाता है
क्लास, इंटरफ़ेस, एनम आदि का भौतिक संग्रह जो IL कोड में है। जो .EXE या .DLL फ़ाइल हो सकता है ।EXE निष्पादन योग्य फ़ाइल है और .DLL गतिशील रूप से किसी भी .net समर्थित भाषा में उपयोग किया जा सकता है।
एक विधानसभा एक रनटाइम इकाई है जिसमें प्रकार और अन्य संसाधन शामिल हैं। एक विधानसभा में सभी प्रकार के एक ही संस्करण संख्या है।
अक्सर, एक विधानसभा में केवल एक नाम स्थान होता है और एक कार्यक्रम द्वारा उपयोग किया जाता है। लेकिन यह कई नामस्थानों पर हो सकता है। इसके अलावा, एक नाम स्थान कई विधानसभाओं में फैल सकता है। बड़े डिजाइनों में, एक असेंबली में कई फाइलें शामिल हो सकती हैं जो एक साथ प्रकट होती हैं (यानी सामग्री की तालिका)।
C # में, एक सभा .Net अनुप्रयोग की सबसे छोटी तैनाती है। यह एक dll या exe हो सकता है। इसके दो प्रकार हैं: 1. निजी विधानसभा 2. सार्वजनिक / साझा विधानसभा
स्वीकृत उत्तर के अलावा, मैं आपको एक उदाहरण देना चाहता हूं !
उदाहरण के लिए, हम सभी का उपयोग करते हैं
System.Console.WriteLine()
लेकिन System.Console.WriteLine के लिए कोड कहां है !?
वह कौन सा कोड है जो टेक्स्ट को वास्तव में कंसोल पर रखता है?
यदि आप कंसोल वर्ग के लिए दस्तावेज़ के पहले पृष्ठ को देखते हैं, तो आप निम्न शीर्ष के पास देखेंगे: असेंबली: mscorlib (mscorlib.dll में) यह इंगित करता है कि कंसोल वर्ग के लिए कोड एक assem-bly में स्थित है mscorlib नाम दिया है। एक विधानसभा में कई फाइलें हो सकती हैं, लेकिन इस मामले में यह केवल एक फाइल है, जो डायनेमिक लिंक लाइब्रेरी mscorlib.dll है।
Mscorlib.dll फ़ाइल .NET में बहुत महत्वपूर्ण है। यह .NET में क्लास लाइब्रेरीज़ के लिए मुख्य DLL है, और इसमें सभी बेसिक .NET क्लास और स्ट्रक्चर हैं।
यदि आप C या C ++ जानते हैं, तो आम तौर पर आपको शीर्ष पर #include निर्देश की आवश्यकता होती है जो शीर्ष लेख फ़ाइल का संदर्भ देता है। शामिल फ़ाइल कंपाइलर को फ़ंक्शन प्रोटोटाइप प्रदान करता है। इसके विपरीत C # कंपाइलर को हेडर फ़ाइलों की आवश्यकता नहीं है। संकलन के दौरान, C # संकलक सीधे mscorlib.dll फ़ाइल का उपयोग करता है और उस फ़ाइल में मेटाडेटा से सभी वर्गों और अन्य प्रकारों से संबंधित जानकारी प्राप्त करता है।
C # संकलक यह स्थापित करने में सक्षम है कि mscorlib.dll में वास्तव में Console नाम का एक वर्ग होता है जिसमें सिस्टम लिस्टलाइन नाम की एक विधि लिखी जाती है, जो लिपिलाइन नाम की एक विधि है जो टाइप स्ट्रिंग के एक भी तर्क को स्वीकार करती है।
C # कंपाइलर यह निर्धारित कर सकता है कि WriteLine कॉल वैध है, और कंपाइलर निष्पादन योग्य में mscorlib असेंबली के लिए एक संदर्भ स्थापित करता है।
डिफ़ॉल्ट रूप से C # कंपाइलर mscorlib.dll तक पहुंच जाएगा, लेकिन अन्य DLL के लिए, आपको कंपाइलर को उस असेंबली को बताना होगा जिसमें कक्षाएं स्थित हैं। इन्हें संदर्भ के रूप में जाना जाता है ।
मुझे आशा है कि अब यह स्पष्ट है!
डॉटनेटबुकज़ेरो चार्ल्स पित्ज़ोल्ड से
MSDN की एक अच्छी व्याख्या है :
असेंबली .NET फ्रेमवर्क अनुप्रयोगों के निर्माण खंड हैं; वे परिनियोजन, संस्करण नियंत्रण, पुन: उपयोग, सक्रियण स्कूपिंग और सुरक्षा अनुमतियों की मूलभूत इकाई बनाते हैं। एक विधानसभा प्रकार और संसाधनों का एक संग्रह है जो एक साथ काम करने और कार्यक्षमता की एक तार्किक इकाई बनाने के लिए बनाई गई हैं। एक असेंबली सामान्य भाषा रनटाइम को उस जानकारी के साथ प्रदान करती है जिसे टाइप कार्यान्वयन के बारे में पता होना चाहिए। रनटाइम के लिए, एक प्रकार एक विधानसभा के संदर्भ के बाहर मौजूद नहीं है।
एक विधानसभा प्रकार और संसाधनों का एक संग्रह है जो कार्यक्षमता की एक तार्किक इकाई बनाती है। .NET फ्रेमवर्क में सभी प्रकार की असेंबली में मौजूद होना चाहिए; आम भाषा रनटाइम असेंबली के बाहर के प्रकारों का समर्थन नहीं करता है। जब भी आप Microsoft Windows® Application, Windows Service, Class Library या विजुअल बेसिक .NET के साथ अन्य एप्लिकेशन बनाते हैं, तो आप एक ही असेंबली बना रहे होते हैं। प्रत्येक असेंबली को .exe या .dll फ़ाइल के रूप में संग्रहीत किया जाता है।
स्रोत: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesptopp4
मेरे जैसे जावा बैकग्राउंड वाले लोगों के लिए आशा है कि निम्नलिखित आरेख अवधारणाओं को स्पष्ट करता है -
असेंबली सिर्फ जार फ़ाइलों (एकाधिक .class फ़ाइलों सहित) की तरह हैं। आपका कोड किसी मौजूदा असेंबली का संदर्भ दे सकता है या आप स्वयं कोड को अन्य कोड के संदर्भ और उपयोग के लिए एक असेंबली के रूप में प्रकाशित कर सकते हैं (आप इसे जावा में जार फ़ाइलों के रूप में सोच सकते हैं जिसे आप अपने प्रोजेक्ट निर्भरता में जोड़ सकते हैं)।
दिन के अंत में एक असेंबली एक संकलित कोड है जिसे किसी भी ऑपरेटिंग सिस्टम पर सीएलआर स्थापित करने के साथ चलाया जा सकता है। यह कहने के लिए समान है .class फ़ाइल या बंडल किया गया JVM इंस्टॉल किए गए किसी भी मशीन पर चल सकता है।
.Net में, एक असेंबली हो सकती है:
विभिन्न का एक संग्रह प्रबंधनीय भागों युक्त
Types (or Classes),Resources (Bitmaps/Images/Strings/Files),Namespaces,Config FilesसंकलितPrivatelyयाPublicly; एक फ़ोल्डरlocalया के लिए तैनातShared (GAC);discover-ableअन्य द्वाराprograms/assembliesऔर; संस्करण-एड हो सकता है।
असेंबली Microsoft.Net में कोड की सुरक्षा, परिनियोजन और पुन: प्रयोज्य की सबसे छोटी इकाई है।
इसमें शामिल है:
- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header
असेंबली .NET फ्रेमवर्क के साथ प्रोग्रामिंग का मूलभूत हिस्सा है। इसमें वह कोड होता है, जो CLR MSIL (Microsoft मध्यवर्ती भाषा) कोड को एक पोर्टेबल निष्पादन योग्य फ़ाइल में निष्पादित करता है, यदि इसे संबंधित असेंबली प्रकट नहीं होती है, तो इसे निष्पादित नहीं किया जाएगा।
किसी भी संख्या की असेंबली को एक साथ pececing द्वारा .NET अनुप्रयोगों का निर्माण किया जाता है। सीधे शब्दों में कहें, एक असेंबली एक संस्करणबद्ध, स्व-वर्णनात्मक बाइनरी (डीएलएल या एक्सई) से अधिक कुछ नहीं है जिसमें कुछ प्रकार के संग्रह (कक्षाएं, इंटरफेस, संरचनाएं, आदि) और वैकल्पिक पुनरावर्ती (चित्र, स्ट्रिंग टेबल और व्हाट्स) शामिल हैं। एक बात जो अभी ठीक से पता है, वह यह है कि .NET असेंबली का आंतरिक संगठन क्लासिक COM सर्वर के आंतरिक संगठन (साझा फ़ाइल एक्सटेंशन की परवाह किए बिना) जैसा कुछ नहीं है।
.NET में, जब हम अपने स्रोत कोड को संकलित करते हैं तब विज़ुअल स्टूडियो में असेंबली उत्पन्न होती है। असेंबली में दो भाग होते हैं मैनिफेस्ट और IL (इंटरमीडिएट लैंग्वेज)। मैनिफेस्ट में असेंबली मेटाडेटा का अर्थ है असेंबली की संस्करण आवश्यकताएँ, सुरक्षा पहचान, नाम और सभी फ़ाइलें जो असेंबली बनाती हैं। IL में कक्षाएं, कंस्ट्रक्टर, मुख्य विधि आदि के बारे में जानकारी होती है।
मुझे यह लिंक बहुत मददगार लगी। यहां तक कि यह आपको एक झलक देता है कि IL कैसे .NET में भूमिका निभाता है।
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
Visual Studio समाधान में एक या अधिक प्रोजेक्ट होते हैं। उदाहरण के लिए: कंसोल प्रोजेक्ट असेंबली का उत्पादन कर सकते हैं । एक विधानसभा तार्किक रूप से कोड का हिस्सा है जिसे ग्राहकों को भेजा जा सकता है, और शारीरिक रूप से एक .EXE (निष्पादन योग्य कार्यक्रम) या .DLL (अन्य कार्यक्रमों द्वारा पुन: प्रयोज्य हैं)।
असेंबली में सामग्री, संस्करण और निर्भरता के बारे में जानकारी होती है, जो अनुप्रयोग उनका उपयोग करते हैं उन्हें बाहरी स्रोतों पर भरोसा करने की आवश्यकता नहीं है, जैसे कि विंडोज सिस्टम पर रजिस्ट्री, ठीक से काम करने के लिए। असेंबलियाँ .dll विरोधों को कम करती हैं और आपके अनुप्रयोगों को अधिक विश्वसनीय और तैनात करने में आसान बनाती हैं।
इसके प्रकार और संसाधनों का एक संग्रह जो एक साथ काम करने और कार्यक्षमता की तार्किक इकाई बनाने के लिए बनाया गया है। असेंबली निष्पादन योग्य (.exe) या डायनेमिक लिंक लाइब्रेरी (.dll) फ़ाइलों का रूप लेती हैं, और .NET एप्लिकेशन के बिल्डिंग ब्लॉक होते हैं। वे सामान्य भाषा रनटाइम को उस जानकारी के साथ प्रदान करते हैं जिसे टाइप कार्यान्वयन के बारे में पता होना चाहिए।
हर विधानसभा में एक विधानसभा की घोषणा होती है। असेंबली मेनिफ़ेस्ट की सामग्री तालिका के समान है:
किसी एप्लिकेशन में असेंबली का उपयोग करने के लिए, आपको इसका संदर्भ जोड़ना होगा। एक बार एक विधानसभा संदर्भित होने के बाद, सभी सुलभ प्रकार, गुण, विधियाँ, और इसके नामस्थान के अन्य सदस्य आपके आवेदन के लिए उपलब्ध हैं जैसे कि उनका कोड आपकी स्रोत फ़ाइल का हिस्सा था।
इसलिए हम सभी जानते हैं कि हमारा स्रोत कोड Microsoft मध्यवर्ती भाषा (MSIL) में बदल जाता है। रनटाइम के दौरान, CLR (कॉमन लैंग्वेज रनटाइम) JIL कंपाइलर के साथ MSIL को नेटिव कोड में परिवर्तित करता है। MSIL कोड परिवर्तित करने से पहले एक सत्यापन प्रक्रिया पास करनी होगी जो MSIL + मेटाडेटा (असेंबली का नाम, संस्करण, संदर्भ) की जांच करती है: यह पता लगाने के लिए कि क्या कोड को सुरक्षित रखने के लिए निर्धारित किया जा सकता है। यदि यह सत्यापन पास कर लेता है तो MSIL मूल कोड में बदल जाता है। सभी तरीकों को मशीन भाषा में परिवर्तित किया जाता है और बाद के उपयोग के लिए कैश में बचाया जाता है।