.NET Core vs .NET Framework : when do you choose which framework?
Developers today face many different challenges when it comes to choosing a development framework. Developers who want to develop with Microsoft technology typically have four choices: .NET, .NET Core, ASP.NET, and ASP.NET Core. In this article, we explain the differences and similarities between .NET Core vs .NET Framework. After reading, you will know which framework is suitable for your type of application and which hosting options are available.
Table of Content
What is a development framework?
Before we dive further into .NET Core vs .NET Framework, it is important to first broadly define the concept of development frameworks.
A development framework is a conceptual structure that is used for software development, in particular, to develop software more efficiently and faster.
Development frameworks come in two different types: front-end frameworks and back-end frameworks. For example, front-end frameworks are used to shape stylistic elements and functions in an application. Back-end frameworks are used to talk to the underlying systems of the software architecture, for example, databases. Development frameworks are an essential part of developing modern software.
When we talk about software development, you can interpret it as broadly as possible. A web application, such as an interactive website, is software. But also that to-do application that you installed locally. You can assume that both that web application and that to-do application have been developed using a framework.
There are many different frameworks, each with its own application. For example, there are frameworks that are specifically aimed at developing web applications and there are frameworks that are specifically aimed at building local applications, for example for your Windows or macOS operating system. Each framework is supported with its own programming language (eg C# or Java) or multiple programming languages.
What is the .NET Framework?
.NET (pronounced: dotnet) is a framework that was developed by Microsoft in 2002. The reason for the development of the framework had to do with a conflict that Microsoft had with Sun Microsystems, the developer of Java, another known development framework. In addition, Microsoft wanted to develop a framework that made it easier to develop applications for the web.
The .NET Framework supported the then slightly outdated Visual Basic (a programming language for local apps) and the then newer C# (also a programming language) so that there was a framework with which you can build both desktop and web applications. Since then, the framework has grown tremendously, especially because the web has also grown and applications are developed in a different way.
Video: what is .NET?
We won’t go into great detail about certain architecture concepts or the syntax of the framework in this blog post, but if you find that interesting, we recommend the 101 videos about .NET
ASP.NET
One of the first extensions on .NET was ASP.NET, the part of the .NET framework that was especially suitable for developing dynamic websites and web applications. ASP stands for Active Server Page, which indicates that it is a server-side scripting programming language. With server-side scripting, dynamic data can be retrieved from a database, which then presents the information to the web visitor via the browser. For example, another popular server-side scripting language is PHP.
You can best think of ASP.NET as an extension of normal .NET, with built-in functions that make it possible to build websites.
Evolution in the .NET world
Initially, .NET and ASP.NET were only suitable for developers using Windows operating systems. But because the IT world and Microsoft are not standing still, two additions were built to the existing frameworks: .NET Core and ASP.NET Core. These two frameworks can mainly be seen as a response to a series of developments within the tech world. Below are some of them:
Microsoft’s New Direction
Microsoft has changed a lot as a company in recent years. With the arrival of director Satya Nadella and a focus on cloud computing with Azure, among other things, the company has also started to support much more open-source standards. While .NET and ASP.NET only work on Windows systems, the Core variants of these frameworks can be used cross-platform, and therefore also on Linux and macOS systems.
New programming languages and tools
When .NET and ASP.NET started, there were more mind programming languages for the web than there are today. A good example of this is JavaScript and the ecosystem around it with front-end libraries such as JQuery. It wasn’t nearly as advanced at the time as it is today, and in many ways, it is the new standard for developing server-side web applications.
New deployment methods
The way web applications are delivered today is very different from the early days of .NET and ASP.NET. Techniques such as Docker containers, developing in microservices, or working in a DevOps way including integrated continuous integration and continuous deployment (CI/CD) pipelines did not yet exist. Delivering applications today has become a lot more complex, but also a lot more efficient.
Cloud computing
The term cloud computing was not nearly as well known 20 years ago as it is today. Major players like Amazon Web Services (started in 2006) or Microsoft Azure (started in 2010) did not yet exist. It opened doors for many developers to develop new kinds of applications. Not only web applications, but also applications for the Internet of Things, gaming, machine learning, and mobile applications were delivered faster and on a larger scale with the help of the public cloud.
The above developments have also contributed to an evolution in the .NET Framework: namely for .NET Core, ASP.NET Core, and Xamarin/Mono. In the following paragraphs, we dive into those newer frameworks and what developers use them for. Xamarin/Mono is a framework specifically for mobile applications. We will not go further into this in this article.
.NET Core and ASP.NET Core
What is .NET Core?
.NET Core is the direct sequel to the .NET Framework and is similar in many ways to its predecessor. As the .NET framework, .NET Core is an open-source development platform (the programming language + the libraries) for developing various types of software. An important difference is that the original .NET can only work on Windows. .NET Core, on the other hand, is cross-platform, meaning it can also run on Linux and macOS systems. It even works on a Raspberry Pi.
With .NET Core, you can develop applications such as web applications, desktop applications, microservices, and Internet of Things applications.
ASP.NET Core
Just like regular ASP.NET, ASP.NET Core can be seen as an extension to .NET, but specifically for creating dynamic websites and web applications. For example, with Razor, syntax based on C#, it is possible to build dynamic web pages. The framework is also packed out-of-the-box with extensive authorization options for, for example, multi-factor authentication or external authentication with websites such as Twitter and Google.
For the front-end side of ASP.NET, it is also possible to integrate on popular Javascript libraries. In fact, some front-end libraries and frameworks are already standard in ASP.NET Core, such as the popular CSS framework Bootstrap and Javascript library jQuery.
ASP.NET Core does not need to be installed separately if you are already using .NET Core. It is built in as standard.
When do you use the frameworks?
The above may seem like a pointless question, because it’s best to always go for the latest framework, right? In that case, .NET Core would be the best framework for developing new applications.
However, scenarios can be envisaged when the .NET framework is a better fit, for example, because the .NET framework is very stable and has a very strong community.
Microsoft itself also has some tips when you can use .NET and when you can use .NET Core:
You use .NET Core if you:
• Have an application that needs to work cross-platform
• Want to work with microservices
• Use Docker containers or Kubernetes for your application
• Require high performance and scalable systems
• Need side-by-side .NET versions per application
.NET Framework you use if you:
• Already have an application that uses the .NET Framework (Microsoft recommends extending this instead of migrating)
• Application uses third-party .NET libraries, packages or other technology not yet available for .NET Core
• Application does not need to run on operating systems other than Microsoft Windows systems.
.NET Core (web) applications and Azure
We mentioned earlier that cloud computing was a reason for Microsoft to further develop the .NET Core development platform, and that technological choice such as microservices and (Docker) containers also played a role.
Not entirely coincidentally, Microsoft has paid a lot of attention to making (ASP.NET Core via Azure, Microsoft’s cloud) available in a very accessible way. For example, from various development programs, it is quite easy to deploy the application to Azure, for example via the Azure Web Apps service. But the ASP.NET Core framework can also be used for services such as Azure Container Services (ACI) and Azure Functions. Services to containerize the application and to run on microservices.
The combination of Azure and .NET (Core) is expected to take further shape in the future. For example, an ML.NET framework has been launched that is specifically intended for machine learning applications (artificial intelligence!)
Incidentally, both a .NET application and a .NET Core application can also be hosted very well in a private cloud.
.NET Core vs. .NET Framework: The Winner
In this article, you read the biggest differences between the .NET Framework and .NET Core. But as you have also read, there is not really a winner to choose from. Both versions of the framework still have their own uses.
.NET is wonderfully stable and has a large community as a base. .NET Core is especially suitable for development teams that want to deliver their applications via Docker containers, Kubernetes, or microservices. There are plenty of scenarios to use for both frameworks, and there is still plenty to do for further development into technologies such as machine learning or artificial intelligence.
ASP.NET Core hosting at True
With our extensive experience and knowledge, we configure the ASP.NET hosting environment optimally for your project. You get the True best-practice configuration as standard, which we tailor to suit. In addition, with True, your data is always guaranteed on local disks, so that you have the shortest possible access times. This way you are assured of the best combination between configuration and hardware.