Throughout web development history, .NET has gained a level of compatibility from different versions across implementations of .NET. .NET 5 and advanced versions are considered as a new technology in comparison to the .NET framework. However, several factors limit the ability of the implementation of the .NET to diverge from the .NET framework.
.NET standard library projects allow developers to create libraries and to focus on common APIs shared by the .NET framework and .NET 5. They expect that libraries used in a .NET application should behave the same as the library used in a .NET framework application.
Along with the compatibility, developers expect a level of compatibility across different versions of a given implementation of .NET. The code written for an earlier version of the .NET core should run smoothly on .NET and advanced versions.
.NET Frameworks and its Benefits
.NET is a software framework developed by Microsoft and is run on Microsoft windows. It consists of a large class library called Framework class library and provides language interoperability across different programming languages. FCL provides data access, cryptography, and network communications.
.NET includes an implementation of CLI foundational standard libraries. The FCL is organized in a hierarchy of namespaces. .NET framework provides means to access functions implemented in older programs that execute outside the .NET environment.
It has its security mechanism with two features - Code Access Security (CAS) and validation and verification. It is based on evidence-based on a specific assembly. The evidence is the source of assembly.
CLR frees the developer from the burden of managing memory. .NET Framework includes a garbage collector which runs on a separate thread and enumerates all the unstable objects. It is a garbage collector and runs only when a certain amount of memory has been used. The garbage collector used by the .NET framework is generational. When the application is launched, the .NET Framework compiles the CIL code into executable code using its compiler.
It is a unified platform and is the unified successor of different .NET variations, including .NET Standard, .NET Core, and more. It is the next version of the .NET core 3.1 and determines the end of the .NET framework and other variants that cause headaches to the .NET developers. It offers a set of APIs that align with multiple runtime implementations. .NET comes equipped with C# 9, the new version of the .NET platform. C# also adds the init accessor to define properties that can be initialized.
Global Assembly Cache
The theory behind the Global Assembly Cache (GAC) was that the .NET libraries could be stored in a single and centralized location.
Unlike Component Object Models (COM), it could store different versions of each library. Additionally, the need to obtain a code and the increased security that come with Windows Vista.
.NET remoting was inspired by Java Remoting and DCOM. The basic idea was one application could use an object to manipulate a real object running inside other applications. It technically worked but was not popular due to difficulty in using it correctly.
.NET core never implemented the .NET remoting APIs. It only had inoperable placeholders and was being marked as obsolete with the intention that they will be removed.
Code Access Security
Code Access Security is another .NET framework technology whose APIs were copied into the .NET Core with the implementation. Back in the .NET framework era, different applications would be hosted in the Single Internet Information Server. To limit the amount of damage possible, CAS was created.
The idea was that the APIs would be flagged with attributes indicating the risk. Another use of CAS was for browser-hosted applications. But like earlier technologies, it was hard to implement CAS correctly. Later, several browser-hosted applications were banned, and trust levels were ignored for IIS.
Thread abort was never implemented for .NET Core. By the time ASP.NET was created, CancellationToken was accepted as an alternative to Thread. Abort. .NET core has expanded its capabilities. No other application framework needed Thread. Abort, so it continued to use PlatformNotSupportedException.
Modifications to Public Contract
The majority of changes are disallowed since they violate backward compatibility that was developed with the earlier version of an API to execute without recompilation. Several symbols are used to remove and add an interface from a type when the interface is implemented by a base type.
New Target Frameworks in .NET5
Before .NET 5 every .NET runtime had different sets of TFMs. For example, net48 for the .NET framework 4.8. With .NET 5, net 5.0 remains as the TFM. The prefix instead of the .NET Core app is used as this is the only version of .NET that is still under development. The .NET 5.0 TFM is also the successor of the .NET standard TFMs. With a single .NET running time, there is no need for different and new versions of the .NET standard that define the subset of APIs available across different runtimes.
The regular .NET Core libraries are consumed by application models. The models that target an operating system provide additional APIs in addition to the full .NET 5 API set. The TFMs consist of a prefix that defines the set of APIs and postfix indicating the APIs additional target.
Single File Applications
In .NET 5, a type of publishing was introduced that outputs the complete application. The feature is supported on Linux. On Windows and macOS, the executable file needs extra files at runtime. There is an option to add extra files in a single distributable file, but they can be extracted as an individual file when the application starts.
Performance Improvements in .NET 5
The tiered compilation is the approach that allows faster initial compilation by not performing different optimizations the first time a method is compiled. Methods are used frequently and then are recompiled with higher quality by using additional customizations. These methods are identified by call counting.
.NET is a cross and open-source platform and uses different languages to build websites and games. It is cross-platform and supports desktop apps, services, and more on Windows.