Skip to content

.NET Framework vs .NET Core

"What is the difference between .NET Framework and .NET Core?" is one of the most common questions in any .NET interview, for freshers and experienced developers alike. Interviewers want to know whether you understand why Microsoft created a new platform, what changed, and which one you would choose for a project. This article explains both platforms in simple words, compares them point by point, and lists the advantages and disadvantages of each.

  • .NET Framework: the original, Windows-only platform, released in 2002. Its last version is 4.8.1. It gets security and bug fixes, but no new features.
  • .NET Core: the modern, cross-platform and open-source rewrite, released in 2016. From version 5 it is simply called .NET (.NET 5, 6, 7, 8 ...). This is where all new development happens.

What is .NET Framework?

.NET Framework is the platform Microsoft released in 2002 to build applications for Windows. It includes the Common Language Runtime (CLR) that runs your code, a large class library, and application models such as:

  • ASP.NET Web Forms and ASP.NET MVC / Web API for web applications (built on System.Web and IIS)
  • Windows Forms and WPF for desktop applications
  • WCF for SOAP services, and Windows Workflow Foundation

It is installed once per machine and is part of Windows. All .NET Framework 4.x versions replace each other "in place": installing 4.8 upgrades 4.6 for every application on that machine.

Thousands of enterprise applications still run on it, and Microsoft continues to support .NET Framework 4.8.1 as part of Windows. But it is finished: no new C# features, APIs or performance improvements are added.

What is .NET Core?

By around 2014, .NET Framework had become a problem. It only ran on Windows while the cloud was moving to Linux and containers, it was large and tied to the operating system, and it could not be improved quickly without risking millions of existing applications.

So Microsoft built a new platform from scratch: .NET Core, released in 2016. Its goals were:

  • run on Windows, Linux and macOS,
  • be open source (developed publicly on GitHub),
  • be fast and lightweight, suitable for cloud, microservices and containers,
  • allow several versions side by side on the same machine.

The naming confusion: .NET Core vs .NET 5+

.NET Core had versions 1.0, 2.0, 2.1, 2.2, 3.0 and 3.1. The next version skipped "4" (to avoid confusion with .NET Framework 4.x) and dropped the word "Core": it was released in 2020 as .NET 5. Since then there is one modern .NET, with a new major version every November:

VersionReleasedNote
.NET Core 1.02016First cross-platform version
.NET Core 2.0 / 2.12017 / 2018Many more APIs, .NET Standard 2.0
.NET Core 3.0 / 3.12019WinForms and WPF support (Windows only), endpoint routing
.NET 52020"Core" dropped from the name
.NET 62021LTS, minimal hosting model, minimal APIs
.NET 72022STS
.NET 82023LTS
.NET 92024STS
.NET 102025LTS

LTS (Long Term Support, even version numbers) releases are supported for three years. STS (Standard Term Support, odd numbers) releases have a shorter support period. Most companies choose LTS versions for production.

In interviews, ".NET Core" usually means "the modern .NET": .NET Core 1.0 to 3.1 and .NET 5 and later. In this article we use ".NET Core" in that sense.

Key differences at a glance

Point.NET Framework.NET Core (.NET 5+)
First release20022016
Latest version4.8.1 (final)A new version every year
Operating systemsWindows onlyWindows, Linux, macOS
Open sourceReference source only; not developed in the openFully open source (MIT licence), developed on GitHub
New featuresNone (maintenance only)Yes, every release
InstallationOne machine-wide version, part of WindowsMany versions side by side, or bundled with the app (self-contained)
PerformanceGoodMuch faster; performance is improved in every release
Web frameworkASP.NET (Web Forms, MVC 5, Web API 2) on System.WebASP.NET Core: MVC, Web API, Razor Pages, Blazor, minimal APIs
Web hostingIIS on WindowsKestrel, behind IIS, Nginx or Apache; Docker; any cloud
Dependency injectionNot built in (needs Unity, Autofac, Ninject...)Built in
Configurationweb.config / app.config (XML)appsettings.json, environment variables, secrets, Key Vault...
MVC and Web APISeparate frameworks with separate base classesOne unified framework (Controller / ControllerBase)
Desktop appsWinForms, WPFWinForms, WPF (still Windows only), .NET MAUI
Containers / microservicesOnly large Windows containersSmall Linux containers, ideal for microservices
Command-line toolsMostly Visual Studiodotnet CLI (new, build, run, test, publish) on any OS
Project fileLong, old-style .csprojShort SDK-style .csproj

