Microsoft .NET is a free, open-source developer platform for building server applications. The platform is responsible for creating Web, mobile, desktop, game and IoT applications using several languages (C #, F # or Visual Basic), libraries and editors.
The .NET open-source community is huge. Over 25,000 developers from more than 1,700 companies outside of Microsoft contribute to the community. In addition, some of the widely popular and important technology groups such as TSG, Google, Unity, Red Hat, etc. lead the future of the .NET platform.
To build server-side applications, .NET has two supported implementations: .NET Framework and .NET Core. Both share similar components and allow developers to share code with each other, but they do have some basic differences.
The choice between .NET Core and .NET Framework however depends on the type of application to build and the platform on which it must be built. Here is a detailed comparison between the two; for creating scalable server-side applications.
.NET Framework: Presentation
The .NET Framework is a development platform for creating applications for the Web, Windows Server, Windows Phone and Microsoft Azure. The framework includes libraries for specific areas of application development, such as ASP.NET for web applications, ADO.NET for data access, Windows Communication Foundation for service-oriented applications, and Windows Presentation Foundation for applications Windows desktop.
Key features of the .NET Framework include:
- .NET Framework language compilers ensure that programs written in one language can be compiled and accessed in other languages
- A newer version of the framework can support applications developed in previous versions, without much code modification
The main components of the .NET Framework include:
- A runtime environment called Common Language Runtime (CLR). It is the virtual machine component of the .NET framework, responsible for managing the execution of .NET programs.
- The .NET Framework class library, which is a reusable set of classes, data types, and interfaces.
.NET Core: Presentation
.NET Core is a .NET foundation project that uses MIT and Apache 2 licenses. It is a versatile cross-platform development platform for creating applications for Windows, Linux and macOS. It uses the Universal Windows Platform (UWP) to create Windows applications and ASP.NET for Web applications.
Key features of the .NET Framework include:
- Can be included in existing application or Docker containers
- Have command line tools for local deployment and continuous integration
- Execute code with the same behavior on several architectures (x64, x86 and ARM)
- The languages C #, Visual Basic and F # can be used to write applications and libraries for .NET Core.
The main components of the .NET Core Framework include:
- A runtime, which includes basic services such as type system, assembly loading, garbage collector
- A set of infrastructure libraries, tools and SDK compilers and application host for launching applications
.NET Core VS .NET Framework: Comparison
Use .NET Core when:
- You want to build cross-platform applications
If the new application (web or service) needs to run on multiple platforms- Windows, Linux, macOS, choose .NET Core over .NET Framework. Visual Studio Code and third party editors such as Sublime, Emacs, VI support .NET Core for cross platform development.
- The need is to build high-performance and scalable systems
When a performance-oriented and scalable system is on the list, it is better to prefer .NET Core over .NET Framework. Reason being, .NET Core offers high-performance server runtime for Linux and Windows Server.
- When you are using microservices or Docker containers
For applications or services that use microservices or Docker containers, opting .NET Core makes more sense. Reasons include:
1) .NET Core facilitates mixing microservices or services developed with Ruby, Java, .NET Framework, or other monolithic technologies.
2) Containers usually work in conjugation with microservices architecture. With .NET Framework, there is limitation to work with Windows containers only. Moreover, while creating and deploying a container, the image size is smaller with .NET Core vs .NET Framework.
- You need side-by-side .NET versions per application
For applications that may have dependency on different versions of .NET for installation, opt for .NET Core. .NET Core offers side by side installation of multiple versions for .NET Core runtime on the same machine.
Use .NET Framework when:
- The app is using .NET technologies that are not available for .NET Core.
A number of .NET technologies are not available for .NET Core. For example: ASP.NET web pages applications or workflow related services (WCF Data Services, Windows Workflow Foundation) are not included in .NETCore.
- The existing app uses a platform that .NET Core does not support.
Some of the Microsoft or third party services/platforms do not offer support to .NET Core. For example: Azure’s Service Fabric Stateful Reliable Services programming model does not support .NET Core and is available for.NET Framework.
.NET Core VS .NET Framework: Conclusion
The above overview and comparison of both technologies give a clear picture of .NET Core being a modern and updated framework for building server-side applications.
In case you are looking for a technology partner to migrate your applications from .NET Framework to .NET Core, or build new applications using .NET Core framework, get in touch with our Microsoft technology experts through our no-obligation 30 minute consultation program.