.NET Framework is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes an extensive class library called Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment (in contrast to a hardware environment) named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides security, memory management, and exception handling. As such, computer code written using .NET Framework is called “managed code.” FCL and CLR together constitute the .NET Framework.
FCL provides the user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. Programmers produce software by combining their source code with .NET Framework and other libraries. The Framework is for most new applications created for the Windows platform exclusively.
Microsoft began developing .NET Framework in the late 1990s, originally under the name of Next Generation Windows Services (NGWS), as part of the .NET strategy. By late 2000, Microsoft released the first beta versions of .NET 1.0.
On March 16th, 2020, Microsoft released the first preview of .NET 5, which is scheduled for GA (General Availability) this year in November.
.NET Core is a general-purpose framework to build software applications for Windows, Linux, and macOS. .NET Core is the most versatile Framework. Using .Net Core, you can build a variety of applications, including Web applications, Mobile apps, Desktop applications, Cloud services, Microservices, APIs, Games, and IoT applications. .NET Core is not limited to a single programming language and supports C#, VB.NET, F#, XAML, and TypeScript. These programming languages are open source and managed by independent communities.
In other words, .Net Core is a subset of the .Net Framework. In more precise terms, a forked-out version of the .Net Framework.
.Net Core has some fundamental changes in the way it operates. First and foremost, it is more modularized. It helps you create applications with only the libraries you need and no extra baggage. Second, it is cross-platform, and it makes it the choice of development platform of the future.
Differences between .Net Core and .Net Framework
The downside of using the .NET Framework is that it allows developers to build apps for only the Windows platform.
.NET Core is cross-platform compatible. You can easily combine it with a range of operating systems, such as Linux, Windows, and mac. .NET Core supports UWP (Universal Windows Platform)and ASP.NET Core only. UWP is used to build Windows 10 mobile applications. ASP.NET Core is used to build browser-based web applications.
By taking advantage of cross-platform compatibility, developers can quickly build cross-platform apps. It also makes it easier to port the existing apps from one platform to another.
.Net Core is an open-source Development Platform designed and maintained by Microsoft and the .Net community. It is one of the leading benefits of .Net Core for developers.
Microsoft released .NET Core as an open-source framework. It does not cost you to develop apps of any sizes with .NET Core (as it does not need you to pay any licensing fees).
.NET Core 3.0 is fast. Compared to the .NET Framework and .NET Core 2.2 and previous versions, .NET Core 3.0 is very agile. It is much faster than other server-side frameworks such as Java Servlet and Node.js.
.Net Core or .Net Framework
If you have to choose between the .NET Framework and .NET Core, consider the following:
Use .NET Core when:
- You have cross-platform needs.
- You’re targeting microservices.
- You’re using Docker containers.
- You need high-performance and scalable systems.
- You need side-by-side .NET versions per application.
Use .NET Framework for your application when:
- Your app currently uses .NET Framework (recommendation is to extend instead of migrating).
- Your app uses third-party .NET libraries or NuGet packages not available for .NET Core.
- Your app uses .NET technologies that aren’t available for .NET Core.
- Your app uses a platform that doesn’t support .NET Core. Windows, macOS, and Linux support .NET Core.
The figure below demonstrates how Microsoft explains these technologies: