Recently in an official .NET Framework Blog it was announced that .NET Core is going open source. Ironically author mentions that what .NET Core
is will be explained in next post. Some more details are mentioned in another announce post.
From a supplied diagram:
and articles text itself, I would assume that .NET Core (beside obvious things like being open-sourced) is a modular re-implementation of full .NET. i.e. framework components are loaded as necessary, much like NuGet packages are loaded now. And now ASP.NET 5 is one of the modules that is already implemented. Is my understanding of .NET Core correct? Maybe I'm missing something?
I have found recent article which I found both short and very good. It covers .NET Standard, .NET Core and .NET Framework and their relationship. Highly recommend it.
.NET Core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.
for more details : https://docs.microsoft.com/en-us/aspnet/core/
from Microsoft's Website:
These technologies are different than native .NET in that they run using CoreCLR runtime (used in Universal Windows Platform).
As you mentioned in your question, .NET Core is not only open-source, but portable as well [runs on MacOS, Windows and Linux]
The internals of .NET Core are also optimised to not use different modules from its core library unless it is required by the application
.NET Core is a new cross-platform implementation of .NET standards (ECMA 335) similar to Mono but done by Microsoft itself.
See docs.microsoft.com
Microsoft recognized future web open source paradigm and decided to open .NET to other operating systems..NET core is a .NET Framework for Mac and Linux. It is a “lightweight” .NET Framework so some features/libraries are missing. On Windows, I would still run .NET Framework/VS2015. .NET Core is more friendly with open source world like nodejs, npm, yeoman, docker etc. You can develop full-fledged web sites and RESTful APIs on Mac or Linux with Visual Studio Code + .NET core which wasn't possible before. So if you love mac or Ubuntu and you are a .NET developer then go ahead and set it up. For Mono vs. .NET Core, Mono was developed as a .NET Framework for Linux which is now acquired by Microsoft (company called Xamarin) and used in Mobile Development. Eventually, Microsoft may merge/migrate Mono to .NET core. I would not worry about Mono right now.
It is a sub-set of the .NET Framework, started with the Compact Framework edition. Progressed into Silverlight, Windows Store and Windows Phone. Focused on keeping the deployment small, suitable for quick downloads and devices with limited storage capabilities. And easier to bring up on non-Windows platforms, surely the reason it was chosen as the open sourced edition. The "difficult" and "expensive" parts of the CLR and the base class libraries are omitted.
Otherwise always easy to recognize when you target such a framework version, lots of goodies will be missing. You'll be using a distinct set of reference assemblies that only expose what is supported by the runtime. Stored on your machine in the
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore
directory.Update: after the .NETCore 2.0 release I've seen some representative numbers that gives a decent insight. They have been hard at work back-porting framework apis to .NETCore over the past two years. .NETCore 1.0 originally supported 13,000 apis. .NETCore 2.0 added 20,000 apis, bringing the total to 32,000 and allowing about 70% of existing Nuget packages to be ported. There are a set of apis that are too heavily wedded to Windows to be easy to port to Linux and MacOS. Covered by the recently released Windows Compatibility Pack, it adds another 20,000 apis.
Was trying to create a new project in VS2017 today (recently upgraded from 2015), and noticed new set of choices for the type of project. Either they're new or it's been a while since I started a new project!! :)
Came across this docs link and found it very useful, so sharing. The details of the bullets are also provided in the article. Just posting bullets here: