All Topics  
.NET Framework

 

   Email Print
   Bookmark   Link






 

.NET Framework



 
 
The Microsoft .NET Framework is a software framework
Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality....
 that is available with several Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s. It includes a large library of coded solutions to prevent common programming problems and a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 that manages the execution of programs written specifically for the framework
Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality....
. The .NET Framework is a key Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 offering and is intended to be used by most new applications created for the Windows platform.

The coded solutions that form the framework's Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 cover a large range of programming needs in a number of areas, including user interface
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
, data access
Data access

Data access typically refers to software and activities related to storing, retrieving, or acting on data housed in a database or other repository....
, database connectivity
Database connection

A Database connection is facility in computer science that allows Client software to talk to database server software, whether on the same machine or not....
, cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
, web application
Web application

In software engineering, a web application or webapp is an Application software that is accessed via web browser over a network such as the Internet or an intranet....
 development, numeric algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s, and network communications
Computer networking

Computer networking is the engineering discipline concerned with communication between computer systems or Peripheral devices. Networking, routers, routing protocols, and networking over the public Internet have their specifications defined in documents called Request for Commentss....
.






Discussion
Ask a question about '.NET Framework'
Start a new discussion about '.NET Framework'
Answer questions from other users
Full Discussion Forum



Encyclopedia


The Microsoft .NET Framework is a software framework
Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality....
 that is available with several Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s. It includes a large library of coded solutions to prevent common programming problems and a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 that manages the execution of programs written specifically for the framework
Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality....
. The .NET Framework is a key Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 offering and is intended to be used by most new applications created for the Windows platform.

The coded solutions that form the framework's Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 cover a large range of programming needs in a number of areas, including user interface
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
, data access
Data access

Data access typically refers to software and activities related to storing, retrieving, or acting on data housed in a database or other repository....
, database connectivity
Database connection

A Database connection is facility in computer science that allows Client software to talk to database server software, whether on the same machine or not....
, cryptography
Cryptography

Cryptography is the practice and study of hiding information. In modern times cryptography is considered a branch of both mathematics and computer science and is affiliated closely with information theory, computer security and engineering....
, web application
Web application

In software engineering, a web application or webapp is an Application software that is accessed via web browser over a network such as the Internet or an intranet....
 development, numeric algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s, and network communications
Computer networking

Computer networking is the engineering discipline concerned with communication between computer systems or Peripheral devices. Networking, routers, routing protocols, and networking over the public Internet have their specifications defined in documents called Request for Commentss....
. The class library is used by programmers, who combine it with their own code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 to produce applications.

Programs written for the .NET Framework execute in a software environment that manages the program's runtime
Runtime

In computer science, runtime or run time describes the operation of a computer program, the duration of its execution, from beginning to termination ....
 requirements. Also part of the .NET Framework, this runtime environment is known as the Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
 (CLR). The CLR provides the appearance of an application virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 so that programmers need not consider the capabilities of the specific CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 that will execute the program. The CLR also provides other important services such as security, memory management
Memory management

Memory management is the act of managing computer memory. In its simpler forms, this involves providing ways to allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed....
, and exception handling
Exception handling

Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions - special conditions that change the normal flow of execution....
. The class library and the CLR together compose the .NET Framework.

Version 3.0 of the .NET Framework is included with Windows Server 2008 and Windows Vista
Windows Vista

Windows Vista is one member in a family of operating systems developed by Microsoft for use on personal computers, including home and business Desktop computer, laptops, Tablet PCs, and media center PCs....
. The current version of the framework can also be installed on Windows XP
Windows XP

Windows XP is a line of operating systems produced by Microsoft for use on personal computers, including home and business desktops, laptop, and media centers....
  and the Windows Server 2003
Windows Server 2003

Windows Server 2003 is a Server operating system produced by Microsoft. Introduced on 24 April 2003 as the successor to Windows 2000 Server, it is considered by Microsoft to be the cornerstone of its Windows Server System line of business server products....
 family of operating systems. A reduced "Compact" version of the .NET Framework is also available on Windows Mobile
Windows Mobile

Windows Mobile is a compact operating system combined with a suite of basic applications for mobile devices based on the Microsoft Windows API application programming interface....
 platforms, including smartphones.

Principal design features

Interoperability
Interoperability

Interoperability is a property referring to the ability of diverse systems and organizations to work together . The term is often used in a technical systems engineering sense, or alternatively in a broad sense, taking into account social, political, and organizational factors that impact system to system performance....
 : Because interaction between new and older applications is commonly required, the .NET Framework provides means to access functionality that is implemented in programs that execute outside the .NET environment. Access to COM
Component Object Model

Component Object Model is an interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages....
 components is provided in the System.Runtime.InteropServices and System.EnterpriseServices namespaces of the framework; access to other functionality is provided using the P/Invoke
Platform Invocation Services

Platform Invocation Services, commonly referred to as P/Invoke, is a feature of Common Language Infrastructure implementations, like Microsoft's Common Language Runtime, that enables managed code to call native code....
 feature. Common Runtime Engine : The Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
 (CLR) is the virtual machine component of the .NET framework. All .NET programs execute under the supervision of the CLR, guaranteeing certain properties and behaviors in the areas of memory management, security, and exception handling. Language Independence : The .NET Framework introduces a Common Type System
Common Type System

The Common Type System is a standard that specifies how Type definitions and specific values of Types are represented in computer memory. It is intended to allow programs written in different programming languages to easily share information....
, or CTS. The CTS specification defines all possible datatypes and programming constructs supported by the CLR and how they may or may not interact with each other. Because of this feature, the .NET Framework supports the exchange of instances of types between programs written in any of the .NET languages. This is discussed in more detail in Microsoft .NET Languages
Microsoft .NET Languages

CLI Languages are computer programming languages that are used to produce libraries and programs that conform to the Common Language Infrastructure specifications....
. Base Class Library : The Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 (BCL), part of the Framework Class Library (FCL), is a library of functionality available to all languages using the .NET Framework. The BCL provides classes
Class (computer science)

In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
 which encapsulate a number of common functions, including file
Computer file

A computer file is a block of arbitrary information, or resource for storing information, which is available to a computer program and is usually based on some kind of durable computer storage....
 reading and writing, graphic rendering
Rendering (computer graphics)

Rendering is the process of generating an image from a 3D model, by means of computer programs. The model is a description of three-dimensional objects in a strictly defined language or data structure....
, database
Database

