Which is best Dot Net or Java

Comparison between .NET Core / 5 and higher and .NET Framework for server apps

When building server-side apps, two .NET implementations are supported:

  • .NET Framework
  • .NET Core / 5 and higher (includes .NET Core, .NET 5 and higher)

Both implementations share many components and some of the code is the same. However, there are also fundamental differences. Therefore, your decision will be based on what you want to achieve. This article provides instructions on which variant should be used in which cases.

Use .NET Core / 5 and higher for your server application in the following cases:

  • There are cross-platform requirements.
  • You want to create microservices.
  • You are using Docker containers.
  • You are dependent on scalable high-performance systems.
  • You need different parallel .NET versions for each application.

Use the .NET Framework for your server application in the following cases:

  • You are currently using the .NET Framework for your application (an extension is recommended instead of a migration).
  • Your app uses third-party .NET libraries or NuGet packages that are not available for .NET Core / 5 and above.
  • Your app uses .NET Framework technologies that are not available for .NET Core / 5 and above.
  • Your app is using a platform that does not support .NET Core / 5 and higher.

When should .NET Core / 5 and higher be used?

The following sections explain the reasons for choosing .NET Core / 5 and above in more detail.

Cross-platform requirements

If your application (web / service) needs to run on multiple platforms (Windows, Linux and macOS), you should use .NET Core / 5 and higher.

.NET Core / 5 and higher supports the aforementioned operating systems for your development workstation. Visual Studio provides an integrated development environment (IDE) for Windows and macOS. You can also use Visual Studio Code, which can run on macOS, Linux, and Windows. Visual Studio Code supports .NET Core / 5 and higher, including IntelliSense and debugging. Most third-party editors such as Sublime, Emacs, and VI can be used with .NET Core / 5 and higher. These third-party editors obtain IntelliSense using OmniSharp. Since you can use the .NET CLI directly and it is available for all supported platforms, a code editor is not required.

Microservice architecture

A cross-service combination of technologies is possible through a microservice architecture. This combination of technologies enables .NET Core / 5 and higher to be successively integrated with new microservices that can be used with other microservices or services. For example, you can combine microservices or services that were developed with the .NET Framework, Java, Ruby or another monolithic technology.

There are many different infrastructure platforms available. Azure Service Fabric is designed for large and complex microservice systems. Azure App Service is a great choice for stateless microservices. Alternatives to microservices based on Docker are - as explained in the section Containers - compatible with all types of microservice implementations. All of these platforms support .NET Core / 5 and higher, making them ideal for hosting your microservices.

For more information on microservices architecture, see NET Microservices: Architecture for Containerized .NET Applications.

Container

Containers are often used in conjunction with a microservice architecture. Containers can also be used to containerize web apps and services that follow an architectural pattern. .NET Framework can also be used for Windows containers, but .NET Core / 5 and higher is better suited for this due to its modularity and simple structure. The image size of a container created and deployed with .NET Core / 5 and higher is much smaller than with the .NET Framework. Due to the cross-platform structure, you can provide server apps, for example, in Linux Docker containers.

Docker containers can be hosted in your Linux or Windows infrastructure or in a cloud service such as Azure Kubernetes Service. Azure Kubernetes Service can manage, orchestrate and scale container-based applications in the cloud.

High performance systems and scalable systems

If you need the best possible performance and scalability for your system, .NET Core / 5 and higher and ASP.NET Core are best. The powerful server runtime for Windows Server and Linux makes ASP.NET Core an extremely powerful web framework for TechEmpower benchmarks.

Performance and scalability are especially relevant for microservice architectures that can run hundreds of microservices. With ASP.NET Core, systems are executed with a significantly lower number of servers or VMs. The lower number of servers or VMs saves costs for infrastructure and hosting.

Different parallel .NET versions per application level

For installing applications with dependencies on different .NET versions, .NET Core / 5 and higher is recommended. This .NET implementation supports parallel installations of different versions of the .NET runtime on the same computer. The parallel installation allows multiple services to run on the same server, each with its own version of .NET Core / 5 and higher. It also lowers risks and saves costs for application updates and IT processes.

A parallel installation is not possible with the .NET Framework. This is a Windows component and there can only be one version on a computer at a time. Each version of the .NET Framework replaces the previous version. If you install a new app that targets a newer version of the .NET Framework, you can break existing apps running on the computer because the previous version has been replaced.

When should the .NET Framework be used?

.NET Core / 5 and higher offers significant advantages for new applications and application patterns. However, the .NET Framework remains the first choice for many scenarios. As a result, .NET Core / 5 and higher will not replace the .NET Framework for all server applications.

Existing .NET Framework applications

In most cases, you don't need to migrate your existing applications to .NET Core / 5 and higher. Instead, it is recommended to use .NET Core / 5 and above if you want to extend an existing application, e.g. B. by writing a new web service in ASP.NET Core.

Third party libraries or NuGet packages not available for .NET Core / 5 and above

With .NET Standard, you can share code in all .NET implementations including .NET Core / 5 and higher. For .NET Standard 2.0, a compatibility mode enables projects in .NET Standard and .NET Core / 5 and higher to reference .NET Framework libraries. For more information, see Support for .NET Framework Libraries.

You only need to use the .NET Framework if the libraries or NuGet packages use technology not available in .NET Standard or .NET Core / 5 and later.

.NET Framework technologies not available for .NET Core / 5 and higher

Some .NET Framework technologies are not available in .NET Core / 5 and higher. The following is a list of the most common technologies that .NET Core / 5 and higher do not support:

  • ASP.NET Web Forms Applications: ASP.NET Web Forms are only available in the .NET Framework. ASP.NET Core cannot be used for ASP.NET Web Forms.

  • ASP.NET Web Pages Applications: ASP.NET Web Pages are not included in ASP.NET Core.

  • Implementation of WCF services. Even if WCF services can be used via a WCF client library from .NET Core / 5 and higher, the WCF server implementation is currently only available in the .NET Framework.

  • Workflow-related services: Windows Workflow Foundation (WF), the workflow services (WCF + WF in a single service) and WCF Data Services (formerly “ADO.NET Data Services”) are only available in the .NET Framework.

  • Language support: Visual Basic and F # are currently supported in .NET Core / 5 and higher, but not for all project types. For a list of supported project templates, see the section Template options for dotnet new.

For more information, see .NET Framework Technologies Not Available in .NET 5.

Platforms that do not support .NET Core / 5 and higher

Some Microsoft or third-party platforms do not support .NET Core / 5 and higher. Some Azure services provide an SDK that is not yet available for use in .NET Core / 5 and higher. In such cases, you can use the appropriate REST API instead of the client SDK.

See also