.NET has evolved greatly since its induction way back in the early 2000s and at this point it is beginning to rival Java in the ways it can be deployed. This post is meant to be a simple list of terms that get thrown around so hopefully things can make a little more sense to those unfamiliar.
.NET Framework: This is the name for the original implementation of the .NET runtime and libraries that ran exclusively on Windows. It begin with version 1.0, then went to 1.1, 2.0, 3.0, 3.5, 4.0, 4.5 before the ecosystem explosion. Since then the release have been more frequent and more patch-like. The current version as of this writing is 4.7.1.
Mono: This is what I commonly refer to as the the “great long-running reverse engineering game.” Several companies, all fronted by the same individual, made it their goal to bring an implementation of the .NET runtime and libraries to Linux. After they achieved that, they went on to Macintosh, and eventually wrote implementations for many platforms including iOS, Android, and various gaming consoles. This seems to be heading for replacement by .NET Core.
Xamarin: Xamarin is the name of the company that eventually ended up with the rights to the Mono source. They are now owned by Microsoft but spent a good number of years independently maintaining Mono, with a focus on mobile devices. Their most popular frameworks are Xamarin iOS and Xamarin Android which are runtime / library implementations designed to run on iOS and Android respectively.
.NET Core: This is the official Microsoft attempt to bring the .NET runtime and libraries across various flavors of desktop platforms. It has a great command line interface and ability to publish non-runtime dependent applications so that if desired it can run in an environment without a .NET runtime installed at all.
.NET Standard: Due to the fact that so many variations of runtimes trying to accomplish the same thing are in existence, the .NET Standard is a list of API that an implementation must support to claim support for a given version of the .NET Standard. Thus, if you compile against the .NET Standard, your library can run on any runtime that conforms to that standard, and any future ones as well.
UWP: Universal Windows Platform is Microsoft’s attempt to unify phone, tablet, and desktop with one code base that targets it all. It is a sandboxed environment that produces self contained applications that are designed to be distributed on the Windows Store.
Roslyn: You might have seen this term flying around. This is the name of Microsoft’s latest C# compiler environment. It is open source and available as a prebuilt library so that any application can gain access to the powerful C# compilation and analysis methods that Visual Studio uses.
.NET Native: This is an AOT (ahead of time) compiler for UWP that will precompile .NET IL (intermediate language, which is the compiled form of .NET assemblies that is consumed by the .NET runtime) down into native code (either x86, x64, or ARM) designed to run on the Windows operating system. This gives large performance gains on memory / resources constrained devices.
ASP .NET: This is Microsoft’s framework for building server side applications designed to be interacted with via HTTP calls. It is Windows only, but it’s newer and younger sibling ASP .NET Core is designed to run cross platform.
.NET Runtime: This is the engine that is responsible for hosting applications written in .NET. It is a C++ program designed to allocate managed memory, perform garbage collection, and load .NET assemblies into and out of its address space and subsequently compiling them on demand for execution by the host operating system.
.NET Framework Libraries: These are the libraries that provide basic functionality as a platform. Things such as string operations, file I/O, threading, etc are provided by these libraries. They were historically bundled with a given release of the .NET Framework, but these days they are modular and distributed out of band.
Assembly: This is the term for a binary image containing instructions that are executable by the .NET runtime (as opposed to a binary image containing machine instructions that are executable by the operating system).
Top comments (6)
Thanks for the update, it's nice to know that the community progressed a lot.
The last time I workerd on .NET with C# the 3.0 was all the rage and there was only Mono IIRC :-)
A long time ago :D
Is Anders Hejlsberg still around? He's one of the best programming language designers!
I do have a lot of respect for him given his track record. He does still appear to be at Microsoft!
I could go on and on about the sordid history of .NET but I'd prefer to move on into this future that is shaping to be nice!
In the meantime I found out he's the head of the TyoeScript project!
Let's focus on the positive yes, though I'm intrigued about knowing what went bad also...
Here is one example of the bad (and the ugly): borrrden.wordpress.com/2016/04/01/...
Read it, that's a turmoil! But it ended up solving itself in the end, didn't it?
Didn't know about the .NET foundation :) Glad Microsoft and the ecosystem embraced opensource, that was one of the reasons why I left .NET back in the days.
Are you planning to come back, or you just want to drop a comment? It will be good to have you guys back.