A database is a structured collection of records or data that is stored in a computer system. The structure is achieved by organizing the data according to a database model....
 interaction and XML document manipulation. Simplified Deployment : The .NET framework includes design features and tools that help manage the installation
Installation (computer programs)

Installation of a computer program is the act and the effect of putting the program in a computer system so that it can be execution .Most programs are supplied in a condensed form intended for sale and distribution....
 of computer software to ensure that it does not interfere with previously installed software, and that it conforms to security requirements. Security : The design is meant to address some of the vulnerabilities, such as buffer overflow
Buffer overflow

In computer security and computer programming, a buffer overflow, or buffer overrun, is an Anomaly in software condition where a process attempts to store data beyond the boundaries of a fixed-length buffer ....
s, that have been exploited by malicious software. Additionally, .NET provides a common security model for all applications. Portability : The design of the .NET Framework allows it to theoretically be platform agnostic, and thus cross-platform
Cross-platform

In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....
 compatible. That is, a program written to use the framework should run without change on any type of system for which the framework is implemented. Microsoft's commercial implementations of the framework cover Windows, Windows CE
Windows CE

Windows CE is Microsoft's operating system for minimalistic computers and embedded systems. Windows CE is a distinctly different operating system and Kernel , rather than a trimmed-down version of desktop Windows....
, and the Xbox 360
Xbox 360

The Xbox 360 is the second video game console produced by Microsoft, and the successor to the Xbox. The Xbox 360 competes with Sony's PlayStation 3 and Nintendo's Wii as part of the History of video game consoles of video game consoles....
. In addition, Microsoft submits the specifications for the Common Language Infrastructure
Common Language Infrastructure

The Common Language Infrastructure is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of a number of runtimes including the .NET Framework, Mono , and Portable.NET....
 (which includes the core class libraries, Common Type System
Common Type System

The Common Type System is a standard that specifies how Type definitions and specific values of Types are represented in computer memory. It is intended to allow programs written in different programming languages to easily share information....
, and the Common Intermediate Language
Common Intermediate Language

Common Intermediate Language is the lowest-level human-readable programming language in the Common Language Infrastructure and in the .NET Framework....
), the C# language, and the C++/CLI language to both ECMA and the ISO
International Organization for Standardization

The International Organization for Standardization , widely known as ISO , is an international standard-setting body composed of representatives from various national standards organizations....
, making them available as open standards. This makes it possible for third parties to create compatible implementations of the framework and its languages on other platforms.

Architecture


Common Language Infrastructure (CLI)


The core aspects of the .NET Framework lie within the Common Language Infrastructure, or CLI. The purpose of the CLI is to provide a language-neutral platform for application development and execution, including functions for exception handling, garbage collection, security, and interoperability. Microsoft's implementation of the CLI is called the Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
 or CLR.

Assemblies


The intermediate CIL
Common Intermediate Language

Common Intermediate Language is the lowest-level human-readable programming language in the Common Language Infrastructure and in the .NET Framework....
 code is housed in .NET assemblies
.NET assembly

In the Microsoft .NET software framework, an assembly is a partially compiler code library for use in deployment, versioning and security. In the Microsoft Windows implementation of .NET, an assembly is a PE file for Windows GUI on Intel x86....
. As mandated by specification, assemblies are stored in the Portable Executable
Portable Executable

The Portable Executable format is a file format for executables, object file, and Dynamic-link librarys, used in 32-bit and 64-bit versions of Microsoft Windows operating systems....
 (PE) format, common on the Windows platform for all DLL and EXE files. The assembly consists of one or more files, one of which must contain the manifest, which has the metadata
Metadata

Metadata is "data about other data", of any sort in any media. An item of metadata may describe an individual datum, or content item, or a collection of data including multiple content items and hierarchical levels, for example a database schema....
 for the assembly. The complete name of an assembly (not to be confused with the filename on disk) contains its simple text name, version number, culture, and public key token. The public key token is a unique hash generated when the assembly is compiled, thus two assemblies with the same public key token are guaranteed to be identical from the point of view of the framework. A private key can also be specified known only to the creator of the assembly and can be used for strong naming and to guarantee that the assembly is from the same author when a new version of the assembly is compiled (required to add an assembly to the Global Assembly Cache
Global Assembly Cache

The Global Assembly Cache or GAC is a machine-wide .NET assemblies cache for Microsoft's Common Language Runtime Platform . The approach of having a specially controlled central repository addresses the shared library concept and helps to avoid pitfalls of other solutions that lead to drawbacks like DLL hell....
).

Metadata


All CLI is self-describing through .NET metadata
.NET metadata

.NET metadata, in the Microsoft .NET framework, refers to certain data structures embedded within the Common Intermediate Language code that describes the high-level structure of the code....
. The CLR checks the metadata to ensure that the correct method is called. Metadata is usually generated by language compilers but developers can create their own metadata through custom attributes. Metadata contains information about the assembly, and is also used to implement the reflective programming
Reflection (computer science)

In computer science, reflection is the process by which a computer program can observe and modify its own structure and behaviour. The programming paradigm driven by reflection is called reflective programming....
 capabilities of .NET Framework.

Security

.NET has its own security mechanism with two general features: Code Access Security
Code Access Security

Code Access Security , in the Microsoft .NET framework, is Microsoft's solution to prevent untrusted code from performing privileged actions. When the Common Language Runtime loads an .NET assemblies it will obtain #Evidence for the assembly and use this to identify the #Code group that the assembly belongs to....
 (CAS), and validation and verification. Code Access Security is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine or has been downloaded from the intranet or Internet). Code Access Security uses evidence to determine the permissions granted to the code. Other code can demand that calling code is granted a specified permission. The demand causes the CLR to perform a call stack walk: every assembly of each method in the call stack is checked for the required permission; if any assembly is not granted the permission a security exception is thrown.

When an assembly is loaded the CLR performs various tests. Two such tests are validation and verification. During validation the CLR checks that the assembly contains valid metadata and CIL, and whether the internal tables are correct. Verification is not so exact. The verification mechanism checks to see if the code does anything that is 'unsafe'. The algorithm used is quite conservative; hence occasionally code that is 'safe' does not pass. Unsafe code will only be executed if the assembly has the 'skip verification' permission, which generally means code that is installed on the local machine.

.NET Framework uses appdomains
Application domain

A domain in software engineering is a set of related software systems that share common design features. Domains in this contexthave been defined as:...
 as a mechanism for isolating code running in a process
Process (computing)

In computing, a process is an Object of a computer program that is being sequentially executed by a computer system that has the ability to run several computer programs Concurrency ....
. Appdomains can be created and code loaded into or unloaded from them independent of other appdomains. This helps increase the fault tolerance of the application, as faults or crashes in one appdomain do not affect rest of the application. Appdomains can also be configured independently with different security privileges. This can help increase the security of the application by isolating potentially unsafe code. The developer, however, has to split the application into subdomains; it is not done by the CLR.

Class library


The .NET Framework includes a set of standard
Standard library

A standard library for a programming language is the library that is conventionally made available in every implementation of that language. In some cases, the library is described directly in the programming language specification; in other cases, the contents of the standard library are determined by more informal social practices in the...
 class libraries. The class library is organized in a hierarchy of namespace
Namespace (computer science)

A namespace is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols . An identifier defined in a namespace is associated with that namespace....
s. Most of the built in APIs are part of either System.* or Microsoft.* namespaces. It encapsulates a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, among others. The .NET class libraries are available to all .NET languages. The .NET Framework class library is divided into two parts: the Base Class Library and the Framework Class Library.

The Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 (BCL) includes a small subset of the entire class library and is the core set of classes that serve as the basic API of the Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
. The classes in mscorlib.dll and some of the classes in System.dll and System.core.dll are considered to be a part of the BCL. The BCL classes are available in both .NET Framework as well as its alternative implementations including .NET Compact Framework
.NET Compact Framework

The Microsoft .NET Compact Framework is a version of the .NET Framework that is designed to run on Windows CE based mobile/embedded devices such as Personal digital assistant, mobile phones, factory controllers, set-top boxes, etc....
, Microsoft Silverlight
Microsoft Silverlight

Microsoft Silverlight is a programmable web browser plugin that enables features such as animation, vector graphics and multimedia that characterizes rich Internet applications....
 and Mono
Mono (software)

Mono is a project led by Novell to create an Ecma International standard compliant, .NET Framework-compatible set of tools, including among others a C Sharp compiler and a Common Language Runtime....
.

The Framework Class Library
Framework Class Library

The Framework Class Library is a standard library and one of two core components of Microsoft .NET Framework. The FCL is a collection of thousands of reusable classes , interfaces and value types....
 (FCL) is a superset of the BCL classes and refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including WinForms, ADO.NET
ADO.NET

ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
, ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
, Language Integrated Query
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
, Windows Presentation Foundation
Windows Presentation Foundation

The Windows Presentation Foundation , formerly code-named Avalon, is a graphical subsystem in .NET Framework 3.0 , which uses a markup language, known as Extensible Application Markup Language, for rich user interface development....
, Windows Communication Foundation
Windows Communication Foundation

Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
 among others. The FCL is much larger in scope than standard libraries for languages like C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, and comparable in scope to the standard libraries of Java
Java Class Library

The Java Class Library is a set of Library #Dynamic linking that Java applications can call at runtime. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries....
.

Memory management

The .NET Framework CLR frees the developer from the burden of managing memory (allocating and freeing up when done); instead it does the memory management itself. To this end, the memory allocated to instantiations of .NET types (objects) is done contiguously from the managed heap, a pool of memory managed by the CLR. As long as there exists a reference to an object, which might be either a direct reference to an object or via a graph
Graph (data structure)

In computer science, a graph is a kind of data structure, specifically an abstract data type , that consists of a Set of nodes and a set of edges that establish relationships between the nodes....
 of objects, the object is considered to be in use by the CLR. When there is no reference to an object, and it cannot be reached or used, it becomes garbage. However, it still holds on to the memory allocated to it. .NET Framework includes a garbage collector
Garbage collection (computer science)

In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage , or memory used by Object that will never be accessed or mutated again by the Application software....
 which runs periodically, on a separate thread from the application's thread, that enumerates all the unusable objects and reclaims the memory allocated to them.

The .NET Garbage Collector (GC) is a non-deterministic, compacting, mark-and-sweep garbage collector. The GC runs only when a certain amount of memory has been used or there is enough pressure for memory on the system. Since it is not guaranteed when the conditions to reclaim memory are reached, the GC runs are non-deterministic. Each .NET application has a set of roots, which are pointers to objects on the managed heap (managed objects). These include references to static objects and objects defined as local variables or method parameters currently in scope, as well as objects referred to by CPU registers. When the GC runs, it pauses the application, and for each object referred to in the root, it recursively
Recursion

Recursion, in mathematics and computer science, is a method of defining Function in which the function being defined is applied within its own definition....
 enumerates all the objects reachable from the root objects and marks them as reachable. It uses .NET metadata and reflection
Reflection (computer science)

In computer science, reflection is the process by which a computer program can observe and modify its own structure and behaviour. The programming paradigm driven by reflection is called reflective programming....
 to discover the objects encapsulated by an object, and then recursively walk them. It then enumerates all the objects on the heap (which were initially allocated contiguously) using reflection. All objects not marked as reachable are garbage. This is the mark phase. Since the memory held by garbage is not of any consequence, it is considered free space. However, this leaves chunks of free space between objects which were initially contiguous. The objects are then compacted together, by using memcpy to copy them over to the free space to make them contiguous again. Any reference to an object invalidated by moving the object is updated to reflect the new location by the GC. The application is resumed after the garbage collection is over.

The GC used by .NET Framework is actually generational. Objects are assigned a generation; newly created objects belong to Generation 0. The objects that survive a garbage collection are tagged as Generation 1, and the Generation 1 objects that survive another collection are Generation 2 objects. The .NET Framework uses up to Generation 2 objects. Higher generation objects are garbage collected less frequently than lower generation objects. This helps increase the efficiency of garbage collection, as older objects tend to have a larger lifetime than newer objects. Thus, by removing older (and thus more likely to survive a collection) objects from the scope of a collection run, fewer objects need to be checked and compacted.

Standardization and licensing

In August 2000, Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
, Hewlett-Packard
Hewlett-Packard

The Hewlett-Packard Company , commonly referred to as HP, is a technology corporation headquartered in Palo Alto, California, United States....
, and Intel worked to standardize CLI and the C# programming language. By December 2001, both were ratified ECMA
Ecma International

'Ecma International' is an international, private non-profit standards organization for information and communication systems. It acquired its name in 1994, when the European Computer Manufacturers Association changed its name to reflect the organization's international reach....
 standards ( and ). ISO followed in April 2003 - the current version of the ISO standards are ISO/IEC 23271:2006 and ISO/IEC 23270:2006.

While Microsoft and their partners hold patents for the CLI and C#, ECMA and ISO require that all patents essential to implementation be made available under "reasonable and non-discriminatory terms
Reasonable and Non Discriminatory Licensing

Reasonable and Non Discriminatory Licensing is a term for a type of licensing typically used during standardization processes. The normal case is that when joining the standardization body, companies agree that if they receive any patents on technologies which become essential patent to the standard then they agree to allow other groups att...
". In addition to meeting these terms, the companies have agreed to make the patents available royalty-free.

However, this does not apply for the part of the .NET Framework which is not covered by the ECMA/ISO standard, which includes Windows Forms
Windows Forms

Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
, ADO.NET
ADO.NET

ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
, and ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
. Patents that Microsoft holds in these areas may deter non-Microsoft implementations of the full framework.

On 3 October 2007, Microsoft announced that much of the source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 for the .NET Framework Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 (including ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
, ADO.NET
ADO.NET

ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
, and Windows Presentation Foundation
Windows Presentation Foundation

The Windows Presentation Foundation , formerly code-named Avalon, is a graphical subsystem in .NET Framework 3.0 , which uses a markup language, known as Extensible Application Markup Language, for rich user interface development....
) was to have been made available with the final release of Visual Studio 2008 towards the end of 2007 under the shared source
Shared source

Shared Source is Microsoft's framework for sharing computer program source code with third parties. Microsoft's Shared Source Initiative, launched in May 2007, includes a spectrum of technologies and licenses....
 Microsoft Reference License. The source code for other libraries including Windows Communication Foundation
Windows Communication Foundation

Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
 (WCF), Windows Workflow Foundation
Windows Workflow Foundation

Windows Workflow Foundation is a Microsoft technology for defining, executing, and managing workflows. This technology was first released in November 2006 as a part of .NET Framework 3.0....
 (WF), and Language Integrated Query
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
 (LINQ) were to be added in future releases. Being released under the non Open-source Microsoft Reference License means this source code is made available for debugging purpose only, primarily to support integrated debugging of the BCL in Visual Studio.

Versions

Microsoft started development on the .NET Framework in the late 1990s originally under the name of Next Generation Windows Services (NGWS). By late 2000 the first beta versions of .NET 1.0 were released.
VersionVersion NumberRelease DateVisual StudioDefault in Windows
1.01.0.3705.02002-02-13Visual Studio .NET 
1.11.1.4322.5732003-04-24Visual Studio .NET 2003Windows Server 2003
2.02.0.50727.422005-11-07Visual Studio 2005 
3.03.0.4506.302006-11-06 Windows Vista, Windows Server 2008
3.53.5.21022.82007-11-19Visual Studio 2008Windows 7
A more complete listing of the releases of the .NET Framework may be found on the .NET Framework version list.

.NET Framework 1.0

This is the first release of the .NET Framework, released on 13 February 2002 and available for Windows 98, NT 4.0, 2000, and XP. Mainstream support by Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 for this version ended 10 July 2007, and extended support ends 14 July 2009.

.NET Framework 1.1

This is the first major .NET Framework upgrade. It is available on its own as a redistributable package
Freely redistributable software

Freely redistributable software is software that anyone is free to redistribute. The term has been used to mean two types of free to redistribute software, distinguished by the legal modifiability of the software....
 or in a software development kit, and was published on 3 April 2003. It is also part of the second release of Microsoft Visual Studio .NET (released as Visual Studio .NET 2003). This is the first version of the .NET Framework to be included as part of the Windows operating system, shipping with Windows Server 2003
Windows Server 2003

Windows Server 2003 is a Server operating system produced by Microsoft. Introduced on 24 April 2003 as the successor to Windows 2000 Server, it is considered by Microsoft to be the cornerstone of its Windows Server System line of business server products....
. Mainstream support for .NET Framework 1.1 ended on 14 October 2008, and extended support ends on 8 October 2013. Since .NET 1.1 is a component of Windows Server 2003, extended support for .NET 1.1 on Server 2003 will run out with that of the OS - currently 30 June 2013.

Changes in 1.1 on comparison with 1.0
  • Built-in support for mobile ASP.NET
    ASP.NET

    ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
     controls. Previously available as an add-on for .NET Framework, now part of the framework.
  • Security changes - enable Windows Forms assemblies to execute in a semi-trusted manner from the Internet, and enable Code Access Security
    Code Access Security

    Code Access Security , in the Microsoft .NET framework, is Microsoft's solution to prevent untrusted code from performing privileged actions. When the Common Language Runtime loads an .NET assemblies it will obtain #Evidence for the assembly and use this to identify the #Code group that the assembly belongs to....
     in ASP.NET applications.
  • Built-in support for ODBC and Oracle databases. Previously available as an add-on for .NET Framework 1.0, now part of the framework.
  • .NET Compact Framework
    .NET Compact Framework

    The Microsoft .NET Compact Framework is a version of the .NET Framework that is designed to run on Windows CE based mobile/embedded devices such as Personal digital assistant, mobile phones, factory controllers, set-top boxes, etc....
     - a version of the .NET Framework for small devices.
  • Internet Protocol version 6 (IPv6
    IPv6

    Internet Protocol version 6 is the next-generation Internet layer protocol for packet -switched internetworking and the Internet. IPv4 is the dominant Internet Protocol version, and was the first to receive widespread use....
    ) support.
  • Numerous API changes.


.NET Framework 2.0

Released with Visual Studio 2005
Microsoft Visual Studio

Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
, Microsoft SQL Server 2005
Microsoft SQL Server

