.NET Framework

.NET Framework

Web page by Kevin Harris of Homer IL

Please contact Kevin Harris of Homer IL concerning this web site

Project Lightning was its code name. Early press releases called it Next Generation Windows Services. It received an official name when a June 2000 press release unveiled it as Microsoft® .NET®.

Microsoft's .NET framework supports software development for several different environments (Web Applications, Desktop Applications, Mobile Device Applications, Services, and Browser Plugins). The .NET framework contains a large Base Class Library (BCL) which is shared among all the .NET languages.

.NET 4.0 introduced the Dynamic Language Runtime (DLR) which adds a set of services for dynamic languages. The DLR enables interoperation between dynamic languages and the .NET Framework. It also brings dynamic behavior to C# and Visual Basic. C# 4.0 contains a dynamic keyword which tells the compiler to turn off compile-time checking. A third benefit of the DLR is support for implementing dynamic programming languages to run under .NET. Examples of these languages include:

.NET Framework Stack

,.NET Framework Stack

.Net Framework Stack
by Soumyasch, CC3.0 via Wikimedia Commons

.NET continues to evolve to utilize hardware advancements and meet the changing requirements of the software industry. Today .NET supports the development of multi-thread applications which take advantage of today's multi-core CPUs. Parallel data queries were enabled in .NET 4.0 with the introduction of Parallel LINQ (PLINQ). In some cases PLINQ can significantly increase the speed of data queries by using all the available cores in modern computers. Combining multi-threading with the simplified approach to asynchronous programming released in .NET 4.5, can result in responsive applications with the power to meet modern software demands.

.NET Components

