Preparation for .NET Core Migration
1. The origin of .NET Core
2. Why migrate .NET Core
3. .NET Core3.X main features
4. .NET Standard and .NET Core
5. .NET Core Roadmap & Version Selection
Next, let’s talk about it in detail.
First, the origin of .NET Core
This is more like the science of science, because the team’s small partners have halfway to go out, not very understanding of the glorious history of .NET, so it is necessary to take everyone to see the origin of .NETCore:
Say .NET Core, you need to talk about .NET. Java was just emerging, and Microsoft is very popular with Microsoft. At the time, the Java virtual machine for Windows platform was implemented by Microsoft according to the JVM standard. It is said to be the best performing Java virtual machine at that time. . But Microsoft is also selfish. Microsoft always wants to get some features on the Windows platform. It wants to bind Java to the taste of the Windows platform. In addition, Sun is really a little careful, so Sun is noisy with Microsoft, and then Microsoft. With the introduction of .NET, .NET has borrowed from Java since its birth, and then stepped forward in terms of language features and form development. Java has been slow to develop since version 1.6, and later Java has borrowed .NET from its language features.
Although .NET has been developing very well, there are also competitive frameworks such as WPF and Unity3D. However, the .NET platform is not popular with Internet companies in some of the larger projects (although Jingdong, Dangdang, and Ctrip were also .NET technology routes). But because .NET is not an open source framework or a cross-platform framework, it will bring the following problems:
Cost: Choosing .NET requires Visual Studio, Windows Server, and license is a cost that cannot be ignored.
Ecology: There is no contribution from the community. The .NET does not have the soil for the excellent framework. Although the technical community has special support from Microsoft, it is not ideal overall.
Talent: Can’t attract first-line companies to join the excellent Internet engineers, because they use Java, Go, etc., but after the birth of .NET Core will be greatly improved, Tencent, Netease are in use.
Even with a powerful framework like Mono, you can let .NET run on Linux, but that’s not enough. After all, Mono can only play a limited part of the .NET capabilities.
At the same time, the popularity of cloud computing, cross-platform demand is unstoppable, Linux as the server’s not only OS, .NET does not support Linux, more awkward!
In addition, the era of containers has been irreversible, with strong dependence on Windows, how to Docker?
In short, the form is forced, embracing change and the future, .NET Core came into being.
Second, why should I migrate .NET Core
Summarize the following points, you can add:
- .NET Core represents the future direction of .Net
- New product features, key technologies support Microsoft prioritize support on the latest .NET Core version
- Better code, better performance, everyone in the community is contributing, optimizing code
- Cross-platform support, support for deployment on Linux, can reduce the cost of VM
- Docker deployment support, lower cost, higher resource utilization, the core components of the future cloud native
- Better integration for modern Internet applications, microservices architecture, and DevOps
- Open source: https://github.com/dotnet/core
- Better ecology and community
Third, the main features of .NET Core3.X
At the same time support Windows and Linux, MacOS, to meet the needs of different developers, ASP.NET Core for Web development, EF Core for common database access, ML.NET for machine learning. You can choose the right technology according to your business needs.
Fourth, .NET Standard and .NET Core
Let me talk about the origin of the matter:
The .NET Framework has been in the new Release version since 2002 and does not support cross-platform.
.NET Core is designed to support cross-platform production, similar to Mono, Xamarin
In this way, there are two sets of code and two sets of libraries. For developers, to master two sets of SDKs at the same time, there will be a split between community and technology.
Therefore, .NET should unify the class library standard and unify all API definitions. This is the .NET Standard.
Unification of .NET Standard:
The .NET Standard defines the .NET platform, a set of APIs that are implemented uniformly. The platforms that implement the .Net Standard API are compatible with the target .Net Standard library;
Both the .NET Framework and .NET Core are standard implementations of .NET Standard. The .NET Standard is the intersection of the two.
However, the .NET Framework and .NET Core have their own personalized, extended libraries that need to be sacrificed, namely:
If you use the .NET Framework’s personalized SDK. For example, the registry, Windows Service, Winform, this can only be deployed in Windows.
If you use the .NET Core Personalization SDK, the deployment runtime is not compatible with the .NET Framework under Windows.
So, if your application uses .NET Standard and supports both .NET Framework and .NET Core, you can achieve compatibility between the two. A set of code supports both running under the .NET Framework runtime and running under the .NET Core runtime.
At the same time, the version of .NET Standard corresponds to the versions of .NET Core, .NET Framework, Mono, Xamarin, etc. There is a comparison table:
This table is very important. Reflects a rule:
If the target framework of the program, Targetframework, uses .NET Standard 2.0, it supports:
The .NET Core 2.0 version of the project can be referenced
The .NET 4.6 version of the project can be referenced
However, the lower versions of .NET Core and the .NET Framework cannot be referenced.
Five.NET Core Roadmap & Version Selection
Take a look at the latest Roadmap for .NET Core:
The latest .NET Core 3.1 will be released in November 2019 and will be the LTS version. If you are starting to migrate .NET Core now, it is recommended to choose a large version, LTS version. We will also choose this version.