Microsoft SQL Server is a relational database management system produced by Microsoft. Its primary query languages are SQL and Transact-SQL....
, and BizTalk 2006.
  • The 2.0 Redistributable Package can be downloaded for free from , and was published on 2006-01-22.
  • The 2.0 Software Development Kit (SDK) can be downloaded for free from .
  • It is included as part of Visual Studio 2005
    Microsoft Visual Studio

    Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
     and Microsoft SQL Server 2005
    Microsoft SQL Server

    Microsoft SQL Server is a relational database management system produced by Microsoft. Its primary query languages are SQL and Transact-SQL....
    .
  • Version 2.0 without any Service Pack is the last version with support for Windows 98
    Windows 98

    Windows 98 is a graphical operating system released on 25 June 1998 by Microsoft and the successor to Windows 95. Like its predecessor, it is a hybrid 16-bit application/32-bit application monolithic product based on MS-DOS....
     and Windows Me
    Windows Me

    Windows Millennium Edition, or Windows Me , is a hybrid 16-bit/32-bit graphical operating system released on 14 September 2000 by Microsoft....
    . Version 2.0 with Service Pack 1 is the last version with official support for Windows 2000
    Windows 2000

    Windows 2000 is a line of operating systems produced by Microsoft for use on business desktops, Laptop, and Server . Released on 17 February, 2000, it was the successor to Windows NT 4.0, and is the final release of Microsoft Windows to display the "Windows NT" designation....
     although there have been some unofficial workarounds published online to use a subset of the functionality from Version 3.5 in Windows 2000. Version 2.0 with Service Pack 2 requires Windows XP
    Windows XP

    Windows XP is a line of operating systems produced by Microsoft for use on personal computers, including home and business desktops, laptop, and media centers....
     or Windows Server 2003
    Windows Server 2003

    Windows Server 2003 is a Server operating system produced by Microsoft. Introduced on 24 April 2003 as the successor to Windows 2000 Server, it is considered by Microsoft to be the cornerstone of its Windows Server System line of business server products....
    .
  • It shipped with Windows Server 2003 R2
    Windows Server 2003

    Windows Server 2003 is a Server operating system produced by Microsoft. Introduced on 24 April 2003 as the successor to Windows 2000 Server, it is considered by Microsoft to be the cornerstone of its Windows Server System line of business server products....
     (not installed by default).


Changes in 2.0 in comparison with 1.1
  • Numerous API changes.
  • A new hosting API for native applications wishing to host an instance of the .NET runtime. The new API gives a fine grain control on the behavior of the runtime with regards to multithreading, memory allocation, assembly loading and more (). It was initially developed to efficiently host the runtime in Microsoft SQL Server
    Microsoft SQL Server

    Microsoft SQL Server is a relational database management system produced by Microsoft. Its primary query languages are SQL and Transact-SQL....
    , which implements its own scheduler and memory manager.
  • Full 64-bit support for both the x64 and the IA64 hardware platforms.
  • Language support for generics
    Generic programming

    Generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters and was pioneered by Ada which appeared in 1983....
     built directly into the .NET CLR.
  • Many additional and improved ASP.NET web controls.
  • New data controls with declarative data binding.
  • New personalization features for ASP.NET, such as support for themes, skins and webparts.
  • .NET Micro Framework
    .NET Micro Framework

    The .NET Micro Framework is a Microsoft .NET platform for extremely resource-constrained devices. It includes a small version of the .NET common language runtime and supports development in C Sharp and debugging , both using Microsoft Visual Studio....
     - a version of the .NET Framework related to the Smart Personal Objects Technology
    Smart Personal Objects Technology

    Smart Personal Object Technology was Microsoft's initiative to attempt to create "smart" software and hardware to personalize household electronics and everyday devices to make their uses more versatile....
     initiative.
  • Partial classes
  • Anonymous methods
  • Generics
  • Data Tables


.NET Framework 3.0

.NET Framework 3.0, formerly called WinFX, was released on November 21, 2006. It includes a new set of managed code
Managed code

Managed code is Source code that executes under the management of a virtual machine, unlike unmanaged code, which is executed directly by the computer's Central processing unit....
 APIs that are an integral part of Windows Vista
Windows Vista

Windows Vista is one member in a family of operating systems developed by Microsoft for use on personal computers, including home and business Desktop computer, laptops, Tablet PCs, and media center PCs....
 and Windows Server 2008 operating systems. It is also available for Windows XP
Windows XP

Windows XP is a line of operating systems produced by Microsoft for use on personal computers, including home and business desktops, laptop, and media centers....
 SP2 and Windows Server 2003
Windows Server 2003

Windows Server 2003 is a Server operating system produced by Microsoft. Introduced on 24 April 2003 as the successor to Windows 2000 Server, it is considered by Microsoft to be the cornerstone of its Windows Server System line of business server products....
 as a download. There are no major architectural changes included with this release; .NET Framework 3.0 uses the Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
 of .NET Framework 2.0. Unlike the previous major .NET releases there was no .NET Compact Framework release made as a counterpart of this version.

.NET Framework 3.0 consists of four major new components:
  • Windows Presentation Foundation
    Windows Presentation Foundation

    The Windows Presentation Foundation , formerly code-named Avalon, is a graphical subsystem in .NET Framework 3.0 , which uses a markup language, known as Extensible Application Markup Language, for rich user interface development....
     (WPF), formerly code-named Avalon; a new user interface
    User interface

    The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
     subsystem and API
    Application programming interface

    An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
     based on XML and vector graphics
    Vector graphics

    Vector graphics is the use of geometrical Primitive s such as point s, line , curves, and shapes or polygon, which are all based upon mathematical equations, to represent s in computer graphics....
    , which uses 3D computer graphics
    3D computer graphics

    3D computer graphics are graphics that use a Cartesian coordinate system#Three-dimensional coordinate system representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images....
     hardware and Direct3D
    Direct3D

    Direct3D is part of Microsoft's DirectX application programming interface. Direct3D is only available for Microsoft's various Microsoft Windows operating systems and is the base for the graphics API on the Xbox and Xbox 360 console systems....
     technologies. See for developer articles and documentation on WPF.
  • Windows Communication Foundation
    Windows Communication Foundation

    Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
     (WCF), formerly code-named Indigo; a service-oriented messaging system which allows programs to interoperate locally or remotely similar to web service
    Web service

    A Web service is defined by the W3C as "a software system designed to support interoperability Machine to Machine interaction over a computer network"....
    s.
  • Windows Workflow Foundation
    Windows Workflow Foundation

    Windows Workflow Foundation is a Microsoft technology for defining, executing, and managing workflows. This technology was first released in November 2006 as a part of .NET Framework 3.0....
     (WF) allows for building of task automation and integrated transactions using workflow
    Workflow

    A workflow is a depiction of a sequence of operations, declared as work of a person, work of a simple or complex mechanism, work of a group of persons, work of an organization of staff, or machines....
    s.
  • Windows CardSpace
    Windows CardSpace

    Windows CardSpace , is Microsoft's client software for the Identity Metasystem. CardSpace is an instance of a class of identity client software called an Identity Selector....
    , formerly code-named InfoCard; a software component which securely stores a person's digital identities and provides a unified interface for choosing the identity for a particular transaction, such as logging in to a website.


