
What is .NET? The .NET Framework is a collection of programs and code libraries that provide a means to produce software applications. The Framework comprises of two main parts: a run-time engine to host the applications; and a software development kit (SDK) that allows developers to create the programs in the first place.
The Run-time engine (also known as Common Language Run-time (CLR) or simply the ‘.NET Run-time’) is built into modern Windows operating systems or distributed as an installer package that offers all the functionality required to run .NET applications on older systems. Essentially, the .NET run-time can be thought of as a large library of elemental solutions known as the ‘Framework Class Library’ (FCL) that can be used in common programming tasks. The runtime also provides a lot of other functionality behind the scenes.
To enable software programmers to develop applications against the .NET Framework, Microsoft provides its free SDK, which is distributed as a separate installer package. The SDK provides all the basic facilities required to enable programmers to develop, compile and debug .NET applications.
Through a combination of the FCL and the SDK the .NET Framework supports the notion of a rapid application development (RAD) environment. The explanation of what RAD means has evolved over the years to its current use, referring to capabilities that enable the development process to be accelerated through the use of predefined functionality (frameworks), graphical design tools and other facilities.
Initially Microsoft only produced a run-time for its Windows operating system, but over time a more operating system agnostic approach has been taken and .NET is now supported on several operating systems (more specifically a separate version of it, previously called Mono and now evolved into .NET Core).
Why Did Microsoft Introduce .NET?
Software development is a constantly evolving discipline. New ideas, technologies and processes are always being proposed, introduced and adopted by the software industry at large.
The .NET Framework was introduced in an effort to overcome a number of programming challenges that software developers were faced with at the time and included some concepts already in evidence elsewhere in the software industry. For example, Oracle devised and introduced the Java programming language and run-time prior to the development of .NET.
The .NET Framework promotes what is referred to as ‘managed code’. The run-time manages all memory allocation and revocation implicitly. This might not sound like much but in unmanaged environments, a significant amount of a programmer’s time can be spent trying to fix memory problems related to the allocation and release of memory space. It also means that aside from the obvious time saving with regard to the debugging of memory issues, the programmer no longer has to worry about writing the code to allocate and release memory and that has contributed to further reducing the development effort.
Microsoft expanded the amount of built-in functionality dramatically when it released the .NET Framework. The FCL provides programming elements for everything from file handling, to communications, to cryptography. Once a software programmer becomes familiar with all of the functional elements that the FCL provides, they are able to produce feature-rich applications much more quickly than in the past.
A significant part of these functional improvements also focused on the development of graphical user interfaces (GUI.) Microsoft invested a lot of time improving the way that application windows are defined and this both simplified the programming requirements and made it easier to write professional, functional GUIs for .NET applications.
Operating system uniqueness was another issue that programmers faced before the .NET Framework was introduced. Even if we only looked at Microsoft’s own operating systems, client and server operating systems had different core system architectures (kernels) and handled low level functionality (memory access, communications, etc.) slightly differently. This, historically, meant that developers that to cater for these differences and separate distributions of the same software release often had to be produced to enable them to be deployed on specific operating system versions (Windows 200 Workstation, Windows 200 Server, Windows XP, Windows 2003 Server, etc.) This usually made it more complicated to write the software, and the testing overhead was greater too because software had to be fully proven against all target operating systems.
It wouldn’t be fair to talk about the .NET Framework without mentioning a technology that Microsoft heralded greatly during its launch: web services. These are generally small applications that are exposed by a web server (or at least through a computer network port) and can be consumed by applications and web browsers alike. The introduction of web services was an important step forward in programming terms. For one thing, they enabled web sites to offer more feature-rich content as they could consume application functionality from other places on the internet and integrate it into their own site. It is worth mentioning that web services can be developed without needing to use the .NET Framework too. Today, web services are so common most end-users aren’t even aware they are using them – most mobile devices have weather apps that connect to a web service at a remote site to download up to date forecasts.