CLI-Common Language Infrastructure: CLI एक ECMAScript Standard (Specification 335) है, जो Managed Code यानी ऐसे Code जो कि .NET Framework पर आधारित हों, के Execute होने के लिए जरुरी Runtime Infrastructure को Define करता है और इस Infrastructure में विभिन्न .NET Libraries व Programming Languages आपस में मिलकर किसी Application के Development में अपना-अपना Specific Role Play करते हैं।
जब .NET का विकास किया जा रहा था, तब इसके मूल में Cross-Language Interoperability एक मुख्य Concept था, जिस पर .NET आधारित था, ताकि अलग-अलग Programming Languages में Software Develop करने वाले सभी Developers बिना कोई नई Programming Language सीखे हुए भी अपनी पहले से सीखी हुई Programming Language में ही .NET आधारित Applications Develop कर सकें और इस जरूरत को पूरा करने के लिए Microsoft ने Hewlett-Packard व Intel के साथ मिलकर एक Team का गठन किया जिनका मुख्य काम CLI का Standardization करना था ताकि अन्य Compiler Developers, अपने Programming Language के Compiler को .NET Framework के लिए Redesign कर सकें।
जबकि CLI के एक Standard Specification के रूप में स्वयं Microsoft ने CLR (Common Language Runtime) नाम का Implementation Provide किया, जो कि Mono व DotGNU Portable.NET नाम के अन्य Implementations के साथ अभी भी Exist हैं। इसी तरह से Microsoft द्वारा Shared Source CLI (SSCLI) एक और Standard Specification Provide किया गया, जिसके आधार पर Rotor नाम का Implementation Define किया गया और ये Implementation अभी भी FreeBSD जैसे Platform के लिए Exist व Available है।
इस Discussion का मतलब ये है कि .NET Platform न केवल Cross-Language Interoperability Allow करता है, बल्कि विभिन्न Platform के लिए एक Common Programming Language में Application Software Develop करने की सुविधा भी देता है। यहां तक कि Mono द्वारा Supported Moonlight Project, UNIX Based Platforms के लिए Silverlight Applications Design करने की सुविधा भी देता है।
CLI एक Virtual Execution System (VES) Define करता है, जो कि एक Virtual Machine या Virtual Execution Engine होता है, जिसे पता होता है कि किस तरह से Standards के आधार पर Codes को Execute किया जा सकता है। CLI पर Run होने वाले Code के Format को Common Intermediate Language (CIL) कहते हैं, जबकि CLI द्वारा METADATA का प्रयोग Application के Code को Describe करने के लिए किया जाता है। साथ ही CLI, Create होने वाली Assembly के File Format को Cross-Platform Compatibility के लिए भी निश्चित करता है।
CLI के बाद .NET Platform की अगली Layer को Common Type System (CTS) कहा जाता है। .NET Platform का ये Part Cross-Platform Interoperability के लिए जिम्मेदार होता है, क्योंकि .NET Platform का ये Part ही .NET Supported विभिन्न Programming Languages के बीच Share होने वाले Data Types के Behavior को तय करता है।
उदाहरण के लिए .NET से पहले विभिन्न Programming Languages के बीच Code का Transfer इसलिए भी सम्भव नहीं हो पाता था, क्योंकि अलग-अलग Programming Languages में उनके Data Types की Size व Data Types के बीच कोई Standard नहीं होता था।
उदाहरण के लिए कुछ Programming Languages में Integer का Size 2 Byte होता था तो कुछ में 4 Byte होता था। ऐसे में एक Language का Code यदि दूसरी Language में Transport किया जाता था, तो Computer इस बात का Decision लेने में पूरी तरह से सक्षम नहीं हो पाता था कि वह Integer को 2 Byte का मानते हुए Code Conversion करे या 4 Byte का मानते हुए।
लेकिन .NET Supported विभिन्न Programming Language के लिए विभिन्न Data Types व उनका Size समान होता है क्योंकि .NET Supported विभिन्न Programming Languages अपने Data Type व उनके Size के लिए CTS पर निर्भर होते हैं और CTS, सभी .NET Supported Programming Languages के लिए समान Type व Size Provide करता है। परिणामस्वरूप उनके बीच Code Transfer होना सम्भव हो जाता है।
अन्त में .NET Platform की अन्तिम Layer, Common Language Specification (CLS) आता है, जो कि Rules का एक समूह होता है, जिस पर सभी .NET Supported Programming Languages आधारित होती हैं।
यदि कोई Programming Language इस Specification के सभी Rules को Follow करता है, तो हम उस Programming Language को .NET Compliant Programming Language कहते हैं, जिसका मतलब ये होता है कि Current Programming Language अन्य Programming Language के साथ Interact करने में पूरी तरह से सक्षम है।
CTS, CLS व अन्य .NET Supported Programming Languages के बीच के आपसी सम्बंध को हम उक्त चित्र द्वारा बेहतर तरीके से समझ सकते हैं, जहां हम देख सकते हैं कि CLS सभी .NET Supported Programming Language के Core या Center में है। जिसका मतलब यही है कि सभी .NET Supported Programming Languages समान Language Specification पर आधारित होते हैं, इसलिए एक दूसरे के Codes को उपयोग में ले सकते हैं। जबकि ये सभी .NET Supported Programming Languages स्वयं CTS को Follow करते हुए Cross-Language Interoperability की क्षमता प्राप्त करते हैं।
इतना ही नहीं, .NET Framework द्वारा Provide की जाने वाली Base Class Library (BCL) को भी इसी तरह से CLS Compliant बनाया गया है, ताकि किसी भी .NET Supported Programming Language द्वारा इन्हें समान रूप से उपयोग में लिया जा सके।
CTS (Common Type System)
Types ही वह तरीका हैं, जिनके आधार पर CLR काम करता है। Types ही Define करते हैं कि विभिन्न Programs व Libraries को किस प्रकार से Organize होंगे और इनके Components आपस में किस तरह से Interactions करेंगे। Assemblies वास्तव में इन Types के Container ही होते हैं।
चूंकि .NET सभी .NET Supported Programming Languages को समान मानता है। इसलिए किसी Class को यदि C# में Define किया गया हो, तो उसी Class को उसी तरह से हम VB.NET में भी Define कर सकते हैं और ये दोनों Programming Languages एक दूसरे की Classes के Object Create कर सकते हैं।
इस प्रकार का Language Interoperability इसीलिए सम्भव हो सकता है क्योंकि विभिन्न .NET Supported Programming Languages, .NET Framework के Common Type System के आधार पर Design किए गए होते हैं।
इस CTS के अन्तर्गत विभिन्न Programming Languages जिन Primary या Secondary Data Types को Support करते हैं, उनके Type, Size व Structure आदि Common तरीके से Define किए जाते हैं और सभी को Common तरीके से Define करने का काम .NET के CTS Specification द्वारा तय किया जाता है।
Microsoft.NET विभिन्न प्रकार के Types को Support करता है और इस पुस्तक में हम उन सभी Types के बारे में विस्तार से जानेंगे। लेकिन फिर भी जिन Types को .NET Framework Supported सभी Programming Languages को Follow करना होता है, वे Value Types, Reference Types, Classes, Interfaces व Delegates हैं। (CLI-Common Language Infrastructure)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C#.NET in Hindi | Page:908 | Format: PDF