The differences explained

1. Cross-platform

A .NET Framework application runs only on Windows. A .NET Core application can be built on Windows and deployed to a Linux server or a Linux Docker container. This matters a lot in the cloud, where Linux servers and containers are cheaper and more common.

2. Installation and deployment

With .NET Framework there is one version per machine, shared by every application. Upgrading the framework for one application upgrades it for all of them, which is risky on a shared server.

With .NET Core, each application chooses its own version:

  • Framework-dependent: the app uses a .NET runtime installed on the machine, and several runtime versions can be installed side by side.
  • Self-contained: the runtime is copied with the application, so nothing needs to be installed on the server.
  • Single-file and Native AOT publishing (.NET 7+): the app becomes one executable that starts very quickly.
dotnet publish -c Release -r linux-x64 --self-contained true

3. Performance

.NET Core was designed for performance, and every release brings more improvements: a faster JIT compiler with tiered compilation, Span<T> and Memory<T> for working with data without extra memory allocations, a faster JSON serializer (System.Text.Json), and the high-performance Kestrel web server. In independent web benchmarks, ASP.NET Core is among the fastest mainstream web frameworks. The same hardware can handle far more requests than an ASP.NET application on .NET Framework.

4. A modern, unified web framework

In .NET Framework, ASP.NET MVC and ASP.NET Web API were separate frameworks with different base classes, filters and routing. ASP.NET Core merged them into one framework, removed the dependency on System.Web and IIS, and added built-in dependency injection, a middleware pipeline, a new configuration system and built-in logging.

// ASP.NET Core: startup in a few lines (Program.cs)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();                     // MVC + Web API together
builder.Services.AddScoped<IOrderService, OrderService>();      // built-in dependency injection

var app = builder.Build();
app.UseStaticFiles();
app.MapDefaultControllerRoute();
app.Run();

5. Open source and community

.NET Core, ASP.NET Core, Entity Framework Core and the C# compiler are developed in public on GitHub under the MIT licence. Anyone can read the code, report issues and contribute fixes, and the community can follow (and influence) what is planned for the next version.

6. Release cycle

.NET Framework changed slowly and is now frozen. .NET Core ships a new version every year, with predictable support dates. That means continuous improvements, but also that teams must upgrade regularly to stay on a supported version.

What is NOT available in .NET Core

Some older technologies were not brought to .NET Core. This is the main reason many old applications still run on .NET Framework:

.NET Framework technologyStatus in .NET CoreAlternative
ASP.NET Web FormsNot availableASP.NET Core MVC, Razor Pages or Blazor (requires a rewrite of the UI)
WCF server (hosting SOAP services)Not available from MicrosoftgRPC, ASP.NET Core Web API, or the community project CoreWCF
Windows Workflow Foundation (WF)Not availableCommunity port (CoreWF) or other workflow engines
.NET RemotingNot availablegRPC, REST APIs, named pipes
AppDomains (creating more than one)Not supportedSeparate processes, or AssemblyLoadContext for loading assemblies
Code Access Security (CAS)Not supportedOperating-system security, containers
WinForms and WPFAvailable from .NET Core 3.0Still Windows only

Advantages and disadvantages of .NET Framework

