C# is a programming language created to run on .NET Framework.
However, C# as well as .NET Framework are relatively new, only introduced in the year 2002.
However, even before them windows programming had existed and applications were being created.
In the 1990s, making windows applications basically involved three technologies:
|1.||Win32 API||Using raw C and C++ code to interact with Operating System APIs.|
|2.||MFC||Microsoft Foundation Classes. Most popular at the time.|
|3.||COM||Component Object Model.|
Disadvantages of the Previous Pre .NET Techniques
The above techniques for creating Windows applications had the following disadvantages.
|1.||Win32 API||Using raw Win32 API was complex and error prone. It wasn’t Object Oriented therefore programs could become overly complex to manage.|
|2.||MFC||MFC was getting old and inconsistent and needed replacing even though it was Object Oriented.|
|3.||COM||With COM a programmer could build libraries that were sharable and usable by a variety of programming language. Certainly this language-independence was useful. However, working with COM was complex and had fragile deployment model. Deployment was only conceivable in Windows. However, with .NET platform we get a more powerful, flexible and simpler programming model.|
Clearly the successor to the above technologies had to take not only the above issues in mind but also the fact that we had just entered and internet age.
Internet required strong security and cross platform capability among applications. Performance also had to catered for.
Not only was there a need for better execution environment with respect to security, performance and cross platform capability, but also the development environment had to modernised.
Object Oriented Programming methodology was getting more and more popular and it was clear it was the future.
With the internet age, creation distributed applications needed industry standards communication protocols to be intergrated into programming languages.
The inception of internet also added yet another type of application development: those that run on the server. Microsoft therefore needed the provision of a consistent programming experience.