.NET Myths Dispelled

In line with Wikipedia, .NET will likely be celebrating it’s 21st birthday this 300 and sixty five days on February 14, 2022 (author’s point out: the date become once changed! It’s the 20th birthday of the legit free up!).

It’s been round for see you later that I converse many myths and misunderstandings about .NET from the early days persist; contemporary .NET is amazingly various from the .NET Framework that began your total lumber.

In acquire collectively of .NET reaching Minimum Correct Ingesting Age right here in the US, grab a cool one and let’s dispel 6 fashioned myths about .NET!

  1. .NET is for Windows
  2. It’s slower than Node/Python/Trudge/Rust
  3. It’s a legacy platform
  4. The tooling is dear
  5. .NET isn’t birth offer obliging
  6. It’s for boomer endeavor construction

This delusion persists from the early days of the .NET Framework. Certainly, it become once suited: the .NET Framework become once firstly built for Windows and in its internals, had many references to the Keep32 APIs via P/Invoke which barred it from being terrifying platform and this persevered even while the Mono project become once began by Miguel de Icaza to raise .NET to Linux.

It wasn’t till Microsoft obtained serious with .NET Core in 2016 did they birth to address loads of the gaps in Mono and the lingering dependencies on the Keep32 APIs. These early days of .NET Core vs .NET Framework were a huge quantity, but fortunately, that’s all previously with .NET 5 and now .NET 6.

At the present time, .NET 6 — basically the most present .NET — runs on Windows, Linux, and macOS with enhance for x86, x64, Arm32, and Arm64.

Microsoft ships SDKs and runtimes for added than one platforms.

This ability that, yes, you’re going to be ready to kind .NET choices on basically the most contemporary M1 MacBooks:

Constructing a easy console app from the describe line on a 2021 MacBook Expert M1.

And bustle them on basically the most contemporary AWS Arm-based EC2 situations. Microsoft’s legit Docker images comprises builds for all essential Linux platforms:

Microsoft’s Docker Hub listings for .NET comprise extra than one flavors of Linux.

This additionally ability that you just’re going to be ready to kind .NET on your CI/CD pipelines on Linux whether you’re using GitHub, GitLab, or other CI/CD tools.

In actual fact, .NET 6 is extremely high throughput and in web workloads provides usually the throughput of any of the frameworks running on Node and Python.

The place this delusion could additionally have began is with earlier versions of ASP.NET. You glance, ASP.NET and .NET have continually supported asynchronous programming gadgets (what all of us know this present day as async/look forward to), but it become once rather awkward to make exercise of and inaccessible to developers in the earlier days (using asynchronous delegates) and thus often (and I imply very, very often) ever vulnerable by most developers. Without asynchronous programming, blocking off I/O becomes a key constraint, even in a multi-threaded runtime.

In the TechEmpower Benchmarks, Round 15 from February 14, 2018, you’re going to be ready to glance that ASP.NET if truth be told trails Node.js:

2018: Node.js at #8, ASP.NET Core at #13, Particular at #28, Flask at #57, Django at #61

But by Round 20 in February 8, 2021 — appropriate 3 years later — it is fully crushing Node (teal-green) and Python (blue):

2021: ASP.NET Core at #8, Node.js at #56, Particular at #94, Flask at #111, Django at #118

What appears to be like insane is that .NET rankings 3x increased on JSON going via than Node and rankings an expose of magnitude increased in plaintext going via. Factual what are these benchmarks? Are they by some means biased in the direction of .NET? Here’s the code for Particular:

Line 36 is the JSON benchmark and line 38–39 is the horrifying text benchmark.

And right here’s the code for .NET 6 (to be benchmarked in round 21):

Line 15 returns the horrifying text response “Howdy, World!”, as does line 20 in JSON.

If we peek at the chart above, there could be an expose of magnitude in scale between Particular and .NET in these two actions (JSON: 105,747 vs 1,242,834 and text: 140,585 vs 7,022,212) and I check of the raw numbers to widen with .NET 6 in round 21.

Don’t be fooled by the visual plight on this chart; I’ve filtered to fair JavaScript, Python, Rust, and Trudge runtimes. Overall, Node is in 56th plight while Particular is the overall systems down at the bottom in 94th with no Python based framework increased than 61st.

In gRPC benchmarks, .NET is additionally crushing it (an expose of magnitude increased throughput than Node):

Ought to you’re doing gRPC, don’t even converse Node or Python.

If I instructed you that there become once a ability to function multiples of your present software program throughput using a well-supported, mainstream, ancient, birth offer, mutli-platform runtime, and a language that appears to be like an awful lot treasure TypeScript — on your present infrastructure or cloud funds — wouldn’t that be well-known to noticeably remember? At scale, this delta in throughput can equate to a important delta in payment.

