.Net Program Execution

.Net Program Execution: जैसाकि हमने पिछले Section में COM व अन्‍य Technologies व उनसे सम्बंधित परेशानियों के विषय में जाना, Microsoft ने उन सभी परेशानियों के Solution के रूप में एक नया Framework Design किया, जो कि अपनी सभी पिछली Programming Language से अलग था। इस Framework का नाम .NET Framework रखा गया, जो कि पूरी तरह से Future Proof Programming Architecture Develop करने, Programming Languages के बीच Code Portability प्राप्त करने तथा विभिन्न प्रकार के Internet Based Software को Support करने के लिए यानी लगभग सभी तरह की जरूरतों को केवल एक ही Framework व एक ही Programming Language द्वारा पूरा करने के लिए Design किया गया था। .NET Framework को एक Simple Diagram के रूप में निम्नानुसार प्रदर्शित किया जा सकता है:

.NET Framework Working - C# in Hindi - BccFalna.com

.NET Framework में किसी .NET Application को Run करने के लिए Run TimeCompile Time Services को Include किया गया था। Compile Time Services वे Services होती हैं, जो Software Developer के लिए उस समय उपयोगी होती हैं, जब वह किसी Software को Compile कर रहा होता है। जबकि Run Time Services किसी Application के Memory में Execute होते समय उपयोगी होते हैं।

Compile TimeRun Time Services के अन्तर्गत Servers, COM, COM+, DCOM, Message Queuing, Internet Information Server, Windows .NET Server, SQL Server, etc… Services Included हैं, जबकि यदि हम Software Development के लिए Visual Studio का प्रयोग करते हैं, तो Visual Studio का IDE भी इन्हीं Services का एक हिस्सा होता है।

किसी .NET Application Code के Run Time Execute के मूल में हमेंशा CLR (Common Language Runtime) होता है, जो कि Java के JVM के समान ही एक Virtual Machine है। यही CLR उस Computer पर एक Process की तरह Run होता है, जिस पर .NET Framework को Install किया गया होता है।

Virtual Machine एक प्रकार से एक Virtual Computer की तरह काम करता है, जिसे Current Operating System पर Install किया गया होता है और यही Virtual Computer किसी .NET Application Code को Run करता है।

इसलिए यदि किसी CLR को Linux या MacOS Operating System के लिए Design किया जाए, तो किसी भी Operating System व किसी भी Computer Hardware Architecture पर Develop किए गए किसी भी .NET Program को CLR युक्त किसी भी अन्‍य Operating System व Computer Hardware पर ठीक उसी तरह से Run किया जा सकता है, जिस प्रकार से Java के Programs को Platform व Architecture Neutral तरीके से JVM युक्त किसी भी Computer पर Run किया जाता है।

जब किसी .NET Application को Compile किया जाता है, तब Generate होने वाली .EXE या .DLL File को PE (Portable Executable) Code कहते हैं, क्योंकि इस Code को किसी भी CLR युक्त अन्‍य Computer पर Run किया जा सकता है और ये Code हमेंशा किसी CLR में ही Run होते हैं। यानी जिस Computer पर .NET Platform Installed न हो, उस Computer पर इन PE Code Files को Run नहीं किया जा सकता।

Microsoft की सभी अन्‍य Programming Languages में जब किसी Program को Compile किया जाता था, तो उन Programs की एक Native Machine Code File बन जाती थी, जिसकी वजह से वह Code केवल उसी Computer पर Run होता था।

लेकिन .NET Platform Supported Programming Language द्वारा जब किसी .NET Application Program को Compile किया जाता है, तो Generate होने वाली File Native Machine Code File नहीं होती है बल्कि एक Intermediate Byte Code File होती है, जिसे MSIL (Microsoft Intermediate Language) या IL के नाम से जाना जाता है।

ये MSIL Code File वास्तव में Java के Byte Code Class File के समान ही है, जो न तो पूरी तरह से Source Code के रूप में होती है न ही पूरी तरह से Machine Dependent Native Binary Code में। बल्कि एक मध्‍य स्थिति की File होती है, जिसे हर उस Computer पर Run किया जा सकता है, जिस पर CLR Installed हो, ठीक उसी तरह से जिस तरह से Java की Byte Coded Class File को हर उस Computer पर Run किया जा सकता है, जिस पर JVM Installed हो।

जो Codes CLR में Execute होने के लिए Load होते हैं, उन Codes को Assembly कहा जाता है और ये Assembly एक या एक से ज्यादा Files को Collection होते हैं। किसी Assembly में जितनी भी Files होती हैं, वे सभी एक Single Unit की तरह Deploy होती है। Assembly में Included इन Files के रूप में Portable Executable (.EXE, .DLL, .BMP) Files हो सकते हैं जबकि इन सभी Files में से किसी एक File में MENIFEST नाम का एक MSIL Part होता है।

इस MENIFST File में Assembly की अन्‍य सभी Files, उन Files में Specified सभी Classes व अन्‍य Data Types के बारे में जरुरी Information होती है, जिसे METADATA (Data about Data) कहा जाता है। साथ ही इसी MENIFEST में इस बात की Information भी होती है कि Assembly की विभिन्न Files, Classes, Data Types आदि को किस प्रकार से Use करना है।

जब CLR किसी Assembly को Use करने के लिए Memory में Load करता है, तो केवल MENIFEST ही Memory में Compile होता है। जबकि Data Types यानी Classes के Methods तभी Compile होकर Cache Memory में Cached होते हैं, जब Application Program में वास्तव में उनकी जरूरत होती है। इस व्‍यवस्था के कारण .NET Applications Memory में ज्यादा तेजी से Load हो जाते हैं और कम से कम Resources को Use करते हैं। इस प्रक्रिया को Just-In-Time (JIT) Compiling कहा जाता है।

जब Applications को Memory Release करने की जरूरत होती है, यानी जब हम किसी .NET Application Program को Terminate करते हैं, तब CLR का Garbage Collector (GC) नाम का एक हिस्सा Automatically उस .NET Application द्वारा Use किए जा रहे Resources को Free करने का काम करता है।

परिणामस्वरूप अब Developers को Memory Leakage जैसी परेशानियों की चिन्ता करने की जरूरत नहीं रहती। क्योंकि .NET Application में जैसे ही किसी Object को कोई भी Variable Reference नहीं कर रहा होता है, CLR का GC उस Object की Memory को Automatically Free कर देता है। यानी Current .NET Application में जैसे ही किसी Object की जरूरत समाप्त हो जाती है, GC उसे Destroy कर देता है। (How .NET Application Runs on .NET Platform)

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW GET DEMO REVIEWS