The .NET Framework is a platform developed by Microsoft for its operative system (OS) Windows. Similar to Java’s virtual machine, the .NET Framework has a runtime environment, known as the Common Language Runtime (CLR) or the .NET runtime. The CLR provides an abstraction layer on top of the OS. Code for the CLR can be written in different programming languages, such as C# (C Sharp) and Visual Basic .NET (VB.NET). The .NET compiler converts the source code into a bytecode language called Common Intermediate Language (CIL), previously known as Microsoft Intermediate Language (MSIL). At runtime, the CLR’s Just-In-Time (JIT) compiler converts the CIL code into native code for the operating system. Code running under the control of the CLR is known as managed code. The CLR also provides important services such as memory and thread management, garbage collection, and exception handling.
This will all sound very familiar if you have already read about Java =)
The .NET Framework also includes a large class library, known as the .NET Base Class Library (BCL). This collection of classes in managed code is available to all languages that target the .NET Framework.
Although Microsoft’s implementation of the CLR can only run on Windows, other implementation could be created for different platforms. Such is the case of Mono, an open-source implementation of the CLR that can run on Linux, Mac, and Solaris. You could develop an application in Windows and run it on Linux, or vice verse!
.NET and Visual Studio Versions
.NET Framework 1.0 was released in February 2002. Along with it, Microsoft released version 7.0 of Visual Studio, named Visual Studio .NET, an integrated development environment (IDE) targeted to the .NET Framework. An upgrade to the .NET Framework (version 1.1), as well as a new version of Visual Studio, named Visual Studio .NET 2003 (version 7.1), were released in April 2003.
The .NET Framework 2.0 was introduced in November 2005 and was considered a major release of the framework. It included new concepts, such as Generics, Membership Providers, Partial Classes, and improvements to ASP.NET. Microsoft released Visual Studio 2005 (version 8.0) for this .NET version. Notice how “NET†was removed from the name as part of the new product image. The IntelliSense feature in Visual Studio was greatly improved. Visual Studio 2005 also included a local web server. This means web application could be debugged and tested without the need of IIS.
The .NET Framework 3.0 was released on November 21, 2006. There were no major architectural changes in this release. In fact, .NET Framework 3.0 uses the CLR of .NET Framework 2.0. Instead of making changes to the core of the framework, Microsoft added new components, such as Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF). A new version of Visual Studio was not released with this version of .NET Framework.
The .NET Framework 3.5 was released on November 19, 2007. This version also uses the CLR of .NET Framework 2.0. This new version featured the new Language Integrated Query (LINQ), Extension methods, Lambda expressions, and Anonymous types. ASP.NET AJAX is also included as part of the framework starting with this release. Visual Studio 2008 (version 9.0) was released to support these new features. Visual Studio 2008 also support multi-targeting solutions, which lets developers choose which version of .NET Framework (2.0, 3.0, or 3.5) each project should target. A solution can have projects that target different version of the .NET Framework. Visual Studio 2008 also adds IntelliSense and debugging support for JavaScript.
The current version of the .NET Framework, released in April 2010, is version 4. The .NET Framework 4 is another major release of the framework. Which means it comes with a new CLR. It includes a new functional language, F# (F Sharp), and new features for the languages C# and VB.NET. In this release, Microsoft included the Dynamic Language Runtime (DLR), built upon the CLR. DLR provides the ability to implement dynamic languages like Python and Ruby in the .NET Framework. C# provides access to the new DLR through the new keyword dynamic. Visual Studio 2010 (version 10.0) was released for the .NET Framework 4. It has a completely redesigned IDE. This version of Visual Studio was developed using WPF.
Usage and Technologies
- Desktop applications: Windows Forms is the API included in .NET Framework to develop Graphical User Interfaces (GUI) for the desktop. It’s build on top of the Windows API. The Windows Presentation Foundation (WPF)Â was added to the .NET Framework on version 3.0 as a more powerful option to create GUI components. It employs Extensible Application Markup Language (XAML) to define the UI elements by using an XML-based notation.
- Web applications: ASP.NET (Active Server Pages .NET) enables developers to create web sites using any of the .NET languages. In ASP.NET, pages are developed as Web Forms. Similar to a form in a desktop application, a web form has a UI (mark-up) to provide the look and behavior, and code behind to handle the business logic of the page. As web development has evolved into more interactive web applications, other frameworks like ASP.NET AJAX (Asynchronous JavaScript and XML) and ASP.NET MVC (Model-View-Controller) have been added to .NET.
- Web clients (browser): Silverlight allows developers to build Rich Interactive Applications (RIA) for the web, similar to Flash and JavaFX. It integrates multimedia and interactivity for the user. It uses WPF to render the UI.
- Mobile devices: The .NET Compact Framework and .NET Micro Framework provide support to run .NET-powered applications on mobile devices and embedded systems with limited resources.
- Databases: ADO.NET (ActiveX Data Object .NET) is the primary data access API for the .NET Framework. It provides classes that can be used to access data sources, such as SQL Server, by using any of the .NET languages.
The .NET Framework is the most important technology right now to develop almost any kind of applications on Windows. The .NET base classes have been designed to be very intuitive and easy to use, really increasing productivity.