.NET Framework 3.5

Version 3.5 of the .NET Framework was released on 19 November 2007, but it is not included with Windows Server 2008. As with .NET Framework 3.0, version 3.5 uses the CLR of version 2.0. In addition, it installs .NET Framework 2.0 SP1, .NET Framework 2.0 SP2 (with 3.5 SP1) and .NET Framework 3.0 SP1, which adds some methods and properties to the BCL classes in version 2.0 which are required for version 3.5 features such as Language Integrated Query (LINQ)
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
. These changes do not affect applications written for version 2.0, however.

As with previous versions, a new .NET Compact Framework 3.5 was released in tandem with this update in order to provide support for additional features on Windows Mobile and Windows Embedded CE devices.

The source code of the Base Class Library
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
 in this version has been partially released (for debugging reference only) under the Microsoft Reference Source License.

Changes since version 3.0
  • New language features in C# 3.0 and VB.NET
    Visual Basic .NET

    Visual Basic , formerly called Visual Basic .NET , is an object-oriented programming computer language that can be viewed as an evolution of Microsoft Visual Basic implemented on the .NET Framework....
     9.0 compiler
  • Adds support for expression trees and lambda methods
  • Extension method
    Extension method

    An extension method is a new language feature of C Sharp starting with the 3.0 specification, as well as VB.NET starting with 9.0 and Oxygene_ with 2.0....
    s
  • Expression trees to represent high-level source code at runtime.
  • Anonymous types with static type inference
  • Language Integrated Query (LINQ)
    Language Integrated Query

    Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
     along with its various providers
    • LINQ to Objects
    • LINQ to XML
    • LINQ to SQL
  • Paging support for ADO.NET
    ADO.NET

    ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
  • ADO.NET synchronization API to synchronize local caches and server side datastores
  • Asynchronous network I/O API
  • Peer-to-peer networking stack, including a managed PNRP resolver
  • Managed wrappers for Windows Management Instrumentation
    Windows Management Instrumentation

    Windows Management Instrumentation is a set of extensions to the Windows Driver Model that provides an operating system interface through which Instrumentation components provide information and notification....
     and Active Directory
    Active Directory

    Active Directory is a technology created by Microsoft that provides a variety of network services, including:* Lightweight Directory Access Protocol-like directory services...
     API
    Application programming interface

    An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
    s
  • Enhanced WCF
    Windows Communication Foundation

    Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
     and WF
    Windows Workflow Foundation

    Windows Workflow Foundation is a Microsoft technology for defining, executing, and managing workflows. This technology was first released in November 2006 as a part of .NET Framework 3.0....
     runtimes, which let WCF work with POX
    Pox

    A pox is a type of disease, often caused by an animal virus, characterised by pockmarks. The term may be used to refer to disease.Pox, as a disease, may refer to:...
     and JSON
    JSON

    JSON , short for JavaScript Object Notation, is a lightweight computer data interchange format. It is a text-based, human-readable format for representing simple data structures and associative arrays ....
     data, and also expose WF workflows as WCF services. WCF services can be made stateful using the WF persistence model.
  • Support for HTTP pipelining
    HTTP pipelining

    [] pipelining is a technique in which multiple [] requests are written out to a single Internet socket without waiting for the corresponding responses....
     and syndication feeds
    Web feed

    A web feed is a data format used for providing users with frequently updated content. Content distributors syndicate a web feed, thereby allowing users to subscribe to it....
    .
  • ASP.NET AJAX is included
  • New System.CodeDom namespace.


Service Pack 1
The .NET Framework 3.5 Service Pack 1 was released on August 11, 2008. This release adds new functionality and provides performance improvements under certain conditions, especially with WPF where 20-45% improvements are expected. Two new data service components have been added, the ADO.NET Entity Framework
ADO.NET Entity Framework

ADO.NET Entity Framework is an object-relational mapping framework for the .NET Framework. This framework is an ORM offering from Microsoft for the .NET Framework....
 and ADO.NET Data Services
ADO.NET Data Services

ADO.NET Data Services is a platform for what Microsoft calls Data Services. It is actually a combination of the runtime and a web service through which the services are exposed....
. Two new assemblies for web development, System.Web.Abstraction and System.Web.Routing, have been added; these are used in the upcoming ASP.NET MVC Framework
ASP.NET MVC Framework

The ASP.NET MVC Framework is a Model-view-controller framework which Microsoft is adding to ASP.NET. It allows software developers to build a Web application as a composition of three roles: Model, View and Controller....
 and, reportedly, will be utilized in the future release of ASP.NET Forms applications. Service Pack 1 is included with SQL Server 2008 and Visual Studio 2008 Service Pack 1
Microsoft Visual Studio

Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
.

There is also a new variant of the .NET Framework, called the ".NET Framework Client Profile", which at 28 MB is a lot smaller than the full framework and only installs components that are the most relevant to desktop applications.. However, the Client Profile amounts to this size only if using the online installer. When using the off-line installer, the download size is still 250 MB.

.NET Framework 4.0

Microsoft announced the .NET Framework 4.0 on September 29, 2008. While full details about its feature set have yet to be released, some general information regarding the company's plans have been made public. Some focus of this release are:
  • Improve support for parallel computing
    Parallel computing

    Parallel computing is a form of computing in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved Concurrency ....
    , which target multi-core or distributed
    Distributed computing

    Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
     systems. To this end, they plan to include technologies like PLINQ (Parallel LINQ
    Language Integrated Query

    Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
    ), a parallel implementation of the LINQ engine, and Task Parallel Library, which exposes parallel constructs via method calls.
  • Full support for IronPython
    IronPython

    IronPython is an implementation of the Python targeting the .NET Framework and Mono , created by Jim Hugunin. Version 1.0 was released on September 5, 2006....
    , IronRuby
    IronRuby

    IronRuby is an upcoming implementation of the Ruby targeting Microsoft .NET framework. It is implemented on top of the Dynamic Language Runtime, a library running on top of Common Language Runtime 2.0 that provides dynamic typing and dynamic method dispatch, among other things, for dynamic languages....
    , and F#.
  • Support for a subset of the .NET Framework and ASP.NET
    ASP.NET

    ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
     with the "Server Core" variant of Windows Server 2008's successor.


.NET vs. Java and Java EE


The CLI
Common Language Infrastructure

