A quick guide to choose between .NET Core and .NET Framework for server apps

LinkedIn

There are two apparent approaches to go for server-side applications with .NET. These are the .NET Framework and .NET Core. They both share common components and codes between them. Yet, there are many stark differences between them, and the logic to choose either one of them depends on what you are looking for. This blog will discuss why and when a particular .NET technology is preferred over the other.

You have .NET Core in place when

  1. You need cross-platform
  2. You are focused over microservices
  3. You have Docker containers
  4. You require high-performance and scalable systems
  5. You require side-by-side .NET versions

You have .NET Framework in place when

  1. Your app already uses .NET Framework
  2.  Third-party .NET libraries or NuGet packages that are not supported by .NET Core
  3. Your app has .NET technologies that do not support .NET Core
  4. Your app has a platform that doesn’t support .NET Core 

When .NET Core is best?

The given below sections will discuss in details on why it is best to go with .NET Core

Cross-platform requisites

If the application requires to be run on multiple platforms like Windows, Linux, or Mac, you must use .NET Core. It offers complete support to all these operating systems as well as a development workstation.

Visual Studio has an Integrated Development Environment (IDE) for both Windows and macOS. The Visual Studio Code runs on macOS, Linux, and Windows, as well. It also supports .NET Core, IntelliSense, and debugging.

Third-party editors such as Sublime, Emacs, VI, and others work very well with .NET Core. These editors can get IntelliSense using Omnisharp. You may want to avoid a code editor and directly use the .NET Core CLI tools, which is compatible with all the supported platforms. 

Microservices architecture capabilities

Microservices architecture enables a mixture of technologies across the service boundary. This mixture allows for a gradual adaptation of .NET Core for new microservices that can align with other microservices or services. For e.g., you can combine microservices or services developed with .NET Framework, Java, Ruby, or other monolithic technologies. 

There are plenty of infrastructure platforms available out there. Azure Service Fabric is built for large and complex microservice systems. The Azure App Service is an excellent choice for stateless microservices. As explained in the subsequent Containers section, the Microservices alternatives based on the Docker can fit any kind of microservices approach. This makes .NET Core an ideal candidate for hosting your microservices when it comes to getting support from platforms. 

Containers compatibility

Containers are very commonly combined with microservices architecture. Containers can be applied to any web application or services that adhere to any architectural logic. The lightweight nature and modularity of .NET Core make a better choice even though the .NET Framework can be used for Windows containers. 

When you are creating and implementing a container, the image size is much smaller in the case of .NET Core than .NET Framework. Since .NET Core is cross-platform, you can use server apps in Linux Docker containers.

For e.g., the Docker containers can be hosted in Linux or Windows infrastructure or in a cloud service such as Azure Kubernetes Services. The Azure Kubernetes Service is capable of managing, orchestrating, and scale container-based applications in the cloud.

You require high-performance and scalable systems

When you are looking for the ultimate performance and scaling it up to the max, .NET Core and ASP.NET Core are the best bets. The High-performance server runtime of .NET Core on Windows Server and Linux makes it a top-notch performing web framework. 

Performance and scalability matter, especially in the case of microservices architectures, where several of microservices may be deployed. In the case of ASP.NET Core, the systems have a much lower number of servers/VM(virtual machines). This results in cost-effectiveness in infrastructure and hosting. 

You require side-by-side .NET versions 

If you want to install applications with dependencies on different versions, .NET is the ideal candidate. The .NET Core offers side-by-side installations of different .NET Core versions on the same machine. This type of setup allows running of multiple services on the same server, each of them having its own version of .NET Core. It also reduces the risks and saves budget in application budget and operational costs.

When .NET Framework is best?

.NET Core may look like the ultimate winner for new applications and app patterns. Still, the .NET Framework is chosen in many different scenarios, and it is not always being replaced by .NET Core for all server apps.

Existing .NET Framework applications

Generally, you don’t have to migrate the current application to .NET Core. In fact, it is observed that .NET Core is used to extend the current application.

Third-party .NET libraries or NuGet packages that are not supported by .NET Core

The libraries are quick to adapt to the .NET Standards. This allows for more comfortable code sharing across all .NET implementations, which includes .NET Core. With the launch of .NET Standard 2.0, this has become even more straightforward.

  • API surface is much large now
  • It also introduced a .NET Framework compatibility mode. This enables the .NET Standard/.NET Core projects to reference the .NET Framework libraries.

This means if there are libraries or NuGet packages that technologies that are not available in .NET Standard/.NET Core, the .NET Framework comes handy.

Your app has .NET technologies that don’t support .NET Core

Not all .NET Framework technologies are available in .NET Core. They might become available in the later release of .NET Core. But some of them don’t apply to the new application patterns which are relevant to .NET Core and may never become available in the future as well. The given below list talks about the technologies that are generally not found in .NET Core. 

  • The ASP.NET Web Forms are only available in the .NET Framework. ASP.NET Core can’t be used to create ASP.NET WebForms. Also, there is no plan to bring it to .NET Core.
  • ASP.NET Web pages are also not part of the ASP.NET Core.
  • WCF server implementation is exclusively available with .NET Framework. It may become available in .NET Core in the future, but it is currently not available.
  • The workflow related services like Windows Workflow Foundation, Workflow Services, and WCF Data Services are only going to be available in the .NET Framework and will never be part of the .NET Core.
  • Languages like Visual Basic and F# are not completely supported in .NET Core.

Your app has a platform that doesn’t support .NET Core

There are some Microsoft and third-party platforms that don’t support .NET Core. Also, some Azure services have SDK that is not yet available for .NET Core. However, this could be a temporary phase as Azure services use .NET Core. You may use the REST API instead of the client SDK.

Conclusion

Ace has worked on both technologies, and from our experience, we can say that these technologies are better suited for distinct specific objectives. If you are still not sure how to choose between either one of them, you can reach out to us for a no-obligation consultation call. 

Vipul Patel

Vipul Patel

Vipul is a passionate techie and loves to get involved in high pace projects which involves creating business optimized applications, business processes, and strategies to maximize business growth with a clear focus on expertise in SaaS domain. Vipul has more than 14 years of experience that cuts across various sections of web and mobile development, support, service, migration projects for Global Clients.

Vipul Patel
This entry was posted in Advanced Technologies on by .
Vipul Patel

About Vipul Patel

Vipul is a passionate techie and loves to get involved in high pace projects which involves creating business optimized applications, business processes, and strategies to maximize business growth with a clear focus on expertise in SaaS domain. Vipul has more than 14 years of experience that cuts across various sections of web and mobile development, support, service, migration projects for Global Clients.