It’s no longer appropriate in web benchmarks. Finally, .NET even trounces Trudge in raw compute. (Glance Alex Yakunin’s sequence on Trudge vs C# for an spectacular deeper dive.)

Unnecessary to claim, there are cases where .NET will lose to Trudge, Python, and Node. Here’s especially suited by the usage of “frigid starts” thanks to the persona of the highest-notch-in-time compilation to machine code (plus other nuances of how .NET processes birth) and thus making it depraved for obvious forms of choices equivalent to CLI tools or serverless choices that require stop to instantaneous response for a single establish a question to.

However, it’s no longer nearly as faulty as it once become once. Tai Nguyen Bui has a huge design of benchmarks that cowl how .NET frigid starts will also be diminished in AWS Lambda with little or no effort and the Microsoft crew is engaged on an improved native forward-of-time compilation (“native AOT”) for .NET 7.

With further enhancements and a level of interest on efficiency with each and every free up, I invent no longer have any doubt that .NET will proceed to acquire sooner.

To be heavenly, .NET would now be belief of an grownup right here in the US so it’s easy to spy it as a “legacy” platform with the new cold adolescence being Trudge and Rust.

But I get this assessment of the platform to be misaligned with truth. In 2010, .NET shipped with the Dynamic Language Runtime (DLR) and in doing so, ushered in an expertise of rapid and persevered innovation with respect to the runtime and supported programming languages as it allowed dynamic languages and dynamic language parts to be included on top of .NET. Here’s a blog put up I wrote in 2009 exhibiting how one can implement the Customer sample using double dispatch in C# 4.0.

As .NET has stepped forward, it has additionally adopted many purposeful programming ways. At the present time, it is conceivable to kind using a mix of object-oriented and purposeful ways in .NET. The runtime helps:

It has lambda closures, generics (which Trudge is appropriate getting round to), extension solutions, nameless varieties, file varieties, local choices, channels, and extra!

In line with GitHubs 2021 Tell of the Octoverse file, C# has had rather of a resurgence in the old few years:

C# making a return; TypeScript going meteoric! Anders Hejlsberg and Microsoft claiming two of the head 5!

There’s suited clarification for added developers to remember C# on the server, especially if they’re already happy with JavaScript and TypeScript.

With LINQ, C# looks an awful lot treasure JavaScript:

TypeScript/JavaScript array choices up top and LINQ extensions in C# under.

It’ll mild be no shock that C# and TypeScript maintain a inserting resemblance due to they were both designed by Anders Hejlsberg of Microsoft:


TypeScript code itemizing with an interface, class, and inheritance.


The same itemizing in C#

(Ought to you treasure Nest.js, potentialities are you’ll doubtlessly treasure .NET Net APIs thanks to how congruent the two frameworks are.)

C# — basically the most dominant language on .NET — continues to conform and add parts. And as Microsoft continues to make investments in F#, C# will inherit loads of the dynamic, purposeful parts of F#.

(via u/swalpaExtraChutney)

Love many myths about .NET, this likely formed per early tooling in Visual Studio which become once indeed, fairly costly (in the hundreds of dollars!).

In this deadline, no longer only does Microsoft present a free, comely powerful fully featured Community Model of Visual Studio, there are other alternatives to make a possibility from moreover:

In this deadline, I attain most of my C#/.NET in VS Code on a 2021 MacBook Expert M1:

C# in VS Code on a 2021 MacBook Expert M1 with the OmniSharp extension for language parts.

And it works (mostly) flawlessly.

Even fully featured Endeavor Visual Studio is fairly priced presently time for the productivity that it provides.

Love many .NET myths, this one originates from the days of Microsoft below Steve Ballmer.

Since Satya Nadella has taken the reigns, Microsoft’s total trajectory with respect to birth offer has shifted.

.NET itself is dominated by the .NET Foundation, the .NET compiler along with many other internals are all in GitHub public repos, and since 2015, it has been certified for Red Hat Endeavor Linux.

Whereas the unprecedented suspects dominate GitHub’s language charts, C# pulls in at a first price ninth place of abode.

C# has comely powerful continually been in the two–4% vary

Whereas the Nuget package repository doesn’t have nearly as many package alternatives as NPM, I get that the essential programs that subject are all very right, well written, right, and well documented; I’ve often felt lacking in birth offer alternatives for the decisions I’ve built.

What’s extra is that Nuget tends to have much less “filler”. Here’s a facet stop of an spectacular richer design of fashioned and nefarious class libraries for .NET. Having a deep design of first acquire collectively libraries written and maintained by paid mavens is a elegant asset.

(via u/similarintrests)

.NET is definitely one of basically the most versatile platforms to kind on, stout stop.

Very few languages are as accessible as C# while being ready to kind choices for virtually any exercise case from desktop to gadgets to web servers to 3D video games. The Solidarity game engine natively helps C# and a ton of video games are built on Solidarity including Cuphead, Hearthstone, Rust, and Fetch away from Tarkov!

Tutorial by Charger Video games exhibiting how one can exercise C# to script video games in Solidarity.

.NET can additionally be at chance of kind terrifying-platform apps using a replacement of frameworks treasure:

With .NET 6 minimal APIs, Microsoft moves .NET nearer to the realm of “simpler” language runtimes equivalent to Trudge, Python, and Node.js and makes it a long way extra approachable for hobbyists and weekend hackers.

Here’s a .NET 6 minimal Net API:

C# .NET 6 minimal vogue REST API

Compare that to Particular (JavaScript):

JavaScript Particular.js REST API

Or Fiber (Trudge):

Trudge Fiber REST API

Or Flask (Python):

Python Flask REST API

My hope is that as .NET turns 21, this put up helps dispel about a of the long-standing myths about .NET which proceed to be prevalent in the strategy community.

In actual fact that .NET and C# are an especially versatile and extremely performant runtime and language to work with while providing many further benefits for developers, teams, and enterprises; the platform and language proceed to conform and innovate.

Namely for teams pondering TypeScript on Node.js web frameworks treasure Particular or Nest, .NET and C# can need to mild indubitably be evaluated given the glowing wait on in throughput that could also be carried out!🍻

(For added dialogue, take a look at out this Reddit put up)

Read More



β€œSimplicity, patience, compassion.
These three are your greatest treasures.
Simple in actions and thoughts, you return to the source of being.
Patient with both friends and enemies,
you accord with the way things are.
Compassionate toward yourself,
you reconcile all beings in the world.”
― Lao Tzu, Tao Te Ching