The Common Language Infrastructure is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of a number of runtimes including the .NET Framework, Mono , and Portable.NET....
 and .NET languages such as C# and VB
Visual Basic .NET

Visual Basic , formerly called Visual Basic .NET , is an object-oriented programming computer language that can be viewed as an evolution of Microsoft Visual Basic implemented on the .NET Framework....
 have many similarities to Sun's JVM
Java Virtual Machine

A Java Virtual Machine is a set of computer software programs and data structures which use a virtual machine model for the execution of other computer programs and Scripting language....
 and Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
. They are strong competitors. Both are based on a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 model that hides the details of the computer hardware on which their programs run. Both use their own intermediate byte-code, Microsoft calling theirs Common Intermediate Language
Common Intermediate Language

Common Intermediate Language is the lowest-level human-readable programming language in the Common Language Infrastructure and in the .NET Framework....
 (CIL; formerly MSIL) and Sun calling theirs Java bytecode
Java bytecode

Java bytecode is the form of instructions that the Java virtual machine executes. Each bytecode instruction or opcode is one byte in length; however, not all of the possible 256 instructions are used....
. On .NET the byte-code is always compiled before execution, either Just In Time (JIT)
Just-in-time compilation

In computing, just-in-time compilation , also known as dynamic translation, is a technique for improving the runtime performance of a computer program....
 or in advance of execution using the ngen.exe utility. With Java the byte-code is either interpreted, compiled in advance, or compiled JIT. Both provide extensive class libraries that address many common programming requirements and address many security issues that are present in other approaches. The namespaces provided in the .NET Framework closely resemble the platform packages in the Java EE API Specification in style and invocation.

.NET in its complete form (Microsoft's implementation) is only available on Windows platforms and partially available on Linux and Macintosh, whereas Java is fully available on many platforms. From its beginning .NET has supported multiple programming languages and at its core remains platform agnostic and standardized so that other vendors can implement it on other platforms (although Microsoft's implementation only targets Windows, Windows CE, and Xbox platforms). The Java platform was initially built to support only the Java language on many operating system platforms under the slogan "Write once, run anywhere
Write once, run anywhere

"Write once, run anywhere" , or sometimes Write once, run everywhere , is a slogan created by Sun Microsystems to illustrate the cross-platform benefits of the Java ....
." Other programming languages have been implemented on the Java Virtual Machine but are less widely used (see JVM languages).

Sun's
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
 reference implementation of Java (including the class library, the compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
, the virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
, and the various tools associated with the Java Platform) is open source under the GNU GPL license with Classpath exception. The source code for the .NET framework base class library is available for reference purposes only under the Microsoft Reference License.

The third-party Mono
Mono (software)

Mono is a project led by Novell to create an Ecma International standard compliant, .NET Framework-compatible set of tools, including among others a C Sharp compiler and a Common Language Runtime....
 Project, sponsored by Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
, has been developing an open source implementation of the ECMA standards that define the .NET Framework, as well as most of the other non-ECMA standardized libraries in Microsoft's .NET. The Mono implementation is meant to run on Linux, Solaris, Mac OS X, BSD, HP-UX, and Windows platforms. Mono includes the CLR, the class libraries, and compilers for C# and VB.NET. The current version supports all the APIs in version 2.0 of Microsoft's .NET. Full support exists for C# 3.0 LINQ
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
 to Objects and LINQ
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
 to Xml.

Criticism

Some concerns and criticism relating to .NET include:
  • Applications running in a managed environment tend to require more system resources than similar applications that access machine resources more directly.
  • As JIT
    Just-in-time compilation

    In computing, just-in-time compilation , also known as dynamic translation, is a technique for improving the runtime performance of a computer program....
     languages can be more easily reverse-engineered than native code to algorithms used by an application, there is concern over possible loss of trade secret
    Trade secret

    A trade secret is a formula, Best practice, process, design, Legal instrument, pattern, or compilation of information which is not generally known or reasonably ascertainable, by which a business can obtain an economic advantage over competitors or customers....
    s and the bypassing of license control mechanisms. Many obfuscation
    Obfuscated code

    Obfuscated code is source code in a computer programming language that has been made difficult to understand. Programmers may deliberately obfuscate code to conceal its purpose, to deter reverse engineering, or as a puzzle or recreational challenge for readers....
     techniques already developed can help to prevent this; Microsoft's Visual Studio 2005 (and newer) includes such a tool.
  • In a managed environment the regularly occurring garbage collection
    Garbage collection (computer science)

    In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage , or memory used by Object that will never be accessed or mutated again by the Application software....
     for reclaiming memory suspends execution of the application for an unpredictable lapse of time (typically no more than a few milliseconds, but in memory-constrained systems can be much longer). This makes such environments unsuitable for some applications such as those that must respond to events with predictable timing (see real-time computing
    Real-time computing

    In computer science, real-time computing is the study of Computer hardware and computer software systems that are subject to a "real-time constraint"?i.e., operational deadlines from event to system response....
    ).
  • Since the framework is not pre-installed on older versions of Windows an application that requires it must verify that it is present, and if it is not, guide the user to install it. This requirement may deter some from using the application as the downloads are many megabytes in size.
  • Newer versions of the framework (3.5 and up) are not pre-installed on any versions of the Windows operating system. Some developers have expressed concerns about the large size (around 54 MB for end-users with .NET 3.0, 197 MB with .NET 3.5, and 250 MB with .NET 3.5 SP1) and reliability of .NET framework runtime installers for end-users
    End-user (computer science)

    The end-user is a concept in software engineering, referring to an abstraction of the group of persons who will ultimately operate a piece of software ....
    . The first service pack for version 3.5 mitigates this concern by offering a lighter-weight client-only subset of the full .NET Framework. Two significant limitations should be noted, though. Firstly, the client-only subset is only an option on an existing Windows XP SP2 system that currently has no other version of the .NET framework installed. In all other scenarious, the client-only installer will install the full version of the .NET Framework 3.5 SP1. Secondly, the client-only framework does not have a 64-bit option.
  • The .NET framework currently does not provide support for calling Streaming SIMD Extensions
    Streaming SIMD Extensions

    In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! ....
     (SSE) via managed code
    Managed code

    Managed code is Source code that executes under the management of a virtual machine, unlike unmanaged code, which is executed directly by the computer's Central processing unit....
    . However, Mono
    Mono (software)

    Mono is a project led by Novell to create an Ecma International standard compliant, .NET Framework-compatible set of tools, including among others a C Sharp compiler and a Common Language Runtime....
     has provided support for SIMD Extensions as of version 2.2 within the Mono.Simd namespace; Mono's lead developer Miguel de Icaza has expressed hope that this SIMD support will be adopted by the CLR ECMA standard. Streaming SIMD Extensions have been available in CPUs since the introduction of the Pentium III
    Pentium III

    The Pentium III brand refers to Intel's 32-bit x86 desktop and mobile microprocessors based on the sixth-generation Intel P6 microarchitecture introduced on February 26, 1999....
    .