Fundamental components of the .NET framework include:

  1. Common Language Runtime (CLR)
    • An controlled execution environment for application programs.
    • In many ways the CLR is like a virtual machine. The CLR provides:
      • Memory Management
      • Security
      • OS and hardware independence
      • Language independence (C#, VB, F#, IronPython, IronRuby)
  2. Framework CLASS Library (FCL)
    • A library of fuctionality to build applications. Contains thousands of classes used to build applications.
    • A small subset of the FCL is the Base Class Library (BCL). BCL is the core set of classes which serve as a basic API for the CLR. The BCL include such classes as mscorlib.dll, and some of the classes in System.dll and System.core.dll are considered to be part of the BCL.
    • FCL includes Windows Presentation Foundation (WPF) used to build the UI for desktop applications.
    • FCL includes ASP.NET for building web applications.
    • FCL includes Windows Communication Foundation (WCF) used to build service-oriented applications (eg. web services).
  1. Common Language Infrastructure (CLI)
    • The CLI is an open specification developed by Microsoft and standardized by ISO and ECMA. It describes the executable code and runtime environment that form the core of the Microsoft .NET Framework. See Standard ECMA-335 for the CLI standard.
    • The specification defines an environment that provides hardware and software independence for several .NET high-level languages.
    • Under the CLI the application code is not compiled directly to machine code, instead it is compiled to an intermediate language called Common Intermediate Language (CIL). When the code is executed, the CIL is compiled to machine language so it can run on the hardware.

,Common Language Infrastructure

Common Language Infrastructure
Public Domain via Wikimedia Commons

.NET Technologies

The .NET framework is divided into various categories corresponding to computing environment or function. Microsoft has online .NET Documentation which provides guides, tours, tutorials, and references for their various technologies.

  • ADO.NET - is a set of classes that provide data access services. ADO.NET provides consistent access to data sources such as SQL Server and XML, and to data sources exposed through OLE DB and ODBC. Aapplications can use ADO.NET to connect to these data sources and retrieve, handle, and update the data they contain.

  • ASP.NET - is a server-side Web application framework designed to produce dynamic Web applications and services. It was released in January 2002 and is the successor to Microsoft's Active Server Pages (ASP) technology. It includes: Web Forms,
    MVC, WCF, Web API.

  • ASP.NET Core - is the successor to ASP.NET. It is the Web part of the .NET Core framework. In ASP.NET Core, MVC, ASP.NET Web API, and ASP.NET Web Pages (only uses Razor pages) have merged into a unified MVC 6.

  • EF - Entity Framework - is an object-relational mapping (ORM) framework for .NET. It was orginally released in August 2008 and has undergone many revisions and enhancements. EF6 is the latest version for .NET 4.x. and is open source on GitHub. EF7 (a.k.a EF Core .10) is designed for use with .NET Core. Microsoft intends to provide concurrent support for both EF6 and EF7, with all the innovation going into EF7. EF7 is a completely new codebase from prior versions. EF7 is designed to be more efficient, powerful, flexible, and extensible, will run on Windows, Linux and OSX, and will support a new range of relational and NOSQL data stores.

  • MVC - Model View Controller - is an alternative to Web Forms for creating Web applications. MVC is an architectural pattern which separates an application into three main components: the model, the view, and the controller. MVC provides a separation of concerns which provides loose coupling between the input logic, business logic, and UI logic. MVC does not use view state or server-based controls. MVC provides for routing ,better support for test-driven development, and support for the existing ASP.NET features (authentication, caching, session state management, health monitoring, etc.).

  • .NET Core - is a set of runtime, library and compiler components that allow you to create apps that run on Windows, macOS and Linux. .NET Core is a modular and high performance implementation of .NET for build web and cloud applications. .NET Core 1.0 was released in June 2016 and its runtime, libraries, compiler, languages and tools are all open source on GitHub.

  • WCF - Windows Communication Foundation - is a unified framework for building Web services and Web service clients. Microsoft created Windows Communication Foundation as a way to bring together the functionality of their older communication technologies (ASMX, .NET Remoting, DCOM, MSMQ) under a unified programming model. WCF can be used directly to create Web services and expose data, but it requires considerable effort. A simpler approach is to use one of the two later technologies that Microsoft has built on top of WCF (WCF Data Services or WCF RIA Services). WCF Data Services and WCF RIA Services are very different approaches for building data-oriented services. See the Network and Protocols article for more information about WCF.

  • Web API - Web Application Programming Interface - is a platform for building RESTful services (a.k.a HTTP services) which can reach a broad range of clients, including browsers and mobile devices. Web API is similar to MVC in that it contains similar features such as routing, controllers, action results, filter, and model binders.

  • WF - Windows Workflow Foundation - is for executing long-running processes as a series of steps in .NET. Workflow processes include complex scenarios encountered by large enterprises, such as order processing and inventory control.

  • Windows Forms - is a graphical API for developing PC applications with Microsoft Windows-like features. Windows Forms was an early and easy way to provide GUI components and create a user interface. Windows Forms has not necessarily been superseded by WPF, but is simply another tool for Windows desktop application that will continue to exist parallel to WPF.

  • WPF - Windows Presentation Foundation - is a newer API than Windows Forms for developing PC applications.. WPF uses XAML to create views and includes a resolution-independent and vector-based rendering engine that is built to take advantage of modern graphics hardware. WPF separates the views (XAML) and code (C#, VB) in separate files similar to ASP.NET. WPF and Silverlight are similar in many respects, but were designed for different purposes. For example both use XAML, however there are many differences between WPF XAML and Silverlight XAML. WPF XAML is NOT considered easily portable to Silverlight XAML. See Contrasting Silverlight and WPF for more details.

.NET Releases

.NET was initially released in 2002. More information about .NET versions can be found at .NET Framework Versions and Dependencies.

.NET Framework Date
NET Framework 1.0 January 2002
NET Framework 1.1 April 2003
NET Framework 2.0 November 2005
NET Framework 3.0 November 2006
NET Framework 3.5 November 2007
NET Framework 4.0 April 2010
NET Framework 4.5 August 2012
NET Framework 4.5.1 October 2013
NET Framework 4.5.2 May 2014
NET Framework 4.6 July 2015
NET Framework 4.6.1 November 2015
.NET Core 1.0 June 2016
NET Framework 4.6.2 August 2016

.NET Framework Releases

Reference Articles

Microsoft Documentation