The following is a little bit of history to explain how the .NET Framework has evolved over the years and why you have to consider the .NET Core Framework today:
Microsoft has started working on what we know now as the .NET Framework in the late 1990s and has released a first beta version of .NET Framework 1.0 in late 2001.
Originally, the framework was named NGWS for Next Generation Windows Services (internal codename Lightning/Project 42). In the beginning, developers could only use VB.NET as a programming language. More than 10 Framework versions later, a lot has been achieved. Today, you can choose between a large number of languages, frameworks, and technologies.
In the beginning, InterDev was the primary development environment to develop ASP Pages, and you had to use a command-line VBC compiler tool to compile your code.
The first version of our beloved Visual Studio development environment was published in February 2002, bringing with it a common runtime environment for the Windows client and Windows server family (NT 4, Windows 98, Windows ME, Windows XP, and then Windows 2000).
Around the same time, Microsoft provided a lighter framework, named Compact Framework, to execute Windows CE on Windows Mobile. The last version was published in January 2008 as Version 3.5 RTM before it was replaced by newer mobile technologies.
The first .NET SDK was published in April 2003 as .NET Framework 1.1 and was included in Visual Studio 2003. It was the first version to be included in the Windows Server OS and shipped together with Windows 2003.
.NET Framework 2.0 was released in January 2006 during the time of Windows 98 and Windows Me. It provided a major upgrade to the Common Language Runtime (CLR). It was the first version to fully support 64-bit computing and fully integrate with Microsoft SQL Server. It also introduced a new Web Pages Framework, providing features such as skins, templates, master pages, and style sheets.
.NET Framework 3.0 (WinFX) was released in November 2006. It included a new set of managed code APIs. This version added several new technologies to build new types of applications, such as Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WWF), and Windows CardSpace (later integrated into Windows Identity Foundation).
.NET Framework 3.5 extended the WinFX features one year later in 2007. This version included key features such as Linq, ADO.NET, ADO.NET Entity Framework, and ADO.NET Data Services. Furthermore, it shipped with two new assemblies that would later be the foundation of the MVC framework: System.Web.Abstraction and System.Web.Routing.
.NET Framework 4.0 was published in May 2009; it provided some major upgrades to the Common Language Runtime (CLR) and added Parallel extension to improve support parallel computing, dynamic dispatch, named parameters, and optional parameters, as well as code contracts and the BigIntegerComplex numeric format.
After the release of .NET Framework 4.0, Microsoft released a set of improvements to build microservices in the form of the Windows Server AppFabric framework. Essentially, it provided an InMemory distributed cache and an application server farm.
.NET Framework 4.5 was released in August 2012; it added a so-called Metro style application (which later evolved into Universal Windows Platform applications), the Core features, and the Microsoft Extension Framework (MEF).
Concerning ASP.NET, this version was more compatible with HTML5, jQuery, and provided bundling and minification for improved web page performance. It was also the first to support WebSockets and asynchronous HTTP requests and responses.
.NET Framework 4.6.1 was released in November 2015; it required Windows 7 SP1 or later, and was an important version. Some of the new features and APIs included were support for SQL Connectivity for AlwaysOn, Always Encrypted, and improved connection resiliency when using Azure SQL Databases. It also added Azure SQL Database support for distributed transactions using the updated System.Transactions APIs and provided many other performance, stability, and reliability related fixes in RyuJIT, GC, and WPF.
.NET Framework 4.6.2 was released in March 2016; it added support for paths longer than 260 characters, FIPS 186-3 DSA in X.509 certificates, and localization of data annotations, and the resources files were moved to the App_LocalResources folder. Additionally, the ASP.NET session provider and local cache manager were made compatible with the asynchronous framework.
.NET Framework 4.7 was released in April 2017; it was included in the Windows 10 Creators update. Some of the new features included enhanced cryptography with elliptic curve cryptography and improved Transport Layer Security (TLS) support, especially for version 1.2. It also introduced the object cache store, which enabled developers to provide custom providers easily by implementing the ICacheStoreProvider interface.
There was also a better integration between the application and the memory monitor and the famous memory limits reactions, which enables developers to observe the CLR when it truncates objects cached in memory and overrides the default behavior.
Then, Microsoft developed a completely new .NET Framework with open source multi-platform in mind from the beginning. It was introduced as ASP.NET 5 and later renamed ASP.NET Core Framework.
The first release, 1.0, was announced by Richard Lander (MSFT) in June 2016; the ASP.NET MVC and Web API frameworks were merged into a single framework package that you could easily add to your projects via NuGet.
The second release, .NET Core Framework 1.1, was published in November 2017; it ran on more Linux distributions, its performance was improved, it was released with Kestrel, the deployment on Azure was simplified, and the productivity was improved. Entity Framework Core started to support SQL Server 2016.
Note that .NET Core Framework 1.0 and 1.1 will be supported by Microsoft until June 2019.
The latest release of the .NET Core Framework is 2.0. A first preview version was released in May 2017. A second preview version—published in June 2017 and the final version, on which this book is based—was released in August 2017.
Microsoft has vastly improved the .NET Core Framework. The improvements and extensions are the result of the vision for .NET Core 2.0; it enables you to use more of your code in more places.
The following improvements are included in .NET Core 2.0:
- Massive API increase (>100%) relative to .NET Core 1.x
- Support for .NET Standard 2.0
- Support to reference .NET Framework libraries and NuGet packages
- Support for Visual Basic
Furthermore, the .NET Standard 2.0 brings these new features:
- Bigger API surface—it's extended to cover the intersection between .NET Framework and Xamarin. This also makes .NET Core 2.0 much bigger as it implements .NET Standard 2.0. The total number of APIs added to .NET Standard is ~20,000.
- It can reference existing .NET Framework libraries. The best thing is—no recompile required, so this includes existing NuGet packages.
- .NET Core supports more Linux distribution. Samsung is working to provide support for the mobile OS Tizen.
- And, most importantly, .NET Core is the fastest application runtime available in the .NET world.
Also, note that most of the regular libraries are available on GitHub. They can be forked and rebuilt by anyone who wants to extend or change any standard behaviors.