The future of .NET Standard
devblogs.microsoft.com
devblogs.microsoft.com
- September 2016: Introducing .NET Standard (https://devblogs.microsoft.com/dotnet/introducing-net-standa...)
- May 2019: .NET Core is the Future of .NET (https://devblogs.microsoft.com/dotnet/net-core-is-the-future...)
- May 2019: Introducing .NET 5 (https://devblogs.microsoft.com/dotnet/introducing-net-5/)
(Yes, the last two are from the same month, even day. The second one is consistent with this article)
I may have missed a few episodes.
.NET 5 = .NET Core vNext
They are basically taking .NET Core and getting rid of the Core aspect of the name since it will be the only actively developed version of .NET going forward.
Edit: found it--the "M" is for moniker.
"To better reflect this, we’ve updated the target framework names (TFMs)"
becomes "To better reflect this, we’ve updated the names"
.net (before core)
.netstandard 2.1
.net 5
what a joke. This coming from someone who used to work as dev in .NET
(Also, DirectX tried to version number individual components at various points in its history so even DirectX "naming" isn't that straightforward at certain points in time in the past.)
At least .Net Core (soon 5) is easier to target containers (Docker) with.
.Net framework (the same thing that MS always had)
A new named cross platform framework. Not just another .Net derivative.
And a new name for the standard. Something like the Common .Net API.
That would have pretty much eliminated all confusion.
Instead they went with
.Net Framework
.Net Core
.Net standard
.Net {version_num}
Edit: to be clear we have completely hung legacy stuff which is waiting resources (lots of $$$$ wasted) to port it to later versions of the frameworks because huge chunks of the ecosystem got abandoned by MS and the OSS developers who were supporting it.
On the positive side I'm getting paid danger money now.
> danger money
In my experience, these often go hand-in-hand. Also, never heard 'danger money' and absolutely love it, thanks.
Microsoft has shown an amazing ability to modernize and improve the platform without dragging baggage around from one version to the next.
We just took an ASP.NET MVC web app developed in 2005 for Windows/IIS and shipped it on linux using .NET core— the conversion took 1 developer just 2 days.
As for different variants. Two different http pipelines (classic, integrated), OWIN, one obsolete variant of OWIN, whatever is lurking inside .Net core now. WebAPI, MVC, bits of the remains of WCF floating around.
Abandoned bits: WCF, WWF, older OWIN pipelines, SignalR and a huge chunk of open source projects and commercial CLR packages.
It's a shit show it really is.
We can't do it all in one big bang as it's too much effort and too risky. It will like just continue to rot. We're trying to break it up somewhat and write new parts in .NET Core, but it's an ugly reality staring us in the face.
Was a waste of money and time.
Resume Driven Development.
.NET Standard was confusing, and the ubiquitous TFMs in the early days were even more so. But all of those struggles where made to achieve a cross-runtime compatibility layer to make it easier to support both ecosystems. It was a Herculean effort by Microsoft, and they achieved it.
Now it's purpose has been served and as we move forward we can all just use the simple name of netX.Y, unless we're library authors that want to continue to support legacy .NET Framework as well.
Also, there is still very popular Unity 3D, that can target later framework, but will continue to run on the legacy one itself for a while.
The "core" migration is not a problem for short-lived startups, but .net is used a lot in business and enterprises. They don't rewrite their whole stack every two years but prefer an incremental approach. Since a lot of libraries will never be ported to core, a lot of enterprises will never migrate, since there will always be this critical internal app on web forms or whatever.
It is amazing that .net now runs on Linux, but it is a disaster that this platform change is tightly coupled to completely unrelated components like the C# compiler version. Developers on the framework now is stuck on an obsolete version of C# forever, cannot upgrade entity framework and so on.
C# attracted a lot of Java developers back when it got lambdas and Linq and async and whatnot, and Java seemed stuck in last century. Is it going to be the other way around in the future?
There are a ton of free in beer and free in use options. You can look at adoptopenjdk.net for the broadest community led one or azul Zulu for the one that’s been around since even before Oracle made their change
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
vs
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
That is hardly a fair comparison.
These benchmarks are more impressive.
Meanwhile here's a C# program that does not use PCRE2:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
Having used C++, some insane hand-rolled solutions, PhoneGap/Cordova, Unity, and now Kotlin MPP, I know that the "cross-platform" dream is messy and fraught with disaster, but I've come to really appreciate C# and .NET for day-to-day client dev.
I think there's a few folks out there who make a wee bit of a mountain out of a molehill when it comes to this "unification" effort by Microsoft to deliver I guess "the one .NET to rule them all".
Now sure it's been a wee bit painful (no less probably than for those working on .NET itself) to get to this stage, but .NET has been around for a lot of years, welded for most of its life to Windows and this transformation wasn't going to happen overnight. But having the "Standard" TFM bits has gone some way during this time to mostly ensure your code can be compiled an deployed to "any platform" albeit with some caveats and some warts.
I think .NET-5 is a reasonable step in the right direction. And for those of us working on .NET 4.x projects that still need to be looked after (I work on a pretty sizeable .NET 4.7 app) well MS will be supporting the "Windows .NET" for a good few years to come.
I should say that whilst .NET and Windows are my rent-paying tools-of-the-trade, I'm not a fanboi and have my own beefs and criticisms about MS's tooling decisions. Don't get me started about EF, especially Enum handling from back in the day.
And yes, sometimes (in fact many times) MS do somewhat cack-handedly mess up naming things which doesn't help.
For those projects stuck on .NET 4x it's getting progressively harder to Google for relevant info on .NET Framework. With the switch back you will be trying to find info on .NET 5 and you'll turn up stuff for .NET 4.5 and you'll have to go out of your way to additionally search for .NET Core.
I feel like MS backtracked on what they initially said when they said .NET and .NET Core would continue to both be developed. Instead they sort of invented this loophole of saying well .NET Core is .NET now so we are continuing to develop .NET.
If you start a new project after .Net5 is released in November, there will be little to nothing to worry about and you won’t have missed much of anything.
Wait - net6.0-<platform> is actually net5.0?
My reading of this is that Xamarin has been dropped from .NET 5 and moved to .NET 6, and Microsoft is hoping you don't notice.
https://devblogs.microsoft.com/dotnet/announcing-net-5-previ...
This announcement was made in a post announcing a preview release instead of its own post, so I can see why people missed it.
https://devblogs.microsoft.com/dotnet/the-future-of-net-stan...
Of course that'll mean developers are for ever playing catch-up, rewriting code at more expence.
I personally felt .Net standard was a great investment in making a standard platform that the community could contribute to, that would, of course, move slower than the giant monolith controlled by Microsoft... but nothing about .Net standard didn't mean you couldn't choose to use the giant monolith instead, it just guaranteed some semblance of stability if that was your preference.
they still playing catchup with java when the real threat was GO, now they are behind, and far far behind
The truly great thing about java is sun somehow created an ecosystem, a community. Probably by leading with specs, always, and not implementing anything but the core. So, you wind up with a real marketplace and a collaborative development effort. The variety of widely-accepted non-Sun solutions is an indicator.
Meanwhile, in microsoft-land... no spec, no standard. It's just "whatever MS does, that's the Thing." Nothing 3rd party is implemented because (a) no spec, and (b) MS has a nasty habit of cutting 3rd parties off at the knees. (Maybe because they're not happy with what 3rd parties develop, because... no spec.)
The result? Microsoft blinders. "If MS didn't invent it or publicize it at Build, it's no good."
So, you get the absolute ferment of java (and python, same factors, really) or... solutions by MS or MS vendors, which is more limited because a profitability case has to be made to lenders.
MS really did play catch-up with Java, which they were able to do because of the MS tax. Don't make any arguments based on technological superiority, 'cause there ain't none. Java (and the entire web, really) caught MS flat-footed. Bottomless pockets saved them.
It's because of hype. When analyzing things objectively, the unsubstantiated claims of the golang team quickly collapse. This is coming from someone who saw the mess that golang created in real production systems, which would not have happened in languages like Java and C#.
Mono isn't .NET. Using nuget in Visual Studio or IntelliJ Rider is a breeze.