3 ms·
I'll take a stab at this. .NET Core and Mono are not exactly analagous. A better comparison historically would have been Mono to .NET Framework (i.e. classic .
by headmelted 8y ago
I'll take a stab at this.
.NET Core and Mono are not exactly analagous. A better comparison historically would have been Mono to .NET Framework (i.e. classic .NET).
.NET Framework is a fairly expansive set of standard libraries bundled with a runtime - it's commonly used and well-supported, and dates back to about 2001, give-or-take a beta or two. There's a lot of current and legacy applications built on this out in the wild.
.NET core is effectively a do-over for the longer term in the form of a minimal set of dependencies that imports more of the standard library separately. There's a couple of reasons for doing this - primarily the parts that have been abstracted out mean that .NET core runs in a lot more places than the classic framework (including natively on devices like the Raspberry Pi, for example), and can also be (and is) fully open-source (the classic framework is mostly open-source these days as it is, but licensing problems meant that not every part of the toolchain could be opened up).
There's also the question of expectations when it comes to community changes. .NET Framework was adopted in many quarters on the basis that it was developed by Microsoft directly, and bureaucratically opening it up to community changes after the fact becomes problematic due to the massive number of stakeholders and their expectations.
I'm sure someone else can add more info but as I understand it this is the gist.
- sevensor 8y agoThank you, that helps!
- scarface74 8y agoJust to confuse things even more, there is also .Net Standard. (https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/ https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introduci...). .Net Framework (Windows only), .Net Core and Xamarin are all implementations of .Net Standard. To add even more confusion, ASP.Net Core can run either on .Net Core or .Net Framework.
- bargl 8y agoI know I've over simplified this for myself. But the way that I look at it is like so. .Net Standard is an "Interface" - No implementation behind the scenes just a list of apis. .Net Framework, .Net Core, Xamarin are all "classes" or implementations of .Net Standard. ASP.NET Core only relies on .NET standard which is implemented by both .Net Framework and .Net Core. Which means it can run on both. ASP.NET (Framework) does not rely on .Net Standard but directly links to the implementation of .Net Framework. Which means those libraries can't run anywhere and are instead limited to only .NET Framework. I'm no Jon Skeet, or tech guru. So please take this explanation with a grain of salt and if I'm wrong correct me as needed. This is just how I've wrapped my head around it.
- ChicagoDave 8y agoThat was perfect.
- nlawalker 8y agoDavid Fowler (Microsoft engineer on ASP.NET Core) posted an "analogy in C#" gist a couple years ago that is similar to yours, but in code. It's a couple years old so is a bit out of date at this point, but the basic idea holds. https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7 https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8...
- giancarlostoro 8y agoThis is correct. .NET Standard as the name implies is the standard by which each framework tries to match. If you make any libraries that are .NET Standard compatible they will run everywhere. They used to have "Portable Class Libraries" but that was a mess. Also .NET Standard wasn't as good till recently thankfully. The earlier days were a mess since not everybody (framework) supported certain things.
- mandeepj 8y agoYou can't do disruptive changes with the baggage of current stack. System.web itself is over 2 mb and you don't need everything from it, all the time. Cross platform was another feature which was hard to do w\o starting over