Since the computer is also an electronic device, different types of operating systems like Windows, Unix, Linux, macOS have been developed for computers as well. Also, the computer is a microprocessor-based electronic device, so while reprogramming it, application software is also made to meet the various needs.
But since the Windows Operating System is such an operating system, which is used by more than 95% of the people, so far, most of the application software has been developed for the Windows Operating System, and .NET is also developed for MS-Windows only. It is a programming package or framework, which is designed to ease the development work of software developers developing application software for the Windows operating system.
The MS-Windows Operating System was originally developed in the “C” Programming Language. Because the development of the “C” language was originally developed to redesign the Unix Operating System to make it portable and at the time when the development of Windows Operating System started, “C” language was the best available programming language at that time.
Since the entire Windows Operating System was developed in “C” language, the various functionalities related to Application Development by the Operating System were provided to the application through Low-Level API Functions; they were all Low-Level APIs. Functions were also available solely as “C Functions.”
Then the requirements changed over time, and the hardware changed depending on the needs, due to which the functionalities of the Operating System Software had to be extended and the C Language-Based API Functions provided by the Windows Operating System due to the extension of the functionalities of the Operating System. The list of keys also started getting bigger, which became difficult to manage.
As a result, a new design pattern was needed so that the software was easy to develop and manage, and as a solution, the Object-Oriented Programming System was developed, and the “C” language was modified to make it OOPS Supported, resulting in “C” By modifying the language, “C ++” was changed as Programming Language.
But since all the API Functions of the Windows Operating System were defined in the “C” language itself, it became a very complicated and difficult task to develop software using these “C” Based API Functions in OOPS-based Applications.
The Functionalities that the Windows Operating System provided through API Functions, all those API Functions were known as Win32 API, and Developers could implement any type of Window Based Functionality by using these API Functions.
Since these Win32 API functions were not OOPS-based Object-Oriented Methods, Microsoft wrapped these API functions in a wrapper named MFC (Microsoft Foundation Classes). As a result, it became possible to meet different types of needs more easily and faster by using these MFC classes.
For example, there was a class named CFrame in MFC Library, by inheriting which we could very easily create a window, which automatically had a Title Bar and Border Frame. At the same time, we did not need to call a single Win32 API Function to create it. However, MFC-based classes are still used to call these Win32 API functions internally.
When MFC was being developed by Microsoft, at the same time, Microsoft’s Basic-based Visual Basic Language was becoming the most used programming language as a Rapid Application Development Language.
But a shortcoming of Visual Basic was that it could not directly use any Win32 API Function in a normal way because all Win32 API Functions were in the form of “C Language Functions,” whereas Visual Basic was actually based on Basic Language. There was a programming language, and there was no standard way of code interoperability between the two programming languages because both “C” and “BASIC” were programming languages designed in a completely different way.
Also, Visual Basic was not Object Oriented but an Object-Based Programming Language, in which new User Defined Data Types could be created through Class and other Programming Constructs, but due to lack of facilities like Inheritance, and Polymorphism, Visual Basic User-Defined Data Types could not be reused in an Object-Oriented manner. So although MFC was useful for C++ developers, it was of no use to Visual Basic developers.
That’s why Microsoft defined a new specification named COM (Common Object Model) to make Win32 API Functions useful for Visual Basic Developers. Following this specification, such software components could be created, which could be distributed as DLL files (Dynamic Link Library).
These DLL files were actually coded components that were designed and compiled, and once compiled, that DLL file, i.e., Code Component, could be reused in any programming language that followed the COM specification.
That is, two completely different programming languages that follow COM Specification could also share COM specification-based code, and a component developed in one programming language that understands COM Specification could be developed into another Programming Language that understands the COM Specification Interface. I could implement.
As a result, the components (Pieces of Application Software) to be developed due to COM Specification used to be completely language independent. That is, using MFC Classes using Low-Level Win32 API Functions, a C++ Programmer used to create various types of COM Specification-based Components, which any Visual Basic Developer could easily reuse in his Visual Basic Program by following the COM Specification Interface. Used to take
In this way, due to COM Specification, even a Visual Basic Developer could get the Functionality of Low-Level Win32 API Functions provided by Window Operating System through COM Specification through C++ MFC Classes.
Although COM Specifications used to provide many more functionalities, their basic feature was that they provided a language-independent environment so that the code developed in one programming language could be used in any other programming language, although A lot of Typical Processes had to be followed in COM Development and Implementation.
Due to COM Specification, code components developed in two completely different programming languages that follow COM Specification could be shared between each other, but it also had a huge disadvantage, due to which COM Specification Supported Microsoft for a long time. I could not do it, and this disadvantage was named “DLL Hell” by the software developers. Let’s try to understand this DLL Hell as well.
The COM specification used Windows’ system registry to store the location of a component. So when a client wanted to use a component, he used to get the location of that component from the system registry of Windows using the Win32 API function and then used to load that component into memory.
This arrangement was quite suitable, but the problem was that any single component could only be registered once. Therefore, if any kind of change in a component is made and its next version is released, then this new version is used to replace its old version.
As a result, the software that used to use that old version would get corrupted. In this way, if there were more than one version of the same component, then only software developed in a single version can be run on that computer.
In this way, because it is not possible to maintain two different versions of the same component on the same computer, if there were five or five different versions of a component, i.e., a total of ten software depend, then only five on one computer. The software could be run, while the remaining five software would get corrupted.
Apart from this, there were some other big problems of COM Specification, due to which Microsoft could not continue COM Specification for a long time. Due to these different types of problems of COM specification, the software developers named it DLL Hell.
At the time when Microsoft was developing MFC classes to easily use Low-Level Win32 API Functions provided by its Windows Operating System and was developing COM Specification to get Language Compatibility, at the same time, there was a very rapid development of the Internet. And at the same time, Sun Microsystems launched a new programming language named Java, whose architecture was quite Reliable and Future Proof.
As a result, Microsoft realized that it needed to change the functionalities provided by its Windows operating system in the form of Win32 API Functions from its root itself and needed to define a common programming architecture so that different types of programming Codes written in the language can be shared among themselves without any problem.
Also, the need was felt to design these programming languages in such a way that all programming languages should be future-proof. That is, if there is any kind of technology change in the future, then Microsoft does not need to redesign it by changing the root of its Windows Operating System. Keeping both these requirements in mind, the .NET Platform has been designed.
Even as an alternative to Java’s JVM, Microsoft had created a new Microsoft JVM of its own, whose speed was much better than the original Java’s JVM. But due to legal opposition from Sun Microsystems, Microsoft had to stop the development of this JVM in the end. Although even today, people who install Windows XP, Microsoft JVM is automatically installed in their computer.
C # is also one such programming language whose architecture and library system are almost similar to Java. So if you have learned Java, then understand that you can also learn C# very easily.