History of .NET
As we gear up for the official release of .NET 8 on November 14, 2023, let’s take this opportunity to look back at the history of .NET.
With this early press release from June 22, 2000, we see the beginnings of .NET:
Microsoft Corp. today unveiled the vision and road map for its next generation of software and services, the Microsoft .NET platform. Capitalizing on the explosion of Internet-based computing and communications, Microsoft .NET (pronounced “dot-net” ) will provide easier, more personalized and more productive Internet experiences by harnessing constellations of smart devices and Web sites with advanced software through Internet protocols and formats.
It’s interesting to note all of the references to the Internet, XML, and Web Services throughout the press release. Microsoft was planning to rebrand many products, including Windows, Office, MSN, and Visual Studio, to “.NET” to imply deep Internet integration across the entire stack. But what was .NET really?
Arstechnica gives insights into the first version of .NET. It included a Common Language Runtime (CLR), a set of class libraries, and full COM interop. The CLR allowed for developing in a variety of different programming languages all being compiled to the same low-level Common Intermediate Language (CIL) and sharing a Common Type System (CTS). It also included garbage collection memory management (Managed Data). And security restrictions for running code (Managed Code) and version control for libraries (Assemblies). The class library provided support for basic data types and various items like collections, files, screen, network I/O, threading, XML, database connectivity, etc. And .NET upgraded COM from a technology to a platform, hiding low-level details and easing development. You could use COM components from .NET and .NET objects from COM.
Really sounds like .NET was all about the Internet and Web Services. /s
The first version of the .NET Framework would arrive in 2002 along with Visual Studio .NET. But the other “.NET” rebrandings would never arrive. Instead, we would get Windows XP, Windows Server 2003, Office XP. Microsoft would continue to release updates to the .NET Framework with the current version being 4.8.1 and with support still ongoing.
On November 12, 2014, Microsoft announced an open-source, cross-platform version of .NET, called .NET Core. This version of .NET would focus on compatibility across Windows, MacOS, and Linux instead of the exclusively Windows experience of .NET Framework. This largely meant a focus on common denominator, client-facing features in .NET Core as opposed to the Windows Server-specific features targeted within the .NET Framework. Microsoft would continue to update .NET Core until version 3.1.32 on December 13, 2022.
And then the big announcement. On May 6, 2019, Microsoft announced that .NET Core would be combined with parts of Mono and rebranded as just “.NET”, with the next version jumping forward to version 5. The .NET Framework’s last full release would be version 4.8. The new “.NET” would become the favored son. New feature developments would be focused on .NET 5 and beyond. .NET Framework would receive security updates only going forward. Certain .NET Framework features would be left on the cutting-room floor and not make it into the new version. .NET 5 was meant to be a grand unifying of the platform, with one set of libraries and tools for all .NET app types. But this didn’t happen. Certain features would be delayed until .NET 6 in 2021, and the rest until .NET 7 in 2022. With .NET 7, the vision for .NET 5 was complete.
A tale of two different .NETs. Which one should be used? What’s the path forward?
When it came to client-facing, the answer was increasingly the new unified .NET. But on the server-side, the answer from Microsoft wasn’t quite so simple (emphasis added):
.NET offers significant benefits for new applications and application patterns. However, .NET Framework continues to be the natural choice for many existing scenarios, and as such, .NET Framework isn’t replaced by .NET for all server applications.
The train continues to chug down the track. Next month, Microsoft will be releasing .NET 8. It will be interesting to see how .NET continues to change in the future and how the unification of the two frameworks continue.
For further exploration of the history of .NET, Richard Campbell and Carl Franklin have a great episode of DotNetRocks here.