The .NET framework is a software development framework from Microsoft. It provides a controlled programming environment where software can be developed, installed and executed on Windows-based operating systems. The principal design features are:
Interoperability: This allows for .NET-developed programs to access functionalities in programs developed outside .NET.
Common Runtime Engine: Also known as the common language runtime, this allows programs developed in .NET to exhibit common behaviors in memory usage, exception handling and security.
Language Independence: Common language infrastructure specifications (CLI) allow for the exchange of data types between two programs developed in different languages.
Base Class Library: A library of code for most common functions--used by programmers to avoid repetitive rewriting of code.
Ease of Deployment: There are tools to ensure the ease of installing programs without interfering with previously installed applications.
Security: Programs developed in .NET are based on a common security model.
Components of .NET Framework
Here are the major components of the .Net framework.
Common Language Runtime (CLR)
Base Class Library (BCL)
Framework Class Library (FCL)
Common Type System (CTS)
Common Language Specification (CLS)
1. Common Language Runtime (CLR)
Common Language Runtime (CLR) is an interoperable runtime environment from the .Net framework which provides an environment to run all .Net programs. It helps in converting the source code to native code; It is a two-step process where the source code is first converted to a Microsoft Intermediate Language (MSIL) and then CLR uses JIT compilers to convert MSIL code to native code. There are over 15 language compilers that convert the source code to MSIL code.
CLR takes care of exception handling, memory, and thread management. CLR contains a Garbage Collector (GC) which takes care of memory management by cleaning up out-of-scope objects from the memory.
2. Base Class Library
The base class library encapsulates a large number of common functions which can be used by the developers. They are the foundational types and act as the base for all the .NET class libraries. App-specific libraries will be built on top of BCL.
They are developed with general implementations with a high-performance policy such as low-latency, high throughput, low-memory, and low-CPU usage. Features such as ADO.Net, XML handling, Threading, Security, Diagnosis, etc., are part of the base class library.
BCL is divided into 2 parts. One is a User-defined class library (which consists of a collection of parts of an application such as dll or exe file) and another is a predefined class library that consists of namespaces.
3. Framework Class Library (FCL)
Framework Class Library is a collection of classes, interfaces, namespace, data, and value types that are used for .Net applications. It is a superset of the base class library. It consists of in-built classes that support base and user-defined data types, input/output and streaming operations, web-client, server, and Windows based GUI applications creation and underlying communication systems.
The functionality of FCL can be broadly classified into three categories.
Wrapper Around OS functionality, and
Utility features include different collection classes. For example list, stack, queue, dictionary, etc. It also includes regular expression (regex) classes.
Wrapper around OS functionality includes classes that act as a wrapper to communicate with OS components such as file system, network features, and console application operations.
Frameworks include the technology used to develop ASP.NET web application, Windows Presentation Foundation (WPF), etc.,
4. Common Type System
The common type system is responsible for declaring, using, and managing types in the CLR. They play a vital role in cross-language integration. CTS ensures type safety, high-performance code execution, and defining rules that language must follow. Also, it offers primitive data types (boolean, byte, int32, char, uInt64).
All types in .Net are either value and reference types. Value types are data types with the objects directly representing the object’s actual value. On the other hand, reference types are objects that are represented by a reference to the object’s actual value. When a reference type is assigned to a variable, the original value of the object is getting assigned and no copy is made, unlike value types.
Value types are stored in the stack while reference types are stored in the managed heap.
There are 5 categories of type in .Net
Out of these, Classes and delegates are reference types. Structures and Enumerations are value types. An interface can be either value or reference type based on the class or structure that implements it.
5. Common Language Specification
Common Language Specification (CLS) is a subset of CLR. CLS comes in handy when codes of different programming languages based on the .Net framework are referred to in the same solution. There are many programming languages that have .Net as the background. Example, C#, F#, VB .Net, etc., And every programming language has its own syntax.
Consider a situation — In C#, we create two methods, one with Pascal casing and another one with camel casing. This code will be accepted. And in the same solution, if a VB. Net project is added and when it refers to the C# project, then it would throw errors.
To avoid these, at the compilation time, when the source code is converted to MSIL, the code has to comply with the common language specifications. If they do not, then a non-compliant compiler warning will be displayed which serves as a heads up to the developer.
Advantages of .NET Framework
1. Object-Oriented Programming (OOP)
One of the best things about .NET is that it is based on object-oriented programming (OOP). This is where the software is divided into smaller chunks, which then allows developers to work on them one at a time. Once the work on one part is done, they can move on to the next. When all the smaller pieces are complete, they can then be combined and managed more effectively.
2. Great Caching System
The simplicity of the caching system of .NET makes it reliable and easy to come temporarily store data. What’s more, it allows for the cache implementation to be customized, so developers can improve performance and scale as needed.
3. Visual Studio
.NET comes with the Visual Studio Integrated Development Environment (IDE). This tool allows developers to create applications without much fuss, as well as debug and publish them across multiple platforms and OS.
4. Cross-Platform Development
Although it was not when it was first launched, .NET has since become a cross-platform implementation that can be used to develop applications on multiple OS. For developers who prefer different programming languages, having them work will not be an issue. It is also open-source, which means that developers can tinker with it as much as they want.
5. Easy to Deploy and Maintain
The deployment of applications and their maintenance could not be done easier with the help of the .NET family of development tools. Thanks to its modular design, developers can literally take apart applications and then fix the ones that need fixing or updated and then put them back together. There is no need to wade through oceans of scripts just to find that one line that is making everything go haywire.
6. Universal .NET Standard
Thanks to the .NET Standard that was introduced back in 2016, developing applications using the .NET family means not having to redevelop the same applications for each new platform. This is thanks to the huge class library that is composed of practically of the functions that developers could ask for. This helps in such projects that require rendering graphics and interacting with databases. Manipulating XML documents has become a lot easier, as well.
7. Large community
The .NET has managed to build a huge community ever since it was launched, but it was not until it was made open-source by Microsoft that it really exploded. Thanks to the sheer ubiquity of the company’s products and services, the development framework already had a huge influence. Now, it’s even bigger.
8. Automatic monitoring in ASP.NET
One of the worst things that can happen during the coding process is when something goes wrong and you don’t even notice or notice too late. Thanks to the automatic monitoring feature of ASP.NET, you will be notified if something like an infinite loop pops. The same goes for memory leaks or a bunch of other issues.
Disadvantages of .NET Framework
1. Object-Relational Support Issues
What makes the object-relational programming (OOP) of .NET is something called the Entity Framework. There have been concerns regarding the flexibility of this framework with regard to new database designs in that it may not support the emerging ones.
2. Vendor lock-in
It’s an unfortunate fact that since the .NET bundle is under Microsoft, any changes or limitations that the company might impose will inevitably impact projects done under the framework. This means that developers will have less control
3. Licensing cost
Many aspects of the .NET family will cost money in terms of licensing fees and they can stack up. The more demanding the project, the more expensive it can get. For example, Visual Studio can cost a whopping $539.00 for one year.
4. Stability Issues for New Releases
Finally, whenever the company decides to launch new features or make new updates, documents and support can be lacking. This can jeopardize the stability of development projects.
The Tech Platform