Alternative implementations

The Microsoft .NET Framework is the predominant implementation of .NET technologies. Other implementations for parts of the framework exist. Since the runtime engine is described by an ECMA/ISO specification, other implementations of it are unencumbered by patent issues. It is more difficult to develop alternatives to the base class library (BCL), which is not described by an open standard and may be subject to copyright restrictions. Additionally, parts of the BCL have Windows-specific functionality and behavior, so implementation on non-Windows platforms can be problematic.

Some alternative implementations of parts of the framework are listed here.
  • Microsoft's Shared Source Common Language Infrastructure
    Shared Source Common Language Infrastructure

    The Shared Source Common Language Infrastructure , previously codenamed Rotor, is Microsoft's shared source implementation of the Common Language Infrastructure, the core of Microsoft .NET....
     is a non-free
    Free software

    Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
     shared source
    Shared source

    Shared Source is Microsoft's framework for sharing computer program source code with third parties. Microsoft's Shared Source Initiative, launched in May 2007, includes a spectrum of technologies and licenses....
     implementation
    of the CLR component of the .NET Framework. However, the last version only runs on Microsoft Windows XP SP2, and does not contain all features of version 2.0 of the .NET Framework.
  • Portable.NET
    Portable.NET

    Part of the DotGNU project, Portable.NET is a free software and open source software initiative aiming to build a portability toolchain and runtime for Common Language Infrastructure applications....
     (part of DotGNU
    DotGNU

    DotGNU is a part of the GNU Project that aims to provide a free software replacement for Microsoft's .NET Framework. Other goals of the project are better support for non-Microsoft Windows platforms and support for more processors....
    ) provides an implementation of the Common Language Infrastructure (CLI), portions of the .NET Base Class Library (BCL), and a C# compiler. It supports a variety of CPUs and operating systems.
  • Microsoft's .NET Micro Framework
    .NET Micro Framework

    The .NET Micro Framework is a Microsoft .NET platform for extremely resource-constrained devices. It includes a small version of the .NET common language runtime and supports development in C Sharp and debugging , both using Microsoft Visual Studio....
     is a .NET platform for extremely resource-constrained devices. It includes a small version of the .NET CLR
    Common Language Runtime

    The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
     and supports development in C# and debugging (in an emulator or on hardware), both using Microsoft Visual Studio
    Microsoft Visual Studio

    Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
    . It also features a subset of the .NET base class libraries (about 70 classes with about 420 methods), a GUI
    Gui

    Gui or guee is a generic term to refer to grillinged dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients....
     framework loosely based on Windows Presentation Foundation
    Windows Presentation Foundation

    The Windows Presentation Foundation , formerly code-named Avalon, is a graphical subsystem in .NET Framework 3.0 , which uses a markup language, known as Extensible Application Markup Language, for rich user interface development....
    , and additional libraries specific to embedded applications.
  • Mono
    Mono (software)

    Mono is a project led by Novell to create an Ecma International standard compliant, .NET Framework-compatible set of tools, including among others a C Sharp compiler and a Common Language Runtime....
     is an implementation of the CLI and portions of the .NET Base Class Library (BCL), and provides additional functionality. It is dual-licensed under free software
    Free software

    Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
     and proprietary software
    Proprietary software

    Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party....
     licenses. Mono is being developed by Novell, Inc. It includes support for ASP.NET, ADO.NET, and evolving support for Windows Forms
    Windows Forms

    Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
     libraries. It also includes a C# compiler, and a VB.NET compiler is in pre-beta form.
  • is an implementation of the CLI and portions of the .NET Base Class Library (BCL). It is free software
    Free software

    Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
    . It parses .NET assemblies and generates unmanaged C++ code that can be compiled and linked within any ANSI C++ application on any platform.
  • .NET Compact Framework implementation for Symbian (S60)


See also

  • Comparison of the Java and .NET platforms
    Comparison of the Java and .NET platforms

    This is a comparison of Microsoft software development withthe other widely-used alternative platform, namely Java programming development which is largely controlled by Sun Microsystems and used with modifications by IBM and Apple Inc.....
  • Common Language Infrastructure
    Common Language Infrastructure

    The Common Language Infrastructure is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of a number of runtimes including the .NET Framework, Mono , and Portable.NET....
     (CLI Languages)
  • Mono (software)
    Mono (software)

    Mono is a project led by Novell to create an Ecma International standard compliant, .NET Framework-compatible set of tools, including among others a C Sharp compiler and a Common Language Runtime....
  • COM Interop
    COM Interop

    COM Interop is a technology included in the .NET Common Language Runtime that enables Component Object Model objects to interact with .NET objects, and vice versa....


Components and libraries
  • Base Class Library
    Base Class Library

    The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
  • ADO.NET
    ADO.NET

    ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
  • ASP.NET
    ASP.NET

    ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
  • Silverlight
    Microsoft Silverlight

    Microsoft Silverlight is a programmable web browser plugin that enables features such as animation, vector graphics and multimedia that characterizes rich Internet applications....
  • Microsoft Enterprise Library
    Microsoft Enterprise Library

    The Microsoft Enterprise Library is a set of tools and Library for the Microsoft .NET Framework. It provides an API to facilitate best practices in core areas of programming including data access, security, logging, exception handling and others....
     - A collection of supplemental libraries for .NET.
  • Web Services Enhancements
    Web Services Enhancements

    Web Services Enhancements is an add-on to the Microsoft .NET Framework which includes a set of classes that implement additional List of Web service specifications Web service List of Web service specifications#Security Specifications chiefly in areas such as security, reliable messaging, and sending attachments....


External links

  • on Channel 9 with , general manager of the .NET Framework team, about .NET Fx 3.5; streaming wmv
    Windows Media Video

    Windows Media Video is a Data compression video file format for several Proprietary software codecs developed by Microsoft. The original codec, known as WMV, was originally designed for Internet streaming applications, as a competitor to RealVideo....
     file.