Microsoft.NET and C#: चूंकि Computer भी एक Electronic Device है, इसलिए Computer के लिए भी Windows, Unix, Linux, MacOS जैसे विभिन्न प्रकार के Operating Systems Develop किए गए हैं। साथ ही Computer एक Microprocessor Based Electronic Device है, इसलिए इसे Reprogram करते हुए विभिन्न प्रकार की जरूरतों को पूरा करने के लिए Application Software भी बनाए जाते हैं।
लेकिन चूंकि Windows Operating System एक ऐसा Operating System है, जिसे लगभग 95% से ज्यादा लोग Use करते हैं, इसलिए आज तक Windows Operating System के लिए ही सबसे ज्यादा Application Software Develop किए गए हैं और .NET भी MS-Windows के लिए ही Develop किया गया एक Programming Package या Framework है, जो कि Windows Operating System के लिए Application Software Develop करने वाले Software Developers के Development Work को आसान बनाने के लिए ही Design किया गया है।
MS-Windows Operating System को मूल रूप से “C” Programming Language में Develop किया गया था। क्योंकि “C” Language का विकास मूल रूप से Unix Operating System को Portable बनाने हेतु Redesign करने के लिए Develop किया गया था और जिस समय Windows Operating System का विकास शुरू हुआ था, उस समय “C” Language ही Best Available Programming Language थी।
चूंकि पूरे Windows Operating System का विकास ही “C” Language में किया गया था, इसलिए Operating System द्वारा Application Development से सम्बंधित विभिन्न प्रकार की जो Functionalities, Low Level API Functions के माध्यम से Application को Provide की जाती थीं, वे सभी Low Level API Functions भी पूरी तरह से “C Functions” के रूप में ही Available थे।
फिर समय के साथ जरूरतें बदलीं और जरूरतों के आधार पर Hardware बदले जिनकी वजह से Operating System Software की Functionalities को भी Extend करना पडा और Operating System की Functionalities को Extend करने की वजह से Windows Operating System द्वारा Provide की जाने वाली C Language Based API Functions की List भी बडी होने लगी, जिसे Manage करना मुश्किल होने लगा।
परिणामस्वरूप एक नए Design Pattern की आवश्यकता हुई, ताकि Software को Develop व Manage करना आसान हो और Solution के रूप में विकास हुआ Object Oriented Programming System का और “C” Language को OOPS Supported बनाने के लिए Modify किया गया, जिसके परिणामस्वरूप “C” Language Modify हो कर “C++” Programming Language के रूप में परिवर्तित हो गया।
लेकिन चूंकि Windows Operating System के सभी API Functions “C” Language में ही Define किए थे, इसलिए इन “C” Based API Functions को OOPS आधारित Applications में उपयोग में लेते हुए Software Develop करना काफी जटिल व मुश्किल काम हो गया।
Windows Operating System जिन Functionalities को API Functions के माध्यम से Provide करता था, उन सभी API Functions को Win32 API नाम से जाना जाता था और Developers इन API Functions का प्रयोग करके किसी भी प्रकार की Window Based Functionality को Implement कर सकते थे।
चूंकि ये Win32 API Functions OOPS आधारित Object Oriented Methods नहीं थे, इसलिए Microsoft ने MFC (Microsoft Foundation Classes) के नाम के Wrapper में इन API Functions को Wrap कर दिया। परिणामस्वरूप इन MFC Classes का प्रयोग करके विभिन्न प्रकार की जरूरतों को ज्यादा आसानी व तेजी से पूरा किया जाना सम्भव हो गया।
उदाहरण के लिए MFC Library में CFrame नाम की एक Class थी, जिसे Inherit करके हम बडी ही आसानी से एक Window Create कर सकते थे, जिसके साथ Automatically एक Title Bar व Border Frame होती थी। जबकि इसे Create करने के लिए हमें एक भी Win32 API Function को Call करने की जरूरत नहीं होती थी। हालांकि MFC Based Classes अभी भी Internally इन Win32 API Functions को ही Call करते थे।
जब Microsoft द्वारा MFC को Develop किया जा रहा था, उसी समय Microsoft की Basic आधारित Visual Basic Language एक Rapid Application Development Language के रूप में सबसे ज्यादा Use होने वाला Programming Language बन रहा था।
लेकिन Visual Basic की एक कमी ये थी कि ये किसी भी Win32 API Function को Normal तरीके से Directly Use नहीं कर सकता था, क्योंकि सभी Win32 API Functions, “C Language Functions” के रूप में थे जबकि Visual Basic वास्तव में Basic Language पर आधारित Programming Language था और दोनों ही Programming Languages के बीच आपस में Code Interoperability का कोई Standard तरीका नहीं था। क्योंकि “C” व “BASIC” दोनों एकदम अलग तरीके से Design की गई Programming Languages थीं।
साथ ही Visual Basic Object Oriented नहीं बल्कि एक Object Based Programming Language थी, जिसमें Class व अन्य Programming Constructs के माध्यम से नए User Defined Data Types तो Create किए जा सकते थे, लेकिन Inheritance, व Polymorphism जैसी सुविधा न होने के कारण Visual Basic के User Defined Data Types को Object Oriented तरीके से Reuse नहीं किया जा सकता था। इसलिए हालांकि MFC C++ Developers के लिए उपयोगी थी, लेकिन Visual Basic Developers के लिए इसका कोई उपयोग नहीं था।
इसलिए Visual Basic Developers के लिए Win32 API Functions को उपयोगी बनाने के लिए Microsoft ने COM (Common Object Model) नाम का एक नया Specification Define किया। इस Specification को Follow करते हुए ऐसे Software Components Create किए जा सकते थे, जिन्हें DLL Files (Dynamic Link Library) के रूप में Distribute किया जा सकता था।
ये DLL Files वास्तव में ऐसे Code Components होते थे, जिन्हें Design करके Compile कर लिया जाता था और एक बार Compile होने के बाद COM Specification को Follow करने वाली किसी भी Programming Language में उस DLL File यानी Code Component को Reuse किया जा सकता था।
यानी COM Specification को Follow करने वाली दो एकदम अलग Programming Languages भी आपस में COM Specification आधारित Code को Share कर सकते थे और COM Specification को समझने वाली किसी एक Programming Language में Develop किए गए Component को COM Specification Interface को समझने वाली किसी दूसरी Programming Language में Implement कर सकते थे।
परिणामस्वरूप COM Specification के कारण Develop किए जाने वाले Components (Pieces of Application Software) पूरी तरह से Language Independent हो जाते थे। यानी MFC Classes का प्रयोग करके Low Level Win32 API Functions को Use करते हुए एक C++ Programmer विभिन्न प्रकार के COM Specification आधारित Components Create करता था, जिसे कोई Visual Basic Developer COM Specification Interface को Follow करते हुए अपने Visual Basic Program में आसानी से Reuse कर लेता था।
इस तरह से COM Specification के कारण एक Visual Basic Developer भी Window Operating System द्वारा Provide की जाने वाली Low Level Win32 API Functions की Functionality को C++ MFC Classes के माध्यम से COM Specification द्वारा प्राप्त कर लेता था।
हालांकि COM Specification और भी कई तरह की Functionalities Provide करते थे, लेकिन इनकी मूल विशेषता यही थी कि ये एक Language Independent Environment Provide करते थे, जिससे एक Programming Language में Develop किया गया Code किसी दूसरी Programming Language में Use किया जा सकता था, हालांकि COM Development व Implementation में काफी Typical Process को Follow करना पडता था।
COM Specification के कारण COM Specification को Follow करने वाली दो एकदम भिन्न Programming Language में Develop किए गए Code Components एक दूसरे के बीच Share हो सकते थे, लेकिन इसकी एक बहुत बडी Disadvantage भी थी, जिसकी वजह से COM Specification लम्बे समय तक Microsoft को Support नहीं कर पाया और इस Disadvantage को Software Developers द्वारा “DLL Hell” नाम दिया गया था। चलिए, इस DLL Hell को भी समझने की कोशिश करते हैं।
COM Specification किसी Component की Location को Store करने के लिए Windows की System Registry का प्रयोग करता था। इसलिए जब कोई Client किसी Component को Use करना चाहता था, तो वह उस Component की Location को Win32 API Function का प्रयोग करके Windows की System Registry से प्राप्त करता था और फिर उस Component को Memory में Load करके Use करता था।
ये व्यवस्था काफी उपयुक्त थी लेकिन समस्या ये थी किसी भी एक Component को केवल एक ही बार Register किया जा सकता है। इसलिए यदि किसी Component में किसी तरह का Change करके उसका अगला Version Release किया जाए, तो ये नया Version अपने पुराने Version को Replace कर देता था।
परिणामस्वरूप जो Software उस पुराने Version को Use करते थे, वे Corrupt हो जाते थे। इस तरह से यदि एक ही Component के एक से ज्यादा Versions होते थे, तो किसी एक ही Version में Develop किए गए Software को ही उस Computer पर चलाया जा सकता है।
इस तरह से एक ही Component के दो अलग Versions को समान Computer पर Maintain किया जाना सम्भव न होने की वजह से यदि किसी Component के दो अलग Version पर पांच-पांच यानी कुल दस Software Depend होते, तो उनमें से एक Computer पर केवल पांच ही Software Run हो सकते थे, जबकि बाकी के पांच Software Corrupt हो जाते थे।
इसके अलावा भी COM Specification की कुछ और बडी समस्याऐं थीं, जिनकी वजह से Microsoft लम्बे समय तक COM Specification को Continue नहीं रख सका। COM Specification की इन्हीं विभिन्न प्रकार की समस्याओं के कारण Software Developers ने इसे DLL Hell नाम दिया था।
जिस समय Microsoft अपने Windows Operating System द्वारा Provided, Low Level Win32 API Functions को आसानी से Use करने के लिए MFC Classes Develop कर रहा था व Language Compatibility प्राप्त करने के लिए COM Specification Develop कर रहा था, उसी समय Internet का काफी तेजी से विकास होना शुरू हुआ था और उसी समय पर Sun Microsystems ने Java नाम का एक नया Programming Language Launch किया था, जिसका Architecture काफी Reliable व Future Proof था।
परिणामस्वरूप Microsoft ने महसूस किया कि उसे अपने Windows Operating System द्वारा Win32 API Functions के रूप में Provide की जाने वाली Functionality को इसके Root से ही Change करने की जरूरत है और एक ऐसा Common Programming Architecture Define करने की जरूरत है, ताकि विभिन्न प्रकार की Programming Language में लिखे गए Codes आपस में बिना किसी परेशानी के Share हो सकें।
साथ ही इन Programming Language को इस प्रकार से Design किए जाने की जरूरत महसूस हुई कि सभी Programming Language Future Proof हों। यानी यदि भविष्य में किसी भी तरह का Technology परिवर्तन हो, तो Microsoft को अपने Windows Operating System के Root को Change करते हुए उसे Redesign करने की जरूरत न रहे। इन दोनों जरूरतों को ध्यान में रखते हुए ही .NET Platform को Design किया गया है।
मुख्य रूप से एक ध्यान रखने वाली बात ये है कि Microsoft ने कभी भी किसी भी Technology को अपने स्तर पर Invent नहीं किया है, बल्कि हमेंशा किसी अन्य Company की Technology को समझा और उसे अपनी Company में एक नए नाम से Design करके Launch किया है।
उदाहरण के लिए C Programming Langue का Compiler सबसे पहले Borland Company ने Design किया था, जिससे Inspire होकर Microsoft ने Microsoft ANSI-C Design किया। इसी तरह से BASIC नाम की Programming Language को Redesign करके Visual Basic बनाया। Borland की OWL (Object Window Library) नाम की Class Library से Inspire होकर MFC (Microsoft Foundation Classes) नाम की Library बनाया। JavaScript से Inspire होकर JScript नाम का Alternative Create किया। FoxPro के Alternative के रूप में Visual FoxPro Design किया और Java के Alternative के रूप में J++ नाम की Programming Language को Design किया।
यहां तक कि Java के JVM के Alternative के रूप में Microsoft ने स्वयं का एक नया Microsoft JVM भी Create किया था, जिसकी Speed Original Java के JVM से काफी ज्यादा अच्छी थी। लेकिन Sun Microsystems के कानूनी विरोध के कारण अन्त में Microsoft को इस JVM का Development बन्द करना पडा। हालांकि आज भी जो लोग Windows XP Install करते हैं, उनके Computer में Microsoft JVM Automatically Install हो जाता है।
C# भी एक ऐसी ही Programming Language है, जिसका Architecture व Library System लगभग Java के समान है। इसलिए यदि आप Java सीख चुके हैं, तो समझ लीजिए कि आप बडी ही आसानी से C# भी सीख सकते हैं। (Microsoft.NET and C#)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C#.NET in Hindi | Page:908 | Format: PDF