.NET
Colin Fahey
1. परिभाषा के .NET
इस शब्द से आशय ".NET" प्रौद्योगिकियों के संग्रह में निम्नलिखित हैं :
( 1 ) Framework Class Library (FCL)
( 2 ) Intermediate Language (IL)
( 3 ) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
इस Framework Class Library है (FCL) एक व्यापक सेट के वर्गों का समर्थन करने के लिए :
* कंटेनर (Array, String, List, ...)
* बहु सूत्रण ( सूत्र , सूत्र पूल्स )
* नेटवर्किंग ( खम्भे , प्रोटोकॉल , ग्राहकों , सर्वरों )
* फ़ाइल आपरेशन
* डेटा धाराओं
* पार्स ( नियमित अभिव्यक्ति , XML हैंडलिंग )
* गणित आपरेशन
* अपवाद प्रहस्तन
* भाषा सुविधाओं ( परावर्तन , चिति का पता लगाना , गतिशील code )
Framework Class Library के लिए लागू की है (FCL) विभिन्न प्लेटफार्मों ( Windows, Linux, MacOS, ... ) .
इस प्रकार , किसी एक का उपयोग करता है जो इस कार्यक्रम के Framework Class Library (FCL) भी विकसित किया जा सकता के ज्ञान के बिना महत्वपूर्ण लक्ष्य प्लेटफार्म के बीच मतभेद है .
यह उपयोगी Framework Class Library (FCL) में मॉडलों के मूलभूत अवधारणाओं के कंप्यूटर विज्ञान ( जैसे "सूत्र" , "गर्तिका" , "धारा" , आदि ) .
एक मायने में , Framework Class Library (FCL) समर्थन देता है प्रत्येक आधुनिक ऑपरेटिंग सिस्टम , उच्च स्तर पर लगातार प्रोग्रामिंग अंतरफलक है .
इस Framework Class Library है (FCL) के सबसे उन्नत है , व्यापक , समान रूप से डिजाइन , दस्तावेज के साथ काम करता है और डेटा प्रकार के संग्रह के लिए उपलब्ध प्रोग्रामर है .
दुर्भाग्य से , निम्नलिखित पहलुओं मल्टीमीडिया का हिस्सा नहीं हैं Framework Class Library (FCL) : ऑडियो रिकॉर्डिंग , प्लेबैक ऑडियो , वीडियो रिकॉर्डिंग , वीडियो प्लेबैक , 3 डी प्रतिपादन , joystick इनपुट , युक्ति नियंत्रण ( CD/DVD, ... ) , आदि
Microsoft है .NET संस्करण के DirectX पुस्तकालयों के लिए अपने Windows ऑपरेटिंग सिस्टम है .
C# wrappers के लिए OpenGL हैं , OpenAL , GLUT , SDL , etc , लेकिन यह काफी नहीं है के रूप में सुविधाजनक के रूप में शामिल किए जाने वाले इस तरह के कार्यों में मल्टीमीडिया मुख्य Framework Class Library (FCL) और अंतिम उपयोग में शामिल "चलाने के समय" पुस्तकालयों .
उनमें से एक की समस्याओं का उपयोग करते हैं कि विकास के कार्यक्रमों के पुस्तकालयों विशेष उद्देश्य यह है कि सेट के अंत तक प्रयोक्ताओं के समर्थन की आवश्यकता होगी पुस्तकालयों के लिए चुना है .
यदि यह नहीं है सुविधाजनक डाउनलोड और स्थापित करने के लिए आवश्यक पुस्तकालयों , एक अंतिम उपयोग हो सकता है एक प्रोग्राम का प्रयोग नहीं करने के लिए चुनते हैं उन पुस्तकालयों की आवश्यकता है .
एक अंतिम उपयोग भी किया जा सकता है अनिच्छुक के लिए प्रतीक्षा करने के लिए एक पुस्तकालय से डाउनलोड करने के लिए एक ऑनलाइन स्थान है .
यदि कोई प्रोग्राम एक अंतिम उपयोग की आवश्यकता होती है डेवलपर को खोजने के लिए , अधिग्रहण , और स्थापित पुस्तकालयों , सभी की सहायता से बिना किसी विशेष कार्यक्रम , तो अंतिम उपयोग करने के लिए चुन सकते हैं प्रोग्राम का प्रयोग नहीं है .
उदाहरण के लिए , कई परियोजनाओं को खुले स्रोत की आवश्यकता के अंत तक प्रयोक्ताओं को खोजने के लिए , डाउनलोड , और स्थापित है , कई अन्य विभिन्न पुस्तकालयों से खुले स्रोत परियोजनाओं ( उदाहरण : openssl , zlib , libpng , libjpg , glut , ...), है जो समय की खपत , जटिल , frustrating , और परिणाम हो सकता है अंत में खोज करने के लिए प्रयोक्ताओं को चुनने के विकल्प कार्यक्रम या उत्पाद है .
"Windows Update" की सेवा करने में मदद करता है जाहिरा तौर पर तैनात संस्करण 1.1 के .NET चलाने के समय पुस्तकालयों Windows प्रयोक्ताओं के लिए है .
ये चलाने के समय पुस्तकालयों के साथ शामिल हैं Windows XP ऑपरेटिंग सिस्टम है .
इसलिए , Windows बनाने के कार्यक्रमों की आवश्यकता होती है जो पूरी तरह से उचित .NET 1.1 लगता है .
इसके अलावा , इस समय पुस्तकालयों के लिए चला Microsoft's implementations के .NET Framework Class Library (FCL) पुनः मुक्त हो सकता है , ताकि इन पुस्तकालयों की आपूर्ति कर सकते हैं डेवलपर्स को समाप्त करने के लिए नहीं करते हैं जो उपयोगकर्ताओं के पास पहले से ही पुस्तकालयों की है .
इस पोत Windows Vista ऑपरेटिंग सिस्टम के साथ चलने के समय पुस्तकालयों .NET 3.0 ( एक संयोजन के .NET Framework Class Libraries और कई नए पुस्तकालयों जैसे "Windows Presentation Foundation" (WPF) ) .
इसलिए , .NET 2.0 और .NET 3.0 कार्यक्रमों के लिए तैनात नहीं की आवश्यकता Windows Vista के installers चलाने के लिए समय पुस्तकालयों .NET .
1.2 Intermediate Language (IL)
यह एक छोटा सा Intermediate Language (IL) सेट सरल , प्रोसेसर से स्वतंत्र , ऑपरेटिंग सिस्टम के निर्देश स्वतंत्र हैं कि पूरी तरह से व्यक्त करने के लिए पर्याप्त डेटा की संरचनाओं और विभिन्न कार्यों के कई उच्च स्तरीय प्रोग्रामिंग भाषाओं ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ) .
स्रोत कूट प्रश्न के लिखित में एक उच्च स्तरीय भाषा में किया जा सकता है इसी "Intermediate Language" संकलित करने का एक रूप है .
संहिता के रूप में एक "Intermediate Language" आसानी से किया जा सकता है कोड में एक दूसरे के साथ संयुक्त रूप "Intermediate Language" .
एक कंप्यूटर प्रोग्राम ( "सॉफ्टवेयर" का भी नाम है ) शामिल कर सकते हैं स्रोत कोड में लिखा कई उच्च स्तर पर विभिन्न भाषाओं ( जैसे , C# , C++ , और Visual Basic ) .
सभी स्रोत कोड संकलित किया जा सकता है ( परिवर्तित ) "Intermediate Language" करने के लिए एक प्रारूप की अनुमति देने के लिए आसान कोड संयोजन के साथ अन्य संकलित है .
कार्यक्रम में एक रूप है "Intermediate Language" आमतौर पर विशेष निर्देश परिवर्तित करने के लिए मशीन ( eg , CPU निर्देश ) शीघ्र ही बहुत से पहले निष्पादन ( eg , "Just-In-Time" (JIT) रूपांतरण के IL करने के लिए निर्देश CPU ) .
लेकिन एक कार्यक्रम में भी किया जा सकता है मार डाला के संदर्भ में एक Virtual Machine (VM) उद्देश्यों के लिए डिज़ाइन Intermediate Language (IL) निर्देश है .
कूट प्रश्न के लिखित में उच्च स्तर पर विभिन्न भाषाओं के ( C#, F#, Ocaml, C++, Visual Basic, ... ) , संकलित किया जा सकता है Intermediate Language (IL) फार्म का उपयोग करने के लिए एक उपयुक्त संकलक समर्थित किसी भी मंच पर ( Windows, Linux, MacOS X, ... ) , और परिणामी फ़ाइल के साथ एम्बेडेड Intermediate Language (IL) कोड है , मंच के निष्पादन कर सकते हैं और स्वतंत्र होने का एक मंच पर किसी भी कार्यान्वयन के .NET Common Language Runtime (CLR) .
इस कोड Intermediate Language (IL) द्वारा उत्पन्न की अनिवार्य रूप से स्वतंत्र है संकलक के मंच पर जो संकलक मार डाला गया था .
1.3 Common Language Runtime (CLR)
Common Language Runtime की व्यवस्था के लिए जिम्मेदार है (CLR) क्रियान्वित कोड Intermediate Language (IL) रूप में प्रस्तुत की .
Common Language Runtime (CLR) विभिन्न सेवाओं की पेशकश की है .
इस Common Language Runtime (CLR) में बदल सकते हैं Intermediate Language (IL) कोड को निर्देश हैं कि मंच के मूल निवासी हैं ( eg , CPU निर्देश ) .
रूपांतरण से Intermediate Language (IL) करने के लिए विशेष मंच ( eg , CPU विशेष के ) के निर्देशों के किसी भी हो सकता में अग्रिम निष्पादन ( यानी , एक "Ahead-Of-Time" (AOT) रूपांतरण ) , या क्रमशः हो सकता है , क्योंकि इस कार्यक्रम executes ( यानी , "Just-In-Time" (JIT) रूपांतरण ) .
रूपांतरण के Just-In-Time (JIT) कार्यक्रम के बारे में आँकड़ों का उपयोग कर सकते हैं विकसित करने के लिए निष्पादन की गतिशील अनुकूलन परिवर्तित कोड ( उदाहरण : अक्सर पहचान के छोरों और शाखाओं का उपयोग किया , और उन के अनुसार देखा व्यवहार अनुकूलन ( जो खुद वर्तमान डाटा और घटनाओं पर निर्भर करती है ) ) .
इस Common Language Runtime आबंटित (CLR) स्मृति प्रबंधन की ओर से इस कार्यक्रम है .
इसलिए , यह सुनिश्चित करता है कि इस कार्यक्रम के CLR नहीं पहुँचने के लिए आबंटित की स्मृति में विफल रहता है जबकि इस तरह के स्मृति संदर्भ बनी है , और यह सुनिश्चित करता है कि स्मृति आवंटन रद्द कर रहे हैं , और याद है कि भविष्य के लिए उपलब्ध कराई फिर से आबंटन के बाद इस कार्यक्रम के disposes इस तरह के आवंटन में सारे संदर्भ .
Common Language Runtime का पता लगाता है (CLR) कार्यक्रम नहीं रह गया है जब एक संदर्भ को एक स्मृति आवंटन , और स्मृति के आवंटन के लिए चिह्नित deallocation है .
Common Language Runtime का उपयोग करता है (CLR) किसी भी कई प्रकार की "कचरा संग्रह" एल्गोरिदम ( उदाहरण : "mark-and-sweep" ) की पहचान करने के लिए और स्मृति को पुनः प्राप्त ब्लॉक के एक कार्यक्रम की पहुँच नहीं है .
इस कार्यक्रम के हैंडल Common Language Runtime (CLR) अपवाद है .
Common Language Runtime (CLR) enforces की सुरक्षा नीतियों .
Common Language Runtime (CLR) का इस्तेमाल करता है "P/Invoke" तंत्र लोड करने के लिए मंच विशेष के पुस्तकालयों और आह्वान ( कॉल ) उन कार्यों के भीतर पुस्तकालयों .
2. .NET ( FCL, IL, CLR ) implementations द्वारा Microsoft
2.1 परिचय
इस .NET बदलाव ( FCL, IL, CLR ) द्वारा कार्यान्वित किया गया है Microsoft .
इस नवीनतम संस्करण , "3.0" , 2006.10 में जारी किया गया था .
.NET 3.0 है और कई के .NET 2.0 Framework Class Libraries के नए पुस्तकालयों , जैसे "Windows Presentation Foundation" (WPF) के साथ जुड़े "Silverlight" ( पूर्व WPF/E , पूर्व में Sparkle , ... ) ब्राउज़र के लिए प्लगइन Firefox और Internet Explorer .
Microsoft में बांट के .NET 2.0 सॉफ्टवेयर संकुल को दो विभिन्न :
( 1 ) .NET Framework Version 2.0 Redistributable Package
इस पैकेज की आवश्यकता है पुनर्वितरण के अंत तक प्रयोक्ताओं को निष्पादित करने के लिए कार्यक्रमों के निर्माण .NET बदलाव है . यह पैकेज भी किया जा द्वारा स्थापित किया जाना चाहिए डेवलपर्स और स्थापित करने से पहले का प्रयोग कर .NET Software Development Kit (SDK) उल्लेख नीचे है .
( 2 ) .NET Framework Version 2.0 Software Development Kit
इस सॉफ्टवेयर के विकास की आवश्यकता है (SDK) किट द्वारा विकासकों को स्रोत कोड C# संकलन प्रोग्राम फ़ाइलों को Intermediate Language (IL) .
इस पैकेज में विभिन्न विकास उपकरण और प्रलेखन .
2.2 .NET Framework Version 2.0 Redistributable Package
इस पैकेज की आवश्यकता है पुनर्वितरण के अंत तक प्रयोक्ताओं को निष्पादित करने के लिए कार्यक्रमों के निर्माण .NET बदलाव है .
यह पैकेज भी किया जा द्वारा स्थापित किया जाना चाहिए डेवलपर्स और स्थापित करने से पहले का प्रयोग कर .NET Software Development Kit (SDK) उल्लेख नीचे है .
निम्नलिखित इंटरनेट के मुख्य पृष्ठ पर है .NET डाउनलोड पृष्ठ :
इस खंड में लिंक नाम ".NET Framework Version 2.0 Redistributable Package" प्लेटफार्म के लिए तीन हार्डवेयर : "Download x86 version" , "Download x64 version" , "Download IA64 version" .
उदाहरण के लिए , निम्न लिंक "Download x86 version" , एक पृष्ठ का नेतृत्व करने के हकदार "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
( फ़ाइल नाम : dotnetfx.exe ; संस्करण : RC1 ; प्रकाशन दिनाँक : 3/22/2006 ; भाषा : हिंदी ; डाउनलोड का आकार : 22.4 MB )
कैश्ड स्थानीय संस्करण ( केवल संदर्भ के लिए , अप्रचलित संभावित ) :
( फ़ाइल का नाम बदल दिया गया है यहाँ से मूल फ़ाइल नाम "dotnetfx.exe" से बचने के लिए यह भ्रम के साथ संस्करण 1.1 संस्थापक "dotnetfx.exe" का नाम भी है . )
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
इस सॉफ्टवेयर के विकास की आवश्यकता है (SDK) किट द्वारा विकासकों को स्रोत कोड C# संकलन प्रोग्राम फ़ाइलों को Intermediate Language (IL) .
इस पैकेज में विभिन्न विकास उपकरण और प्रलेखन .
निम्नलिखित इंटरनेट के मुख्य पृष्ठ पर है .NET डाउनलोड पृष्ठ :
इस खंड में लिंक नाम ".NET Framework Version 2.0 Software Development Kit" प्लेटफार्म के लिए तीन हार्डवेयर : "Download x86 version" , "Download x64 version" , "Download IA64 version" .
उदाहरण के लिए , निम्न लिंक "Download x86 version" , एक पृष्ठ का नेतृत्व करने के हकदार ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
( फ़ाइल नाम : setup.exe ; संस्करण : 2.0 ; प्रकाशन दिनाँक : 11/7/2005 ; भाषा : हिंदी ; डाउनलोड का आकार : 354.0 MB )
कैश्ड स्थानीय संस्करण ( केवल संदर्भ के लिए , अप्रचलित संभावित ) :
( फ़ाइल का नाम बदल दिया गया है यहाँ से मूल फ़ाइल नाम "setup.exe" से बचने के लिए यह भ्रम के साथ अन्य सभी अधिष्ठापन फाइल नाम "setup.exe" . )
3. Microsoft Visual C# : एक Integrated Development Environment (IDE) कार्यक्रम
3.1 परिचय
एक कार्यक्रम Integrated Development Environment (IDE) एक डेवलपर को संपादित करने में सक्षम बनाता है और स्रोत कोड निष्पादन के विभिन्न उपकरणों ( उदाहरण : संकलक , debugger , ... ) के संदर्भ के भीतर एक ही है , को एकीकृत कार्यक्रम में , दृश्य संकेत से भर उपयोगी और नियंत्रण है .
"Microsoft Visual C# 2005 Express Edition" नहीं है लागत ( भुगतान की आवश्यकता नहीं है ) IDE से Microsoft डाउनलोड के लिए उपलब्ध है .
गैर डाटाबेस के विकास के लिए , यह लगभग असंभव को अलग नहीं लागत वाली इस उत्पाद से खुदरा समकक्ष , "Microsoft Visual C# 2005" .
मैं अक्सर दोनों उत्पादों का प्रयोग , व्यावसायिक और recreationally है , और मैं ने अभी तक नहीं देखा किसी भी व्यावहारिक उत्पादों के बीच अंतर है .
3.2 सरकारी लिंक
इंटरनेट साइट की मुख्य पृष्ठ :
इस पृष्ठ के बारे में "Visual C# Express Edition" :
बटन पर क्लिक करें "Download Now" के दाहिनी ओर के पृष्ठ पर डाउनलोड करने के लिए एक विकल्प चुनें .
( शुरू करने की एक विधि है एक प्रोग्राम है जो संस्थापक फ़ाइलों को डाउनलोड Microsoft से प्रत्येक के दौरान स्थापना .
एक दूसरी विधि है डाउनलोड करने के लिए एक पूर्ण CD-ROM "ISO" छवि है , जो भविष्य ऑफ़लाइन अधिष्ठापन की अनुमति देता है .
ISO की छवि , "VCS.iso" ( 451,837,952 बाइट्स ; CRC 55884F2C ) के लिए 32 बिट x86 अंग्रेजी , जलाया जा सकता है CD-ROM का उपयोग करने के लिए एक "Nero 7 Ultra" , उदाहरण के लिए . )
4. .NET ( FCL, IL, CLR ) कार्यान्वयन द्वारा Mono Project
4.1 परिचय
इस बदलाव .NET द्वारा कार्यान्वित किया गया है ( FCL, IL, CLR ) में भाग लेने के Mono Project एक समूह के रूप में जाना जाता है .
4.2 सरकारी लिंक
परियोजना स्थल :
सॉफ्टवेयर डाउनलोड पृष्ठ :
4.3 कैश्ड स्थानीय संस्करण
कैश्ड स्थानीय संस्करण के संस्थापक ( केवल संदर्भ के लिए , अप्रचलित संभावित ) :
4.4 .NET 2.0 विकास के साथ Mono
इस "mcs" संकलक , और प्रलेखन , नवम्बर 2006 के रूप में , ज्यादातर सम्बन्ध को C# 1.0 और FCL 1.1 .
हालाँकि , "mcs" संकलक C# 2.0 कोड संकलन करने में समर्थ है कि नहीं या generics सामान्य सुविधाओं आधारित है , लेकिन सीमा के API को 1.0 .
C# 2.0 पूरा करने के लिए विकास , पुस्तकालयों के साथ FCL 2.0 , "gmcs" संकलक का उपयोग करें .
अगले पन्ने पर देखें Mono साइट :
5. SharpDevelop : एक खुले स्रोत Integrated Development Environment (IDE) कार्यक्रम
5.1 परिचय
एक कार्यक्रम Integrated Development Environment (IDE) एक डेवलपर को संपादित करने की अनुमति देता है और स्रोत कोड निष्पादन के विभिन्न उपकरणों ( उदाहरण : संकलक , debugger , ... ) के संदर्भ के भीतर एक ही है , को एकीकृत कार्यक्रम में , दृश्य संकेत से भर उपयोगी और नियंत्रण है .
SharpDevelop एक शानदार है , खुले स्रोत IDE कार्यक्रम के लिए C# / .NET विकास है .
यह IDE के निकट Microsoft Visual C# IDE जुलता है , और , कुछ मामलों में , SharpDevelop IDE में सुधार पर Microsoft उत्पाद है .
बहरहाल , कुछ सुविधाओं Microsoft Visual C# है ( उदाहरण : डीबगिंग ) SharpDevelop कि कार्यक्रम नहीं है ( इस लेख के समय ) .
5.2 सरकारी लिंक
सरल इंटरनेट साइट की मुख्य पृष्ठ :
इस पृष्ठ के बारे में "The Open Source Development Environment for .NET" :
इस डाउनलोड पृष्ठ , जो विवरण के बारे में 1.1 और 2.0 संस्करण SharpDevelop :
5.3 कैश्ड स्थानीय संस्करण
कैश्ड स्थानीय संस्करण के संस्थापक ( केवल संदर्भ के लिए , अप्रचलित संभावित ) :
6. उपयोगी C# / .NET / IL उपकरण
6.1 SciTech Software ".NET Memory Profiler"
यह दिखाता है profiler स्मृति आबंटन और अन्य संसाधनों के आवंटन , कि एक संकलित .NET बनाता है जबकि विधानसभा या कार्यक्रम कार्यान्वयन .
वास्तविक समय ग्राफ़ के एक व्यक्ति को देखने के लिए सक्षम बनाता है , में विस्तार से , कि किस तरह की कार्रवाई कार्यक्रम ( जैसे कार्यों से उपयोगकर्ता इनपुट के द्वारा ट्रिगर करने या अन्य घटनाओं ) को प्रभावित स्मृति आबंटन और कूड़ा संग्रह है .
लिस्टिंग के वास्तविक समय सारणी के किसी व्यक्ति को देखने में सक्षम बनाता है स्मृति आवंटन के बारे में जानने के विवरण .
यह profiler तत्काल है , और नाटकीय ढंग से , पता चला व्यर्थ स्मृति का उपयोग में वास्तविक समय मैं ने Direct3D कार्यक्रम विकसित है .
पैटर्न के ऊपर एक ढलान तथा अचानक गिर ( "कचरा" के कारण "संग्रह" ) की स्मृति में उपयोग के रेखांकन के साथ पूर्णतया मेल वाले आवधिक , बहुत ही संक्षिप्त विराम के - 3 डी में मेरे ड्राइंग कार्यक्रम है .
profiler सक्षम करने के लिए मुझे यह पता चलता है कि अस्थाई आवंटन के लगातार पिंडों में काफी स्मृति गायब था , अक्सर ट्रिगर कचरा संग्रह है , और प्रत्येक के लिए पर्याप्त समय हो रही कचरा संग्रह करने के लिए कुछ कारण बैठक की अवधि को चूक है .
इस profiler की वास्तविक समय सारणी के उद्देश्य आबंटित प्रकार से पता चला है जो इस प्रकार की वस्तुओं की खपत सबसे मेमोरी , और जो आवंटन पर सबसे अधिक खपत स्मृति दर ( प्रति सेकेंड बाइट ) , और जो आवंटन निपटान की दर सबसे अधिक था .
अध्ययन करने के वास्तविक समय रेखांकन , और वास्तविक समय सारणी , मुझ पर ध्यान देने के लिए सक्षम अध्ययन के मार्ग में जो कुछ डेटा प्रकार प्रयोग किया जा रहा थे मेरे कोड .
संशोधन करना कोड से बचने के लिए अक्सर अस्थायी वस्तुओं का आवंटन कर सकते हैं समग्र की दर से बहुत कम स्मृति आवंटन और निपटान , और कर सकते हैं इसलिए कम आवृत्ति के ट्रिगर कचरा संग्रह है .
( मेरा मानना है कि एक बहुत ही खुलासा "Bytes/sec" आँकडों के लिए वास्तविक समय स्मृति का उपयोग करते हैं , के अलावा "Live instances" .
) देखना ये सब बहुत तेजी से अद्यतन किया जा रहा प्रारूप में एक मेज , और किस प्रकार का चयन करने में सक्षम होने के हल पंक्तियाँ हैं , और बदलते की छँटाई पैरामीटर को किसी भी समय , बनाता के अनुभव का अध्ययन एक वास्तविक समय बहुत ही रमणीय और सूचनात्मक कार्यक्रम है .
स्मृति आवंटन करने के लिए उपयोगकर्ता प्रतिक्रियाओं के साथ एक बातचीत चल रहे कार्यक्रम का अध्ययन किया जा सकता है , और परीक्षण के लिए अनुकूलित कर सकते हैं तेजी से नीचे की राय को संकीर्ण करने का सबसे रोचक पहलू है .
( उदाहरण के लिए , निम्नलिखित विशेषताओं था 2006 July संस्करण : संस्करण 2.6.89 ; 4.3 MB ; USA $127.00 ; डाउनलोड 14 दिन की सीमा संस्करण है , पर नहीं लागत , मूल्यांकन के लिए . )
6.2 FxCop : .NET कोड विश्लेषक / समीक्षक
एक विश्लेषण FxCop संकलित .NET कार्यक्रम ( या विधानसभा संकलित ) और एक रिपोर्ट लिस्टिंग संभव उत्पन्न समस्याओं के साथ मूल स्रोत कोड .
संभावित समस्याओं का प्रदर्शन कर रहे हैं और सुरक्षा की समस्याओं की पहचान की है .
कूटलेखन सम्मेलन की पहचान की संभावित उल्लंघन कर रहे हैं .
FxCop की आवश्यकता नहीं पहुँच मूल स्रोत कोड के प्रदर्शन के विश्लेषण .
केवल संकलित .NET कार्यक्रम ( जिसमें IL ) की आवश्यकता है .
फिर भी , FxCop रिपोर्ट प्रस्तुत करता है hyperlinks करने के लिए विशेष लाइन संख्या में मूल स्रोत कोड .
यदि Microsoft Visual C# 2005 IDE सक्रिय है , हाइपरलिंक पर क्लिक करेंगे रिपोर्ट में FxCop के कारण IDE को ताना स्रोत फ़ाइल को प्रासंगिक और लाइन संख्या है .
FxCop है , मेरे विचार में , एक तरह से नहीं बल्कि awkward के साथ एकीकृत करने के Microsoft Visual C# 2005 IDE .
लेकिन , एक बार की स्थापना की है , एक बहुत ही रोचक और FxCop उत्पन्न संभावित रिपोर्ट के मूल्यवान है .
इस रिपोर्ट के बारे में विस्तृत सूचना को बेहतर बनाने के लिए मूल स्रोत कोड .
मैं सोचता हूँ कि यह उचित है विश्लेषण करने के लिए एक प्रोग्राम का प्रयोग कर FxCop पर आवधिक आधार है .
मुझे आश्चर्य नहीं होगा यदि कुछ सॉफ्टवेयर विकास परियोजनाओं या व्यवसाय के सभी आवश्यक कोड द्वारा लिखित डेवलपर्स के लिए चेतावनी है या नहीं उपज आलोचनाओं के द्वारा FxCop .
नियमावली में जोड़ा जा सकता है या हटाया से FxCop डेटाबेस के अनुसार , जरूरत है .
FxCop खुले स्रोत है , निःशुल्क प्रोग्राम है .
6.3 "Reflector for .NET" : decompiler / विश्लेषक
इंटरनेट साइट से Lutz Roeder's :
"Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."
"Reflector" मदद कर सकते हैं कि कैसे एक व्यक्ति के अध्ययन के तीसरे पक्ष के पुस्तकालयों के लिखित हैं .
कभी कभी यह जानना बहुत उपयोगी होगी कि कैसे ठीक एक विधि में एक विधानसभा लागू है .
यदि एक विधि behaves में रहस्यमय ढंग से एक अनपेक्षित या , फिर देखने के लिए प्रयोग किया जा सकता है "Reflector" के कार्यान्वयन .
को देखने के कार्यान्वयन में काम कर सकते हैं क्रमादेशक के आसपास implementations विशिष्ट समस्याओं के कारण पुस्तकालय के तरीकों में है .
एक मित्र ने मुझे बताया कि उसके बारे में अधिक जानने में मदद की "Reflector" का व्यवहार खराब दस्तावेज के तरीकों में Microsoft कार्यान्वयन के Framework Class Libraries (FCL) .
"Reflector" सहायक हो सकता है जब प्रलेखन के लिए एक पुस्तकालय पद्धति में केवल कुछ ही शब्दों में , इस तरह की "घटना" के रूप में "सेट के मूल्य" या "प्रहस्तक" .
यदि कोई पुस्तकालय समारोह में विफल रही है गारंटी के लिए एक अज्ञात कारण से ( जब सभी मानदंडों को वैध लगता है ) , तो "Reflector" का उपयोग को देखने के लिए पुस्तकालय के कार्यान्वयन का कार्य हो सकता है प्रगट की विफलता का कारण है .
"Reflector" प्रदर्शन कुछ "रिवर्स इंजीनियरिंग" के एक प्रोग्राम या विधानसभा .NET .
अन्य उपयोगिताएँ , संभवतः सहित "Reflector" ही उपज स्रोत कोड के लिए कर सकते हैं या कार्यक्रमों के निर्माण के आधार पर विधानसभा obfuscated स्रोत कोड .
जाहिर है , यह चिंता के स्रोत कुछ डेवलपर्स और उनके निवेशकों के लिए है .
( 2006 July : Reflector.zip था संस्करण 4.2.45.0 )
7. इंटरनेट फोरम चर्चा
सबसे अच्छा तरीका है Google खोज के जवाब ढूँढने के लिए किसी भी विषय पर विशिष्ट प्रश्न है , लेकिन नीचे की साइटों के लिए खोज परिणामों में बार बार दिखाई C# और .NET प्रश्न .
इस साइट की तलाश के लिए नीचे दिए गए हैं जबरदस्त मस्त कई बातों के साथ लोगों ने किया है C# और .NET .
"The Code Project" साइट ने हजारों रोचक और उपयोगी लेख के लिए C# , C++ , और अन्य भाषाओं और प्रोग्रामिंग मानदंड है .
"MSDN Code Gallery" इस साइट के लेख में कई रोचक और कोड के नमूने Microsoft प्रौद्योगिकियों से संबंधित है .
इंटरनेट साइटों से संबंधित अन्य C# और .NET :
8. जनरल नोट
8.1 स्वतंत्रता के प्लेटफॉर्म
इस Intermediate Language (IL) , जैसे Java "बाइट कोड" , स्वतंत्र मंच है .
कोई भी पैदा होगा .NET के आज्ञाकारी संकलक मंच (IL) कोड Intermediate Language करने के लिए स्वतंत्र रूप कार्यक्रम या असेंबलियों .
कार्यक्रम के रूप में निष्पादनयोग्य डिब्बाबंद ( "*.exe" फ़ाइलें ) मंच होना चाहिए कुछ निर्भर करने के लिए एक विशिष्ट कोड ऑपरेटिंग सिस्टम है , के उद्देश्य से शुरू की जा रही है और ठीक से व्याख्या के रूप में निष्पादन योग्य सॉफ़्टवेयर के संदर्भ में की ख़ास प्रचालन प्रणाली का है .
लेकिन , इस सॉफ़्टवेयर के मूल निवासी भाग निष्पादन योग्य फ़ाइल में ही काम करने का आह्वान .NET CLR इंजन , IL भेजने के कोड में निहित सॉफ्टवेयर के लिए निष्पादन फ़ाइल द्वारा CLR इंजन है .
Microsoft प्रदान करता है एक कार्यान्वयन के .NET सुविधाएं ( संकलक , ...), और एक कार्यान्वयन के Framework Class Library (FCL) , सिर्फ ऑपरेटिंग सिस्टम के लिए Windows .
इस Mono Project प्रदान करता है implementations के .NET सुविधाएं ( संकलक , ...), और implementations के Framework Class Library (FCL) , निम्नलिखित के लिए आपरेटिंग सिस्टम : Windows , Linux , MacOS X , और BSD .
8.2 स्पीड की तुलना में non-CLR C / C++
Common Language Runtime (CLR) पहलू यह है .NET के संदर्भ में एक C# कार्यक्रम executes .
CLR "कचरा संग्रहण" और प्रदर्शन के कार्यक्रमों में सक्षम बनाता है "unmanaged" पुस्तकालयों में कार्य करने के लिए आह्वान ( सभी पुस्तकालयों के Intermediate Language (IL) में लागू नहीं ) .
कोई भी कार्य करता है से अधिक के शुद्ध गणित , शुद्ध स्ट्रिंग में हेरफेर करना , या शुद्ध स्मृति कॉपी , "unmanaged" पुस्तकालयों में कार्य लेना होगा .
सभी फ़ाइल आपरेशनों , आपरेशन गर्तिका , ड्राइंग आपरेशनों , आपरेशन इनपुट ( माउस , कुंजीपटल ) , निर्गम आपरेशन ( कन्सोल ) , सूत्र के मंच संचालन , परिशुद्धता समय आपरेशनों , आपरेशन गवाक्षन , etc , "unmanaged पुस्तकालयों" में कार्य लेना होगा .
दुर्भाग्य से , एस्मा "unmanaged" कार्य की प्रणाली से CLR की राशि की आवश्यकता होती है एक महत्वपूर्ण समय है .
इसलिए , गति का एक समग्र कार्यक्रम के कार्यान्वयन के संदर्भ में CLR है noticably धीमी गति से आह्वान कर सकते हैं कि कार्यक्रम "unmanaged" सीधे कार्य है .
क्योंकि कुछ प्रकार के सॉफ्टवेयर , गति से किया जा सकता है महत्वपूर्ण है .
क्योंकि कुछ प्रकार के सॉफ्टवेयर , गति कर सकते हैं एक महत्वपूर्ण अंतर में मनोवैज्ञानिक व्यक्तिपरक या अनुभव के लिए सॉफ्टवेयर का उपयोग करके एक व्यक्ति है .
क्योंकि कुछ प्रकार के सॉफ्टवेयर , गति को प्राप्त करने के बीच अंतर कर सकते हैं और एक लक्ष्य विफल रही है .
बहु सूत्रण , CPU गति बढ़ती है , और सुधार के लिए कोड उत्पन्न CLR सुविधा , क्रियान्वित करने में मदद करेगा सॉफ्टवेयर के संदर्भ में तेज़ी से निष्पादित की CLR .
लेकिन , किसी भी है कि executes कोड CLR के बाहर है , और सीधे एकध्रुवीय मंच पुस्तकालयों , निश्चित करेगा निष्पादित की तुलना में काफी तेज है कि सॉफ्टवेयर के भीतर executes के संदर्भ में CLR .
इस आश्वासन के द्वारा बनाई गई CLR करने के लिए सॉफ्टवेयर C# , जैसे सुरक्षित पुल कोड और प्रबंधन के बीच अंतर unmanaged कोड की लागत आती है कि कम होने की संभावना नहीं है .
इसलिए , किसी भी प्रोग्राम है जो बहुत ही गहन मंच ( उदाहरण : 3 डी अनुकरण या खेल , फ़ाइल प्रोसेसर , सर्वर नेटवर्क आदि ) को निष्पादित करने की संभावना है एक आदेश के परिमाण के CLR की तुलना में तेजी से बाहर के भीतर CLR जब मार डाला .
भारी अंतर है .
इसके अलावा , किसी भी कार्यक्रम का एक महत्वपूर्ण है कि प्रदर्शन का स्तर कम मात्रा में हेरफेर करना होगा डेटा निष्पादित CLR की तुलना में काफी तेजी से बाहर के भीतर CLR .
कार्यक्रम के कार्यान्वयन के संदर्भ में तेज़ी से CLR निष्पादित करने के लिए पर्याप्त कई व्यावहारिक प्रयोजनों के लिए उपयोगी होगा .
CPU गति के रूप में वृद्धि हुई है , और कोड के रूप में बेहतर का लाभ ले कई CPUs , कार्यक्रमों के कार्यान्वयन के संदर्भ में CLR करने में सक्षम होंगे और अधिक कार्यों के लिए उपयोग किया जाता है कि एक उच्च दर का अभिकलन की आवश्यकता होती है .
लेकिन , के मध्य में 2008 के CLR के लिए उचित नहीं है फिर भी किसी भी खेल 3 डी परिष्कार , जब तक एक बहुत आक्रामक प्रयास किया जाता है की संख्या को कम करने के लिए कार्य करने के लिए कॉल के 3 डी पुस्तकालय ( OpenGL या Direct3D ) , जैसे कि संभवतः अवधारणाओं का उपयोग करके "shader कार्यक्रमों" और "प्रदर्शन सूची" ; की संख्या को कम करने के लिए कुछ भी समारोह में कॉल .