For one example it has native support for dependency injection, and in general testability has massively improved since it was a core design goal.
They've also de-coupled several layers, which is hugely powerful since you can write your own middleware. For example check out this article on "Handling Errors Globally with the Custom Middleware"[0].
If you want to see how different it is from .Net Framework look at this diagram:
https://msdnshared.blob.core.windows.net/media/2017/06/06221...
[0] https://code-maze.com/global-error-handling-aspnetcore/#buil...
While you can technically create Forms, WPF, and UWP applications using .Net Core on Windows, that isn't really the direction or focus of the framework. Just a niche for legacy software or people who continue to need Windows specific desktop applications.
https://trends.google.com/trends/explore?q=%2Fm%2F02_qnn,%2F...
Console applications might have a future for cross-platform headless sever loads. But outside of that it is a web framework that happens to support non-web projects on the side.
It is competing primarily with e.g. Java, Ruby on Rails, Node.js, PHP, etc.
https://www.techempower.com/blog/2016/11/16/framework-benchm...
[1]https://nickcraver.com/blog/2016/02/17/stack-overflow-the-ar...
"The degree of improvement is absolutely astonishing, going from 2,120 requests per second on Mono in Round 11 to 1,822,366 requests per second on ASP.NET Core in Round 13. That’s an approximately 85,900% improvement, and that doesn’t even account for Round 11’s hardware being faster than our new hardware.
That is not a typo, it's 859 times faster! We believe this to be the most significant performance improvement that this project has ever seen."
That's why the increase was so significant. If they were comparing ASP.NET Core with .Net Framework on Windows, the difference would have almost certainly been much smaller.
Managed ODP.NET for Core is a partial implementation of the ODP.NET for the full .NET Framework.
Libraries using EF 6, because EF Core is still playing catchup with EF 6, and even .NET Core 3.0 won't support 100% of the EF 6 tooling.
Libraries using WCF, which lack budget for anyone to rewrite them and the respective clients into other transport protocols.
Plenty of other examples.
It's just that building from Visual Studio is by far the most convenient method.
Before there was a project format, callable with devenv command line tool.
Now you don't have to edit them as often (wildcards for files), they're easier to edit by hand (because they contain almost no clutter) and there are also command line tools to edit them (like dotnet add package).
<Compile Include="**/*.cs" />
I was doing this back in the .NET 3.5 days.But nitpicking aside your point is well taken, the developer experience is far better with dotnet core.
What OS in the container? A docker container is not a VM. Most of my containers are on the order of 10s of MB, and just contain a single binary.
There's no OS "inside" the container, no, but it's still dependent on an OS.
I think we agree. :)