Advantages

  • Very stable and mature: more than 20 years of real-world use and bug fixing.
  • Supported as part of Windows: security fixes continue, and 4.8.1 is already installed on modern Windows versions.
  • Supports older technologies that .NET Core does not: Web Forms, WCF server, Workflow Foundation, .NET Remoting.
  • Huge amount of existing code, documentation and Q&A for older application types.
  • No forced upgrades: because the framework doesn't change, an application can run for years without upgrade work.

Disadvantages

  • Windows only: no Linux servers, no small Linux containers.
  • No new features: no new runtime APIs, performance improvements or modern ASP.NET features. Newer C# language versions are not officially supported.
  • Slower and uses more memory than .NET Core for the same work.
  • One machine-wide version: upgrading affects every application on the server.
  • Tied to IIS for web applications, with a heavier System.Web pipeline.
  • No built-in dependency injection or modern configuration system.
  • Shrinking ecosystem: many new NuGet packages and libraries target only modern .NET, and developers prefer to work on modern .NET.

Advantages and disadvantages of .NET Core

Advantages

  • Cross-platform: develop and run on Windows, Linux and macOS.
  • High performance: faster request handling and lower memory use, which means lower hosting costs.
  • Cloud and container friendly: small Docker images, fast start-up, ideal for microservices and Kubernetes.
  • Side-by-side and self-contained deployment: each app chooses its own runtime version, with no conflicts.
  • Modern architecture: built-in dependency injection, middleware, configuration, logging and health checks.
  • Unified framework: MVC, Web API, Razor Pages, Blazor, gRPC, SignalR and minimal APIs on one platform.
  • Open source with an active community and a transparent roadmap.
  • Continuous improvement: new C# features, APIs and performance gains every year.
  • Modern tooling: the dotnet CLI, VS Code, short SDK-style project files and easy CI/CD.

Disadvantages

  • Regular upgrades required: each version is supported for a limited time, so teams must upgrade every one to three years.
  • Some old technologies are missing: Web Forms, WCF server and Workflow Foundation applications need rewriting, not just recompiling.
  • Migration effort: moving a large .NET Framework application can take months, especially if it uses System.Web, Web Forms or old third-party components.
  • Desktop is still Windows-only: WinForms and WPF run on modern .NET, but only on Windows.
  • Learning curve: developers used to web.config, Global.asax and Web Forms must learn middleware, dependency injection and the new hosting model.
  • Some old libraries are not available: a few legacy or Windows-specific NuGet packages were never updated for modern .NET.

Which one should you choose?

SituationRecommended choice
Any new application: web, API, microservice, console, cloud.NET (Core), latest LTS version
Application must run on Linux, in Docker or on Kubernetes.NET (Core)
High performance or high traffic is important.NET (Core)
Existing, stable .NET Framework app that rarely changesKeep it on .NET Framework 4.8.1; plan a migration only if there is a business reason
App built on Web Forms, WCF server or Workflow FoundationStay on .NET Framework for now, or plan a rewrite of those parts
A library that must be used by both old and new applicationsTarget .NET Standard 2.0, which both platforms can use

How companies migrate from .NET Framework to .NET Core

Large applications are usually migrated step by step, not all at once:

  1. Analyse the application: which projects, NuGet packages and APIs are used, and which are not available in modern .NET. Microsoft provides upgrade tools that report these problems and can convert project files automatically.
  2. Upgrade class libraries first: move business logic and data access to .NET Standard 2.0 or modern .NET, so they can be shared during the move.
  3. Replace unsupported technologies: System.Web code with ASP.NET Core, WCF services with Web API or gRPC (or CoreWCF), Entity Framework 6 with EF Core when ready.
  4. Migrate the web application gradually: a common approach (the "strangler fig" pattern) puts a new ASP.NET Core app in front of the old one and moves pages or endpoints over one by one.
  5. Test thoroughly and deploy, often to Linux containers once everything runs on modern .NET.

Interview questions and answers

1. What is the main difference between .NET Framework and .NET Core?

.NET Framework is the original Windows-only platform, now in maintenance mode at version 4.8.1. .NET Core is a cross-platform, open-source, high-performance rewrite that runs on Windows, Linux and macOS and receives new features every year. Since version 5 it is simply called .NET.

2. Is .NET Core the same as .NET 5, 6, 7, 8?

Yes. .NET 5 and later are the continuation of .NET Core. Microsoft skipped version 4 (to avoid confusion with .NET Framework 4.x) and dropped "Core" from the name.

3. Is .NET Framework dead?

No, but it is finished. .NET Framework 4.8.1 is still supported with security and reliability fixes as part of Windows, so existing applications are safe. But no new features will be added, so new projects should use modern .NET.

4. Can a .NET Core application run on Linux?

Yes. Console apps, ASP.NET Core web apps, APIs and background services run on Linux and macOS as well as Windows. WinForms and WPF desktop apps are the exception: they run on modern .NET but only on Windows.

5. Why is .NET Core faster than .NET Framework?

It was redesigned with performance as a goal: the fast Kestrel web server, a lighter request pipeline without System.Web, tiered JIT compilation, Span<T> to avoid memory allocations, System.Text.Json, and continuous runtime improvements in every release.

6. Which .NET Framework technologies are not supported in .NET Core?

ASP.NET Web Forms, hosting WCF services (only a WCF client is available; CoreWCF is a community alternative), Windows Workflow Foundation, .NET Remoting, multiple AppDomains and Code Access Security.

7. What is .NET Standard?

.NET Standard is a specification of APIs that all .NET implementations agree to support. A class library that targets .NET Standard 2.0 can be used by both .NET Framework (4.6.1+, ideally 4.7.2+) and .NET Core, which makes it very useful during migrations. For new libraries that only need to run on modern .NET, target a .NET version (for example net8.0) directly.

8. What is the difference between framework-dependent and self-contained deployment?

A framework-dependent app needs the .NET runtime installed on the machine and is smaller. A self-contained app includes the runtime in its output, so it runs on a machine without .NET installed, at the cost of a larger size. .NET Framework supports only the "installed on the machine" model.

9. Can ASP.NET Core run on .NET Framework?

Only old versions. ASP.NET Core 1.x and 2.x could run on .NET Framework, but from ASP.NET Core 3.0 it runs only on .NET Core / modern .NET.

10. What are LTS and STS releases?

LTS (Long Term Support) releases, the even-numbered versions such as .NET 8 and .NET 10, are supported for three years and are preferred for production. STS (Standard Term Support) releases, the odd-numbered ones, have a shorter support period and suit teams that want the newest features and upgrade often.

11. Does .NET Framework have built-in dependency injection?

No. In .NET Framework you add a third-party container such as Unity, Autofac or Ninject. ASP.NET Core has dependency injection built in and uses it everywhere.

12. You have a large .NET Framework MVC application. Would you migrate it to .NET Core?

It depends on the business value. If the application is actively developed, needs better performance, must move to Linux or the cloud, or depends on libraries that are leaving .NET Framework, then yes: migrate step by step, starting with class libraries, then moving controllers and pages gradually. If it is stable and rarely changes, keeping it on .NET Framework 4.8.1 is a reasonable choice. A good answer weighs cost, risk and benefit instead of saying "always migrate".

Summary

  • .NET Framework (2002) is Windows-only, mature and supported, but receives no new features; its final version is 4.8.1.
  • .NET Core (2016), called just ".NET" from version 5, is cross-platform, open source, faster and improved every year.
  • .NET Core brings built-in dependency injection, unified MVC and Web API, Kestrel, side-by-side and self-contained deployment, and container support.
  • Web Forms, WCF server, Workflow Foundation, .NET Remoting and AppDomains are not available in .NET Core.
  • .NET Framework's strength is stability for existing apps; .NET Core's cost is regular upgrades and migration effort.
  • Choose modern .NET (latest LTS) for every new project; keep or gradually migrate existing .NET Framework applications.