What's New in the .NET Framework 4

Updated: March 2012

This topic contains information about key features and improvements in the .NET Framework version 4. This topic does not provide comprehensive information about all new features and is subject to change.

The .NET Framework 4 introduces an improved security model. For more information, see Security Changes in the .NET Framework 4. For lists of new namespaces, new types, and new members added to existing types, see New Types and Members in the .NET Framework 4. Other new features and improvements in the .NET Framework 4 are described in the following sections:

  • Application Compatibility and Deployment

  • Core New Features and Improvements

  • Managed Extensibility Framework

  • Parallel Computing

  • Networking

  • Web

  • Client

  • Data

  • Windows Communication Foundation

  • Windows Workflow Foundation

The following optional updates to .NET Framework 4 are also available:

Application Compatibility and Deployment

The .NET Framework 4 is highly compatible with applications that are built with earlier .NET Framework versions, except for some changes that were made to improve security, standards compliance, correctness, reliability, and performance.

The .NET Framework 4 does not automatically use its version of the common language runtime to run applications that are built with earlier versions of the .NET Framework. To run older applications with .NET Framework 4, you must compile your application with the target .NET Framework version specified in the properties for your project in Visual Studio, or you can specify the supported runtime with the <supportedRuntime> Element in an application configuration file.

If your application or component does not work after .NET Framework 4 is installed, please submit a bug on the Microsoft Connect Web site. You can test compatibility as described in the .NET Framework 4 Application Compatibility topic and learn about new features by using the Visual Studio 2010 and .NET Framework 4 Walkthroughs.

For guidance about migrating to the .NET Framework 4, see Migration Guide to the .NET Framework 4 and Version Compatibility in the .NET Framework.

The following sections describe deployment improvements.

Client Profile

The .NET Framework 4 Client Profile supports more platforms than in previous versions and provides a fast deployment experience for your applications. Several new project templates now target the Client Profile by default. For more information, see .NET Framework Client Profile.

In-Process Side-by-Side Execution

This feature enables an application to load and start multiple versions of the .NET Framework in the same process. For example, you can run applications that load add-ins (or components) that are based on the .NET Framework 2.0 SP1 and add-ins that are based on the .NET Framework 4 in the same process. Older components continue to use the older .NET Framework version, and new components use the new .NET Framework version. For more information, see In-Process Side-by-Side Execution.

Portable Class Library

When you install Visual Studio 2010 Service Pack 1 (SP1) and the Portable Library Tools, you can create portable class libraries that run on a variety of .NET Framework platforms without recompiling. For more information, see Portable Class Libraries.

Back to top

Core New Features and Improvements

The following sections describe new features and improvements provided by the common language runtime and the base class libraries.

Diagnostics and Performance

Earlier versions of the .NET Framework provided no way to determine whether a particular application domain was affecting other application domains, because the operating system APIs and tools, such as the Windows Task Manager, were precise only to the process level. Starting with the .NET Framework 4, you can get processor usage and memory usage estimates per application domain.

You can monitor CPU and memory usage of individual application domains. Application domain resource monitoring is available through the managed and native hosting APIs and event tracing for Windows (ETW). When this feature has been enabled, it collects statistics on all application domains in the process for the life of the process. See the new AppDomain.MonitoringIsEnabled property.

You can now access the ETW events for diagnostic purposes to improve performance. For more information, see CLR ETW Events and Controlling .NET Framework Logging. Also see Performance Counters and In-Process Side-By-Side Applications.

The System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute attribute enables managed code to handle exceptions that indicate corrupted process state.

Globalization

The .NET Framework 4 provides new neutral and specific cultures, updated property values, improvements in string handling, and other improvements. For more information, see What's New in Globalization and Localization.

Garbage Collection

The .NET Framework 4 provides background garbage collection. This feature replaces concurrent garbage collection in previous versions and provides better performance. For more information, see Fundamentals of Garbage Collection.

Code Contracts

Code contracts let you specify contractual information that is not represented by a method's or type's signature alone. The new System.Diagnostics.Contracts namespace contains classes that provide a language-neutral way to express coding assumptions in the form of preconditions, postconditions, and object invariants. The contracts improve testing with run-time checking, enable static contract verification, and support documentation generation. For more information, see Code Contracts.

Design-Time-Only Interop Assemblies

You no longer have to ship primary interop assemblies (PIAs) to deploy applications that interoperate with COM objects. In the .NET Framework 4, compilers can embed type information from interop assemblies, selecting only the types that an application (for example, an add-in) actually uses. Type safety is ensured by the common language runtime. See Using COM Types in Managed Code and Walkthrough: Embedding Type Information from Microsoft Office Assemblies (C# and Visual Basic).

Dynamic Language Runtime

The dynamic language runtime (DLR) is a new runtime environment that adds a set of services for dynamic languages to the CLR. The DLR makes it easier to develop dynamic languages to run on the .NET Framework and to add dynamic features to statically typed languages. To support the DLR, the new System.Dynamic namespace is added to the .NET Framework.

The expression trees are extended with new types that represent control flow, for example, System.Linq.Expressions.LoopExpression and System.Linq.Expressions.TryExpression. These new types are used by the dynamic language runtime (DLR) and not used by LINQ.

In addition, several new classes that support the .NET Framework infrastructure are added to the System.Runtime.CompilerServices namespace. For more information, see Dynamic Language Runtime Overview.

Covariance and Contravariance

Several generic interfaces and delegates now support covariance and contravariance. For more information, see Covariance and Contravariance in Generics.

BigInteger and Complex Numbers

The new System.Numerics.BigInteger structure is an arbitrary-precision integer data type that supports all the standard integer operations, including bit manipulation. It can be used from any .NET Framework language. In addition, some of the new .NET Framework languages (such as F# and IronPython) have built-in support for this structure.

The new System.Numerics.Complex structure represents a complex number that supports arithmetic and trigonometric operations with complex numbers.

Tuples

The .NET Framework 4 provides the System.Tuple class for creating tuple objects that contain structured data. It also provides generic tuple classes to support tuples that have from one to eight components (that is, singletons through octuples). To support tuple objects that have nine or more components, there is a generic tuple class with seven type parameters and an eighth parameter of any tuple type. 

File System Enumeration Improvements

New file enumeration methods improve the performance of applications that access large file directories or that iterate through the lines in large files. For more information, see How to: Enumerate Directories and Files.

Memory-Mapped Files

The .NET Framework now supports memory-mapped files. You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.

64-Bit Operating Systems and Processes

You can identify 64-bit operating systems and processes with the Environment.Is64BitOperatingSystem and Environment.Is64BitProcess properties.

You can specify a 32-bit or 64-bit view of the registry with the Microsoft.Win32.RegistryView enumeration when you open base keys.

Other New Features

The following list describes additional new capabilities, improvements, and conveniences. Several of these are based on customer suggestions.

Back to top

Managed Extensibility Framework

The Managed Extensibility Framework (MEF) is a new library in the .NET Framework 4 that helps you build extensible and composable applications. MEF enables you to specify points where an application can be extended, to expose services to offer to other extensible applications and to create parts for consumption by extensible applications. It also enables easy discoverability of available parts based on metadata, without the need to load the assemblies for the parts. For more information, see Managed Extensibility Framework Overview and Managed Extensibility Framework. For a list of the MEF types, see the System.ComponentModel.Composition namespace.

Back to top

Parallel Computing

The .NET Framework 4 introduces a new programming model for writing multithreaded and asynchronous code that greatly simplifies the work of application and library developers. The new model enables developers to write efficient, fine-grained, and scalable parallel code in a natural idiom without having to work directly with threads or the thread pool. The new System.Threading.Tasks namespace and other related types support this new model. Parallel LINQ (PLINQ), which is a parallel implementation of LINQ to Objects, enables similar functionality through declarative syntax. For more information, see Parallel Programming in the .NET Framework.

Back to top

Networking

Networking improvements include the following:

Back to top

Web

ASP.NET version 4 introduces new features in the following areas:

  • Core services, including a new API that lets you extend caching, support for compression for session-state data, and a new application preload manager (autostart feature).

  • Web Forms, including more integrated support for ASP.NET routing, enhanced support for Web standards, updated browser support, new features for data controls, and new features for view state management.

  • Web Forms controls, including a new Chart control.

  • MVC, including new helper methods for views, support for partitioned MVC applications, and asynchronous controllers.

  • Dynamic Data, including support for existing Web applications, support for many-to-many relationships and inheritance, new field templates and attributes, and enhanced data filtering.

  • Microsoft Ajax, including additional support for client-based Ajax applications in the Microsoft Ajax Library.

  • Visual Web Developer, including improved IntelliSense for JScript, new auto-complete snippets for HTML and ASP.NET markup, and enhanced CSS compatibility.

  • Deployment, including new tools for automating typical deployment tasks.

  • Multi-targeting, including better filtering for features that are not available in the target version of the .NET Framework.

For more information about these features, see What's New in ASP.NET 4 and Visual Web Developer.

Back to top

Client

Windows Presentation Foundation (WPF) version 4 contains changes and improvements in the following areas:

  • New controls, including Calendar, DataGrid, and DatePicker.

  • VisualStateManager supports changing states of controls.

  • Touch and Manipulation enables you to create applications that receive input from multiple touches simultaneously on Windows 7.

  • Graphics and animation supports layout rounding, Pixel Shader version 3.0, cached composition, and easing functions.

  • Text has improved text rendering and supports customizing the caret color and selection color in text boxes.

  • Binding is supported on the Command property of an InputBinding, dynamic objects, and the Text property.

  • XAML browser applications (XBAPs) support communication with the Web page and support full-trust deployment.

  • New types in the System.Windows.Shell namespace enable you to communicate with the Windows 7 taskbar and pass data to the Windows shell.

  • The WPF and Silverlight Designer in Visual Studio 2010 has various designer improvements to help create WPF or Silverlight applications.

For more information, see What's New in WPF Version 4.

Back to top

Data

ADO.NET

ADO.NET provides new features for the Entity Framework, including persistence-ignorant objects, functions in LINQ queries, and customized object layer code generation. For more information, see What's New in ADO.NET.

Dynamic Data

For ASP.NET 4, Dynamic Data has been enhanced to give you even more power for quickly building data-driven Web sites. This includes the following:

  • Automatic validation that is based on constraints that are defined in the data model.

  • The ability to easily change the markup that is generated for fields in the GridView and DetailsView controls by using field templates that are part of a Dynamic Data project.

For more information, see What's New in ASP.NET 4 and Visual Web Developer.

WCF Data Services

ADO.NET Data Service has been renamed to WCF Data Services, and has the following new features

  • Data binding.

  • Counting entities in an entity set.

  • Server-driven paging.

  • Query projections.

  • Custom data service providers.

  • Streaming of binary resources.

For more information, see What's New in WCF Data Services.

Back to top

Windows Communication Foundation

Windows Communication Foundation (WCF) provides the following improvements:

  • Configuration-based activation: Removes the requirement for having an .svc file.

  • System.Web.Routing integration: Gives you more control over your service's URL by allowing the use of extensionless URLs.

  • Multiple IIS site bindings support: Allows you to have multiple base addresses with the same protocol on the same Web site.

  • Routing Service: Allows you to route messages based on content.

  • Support for WS-Discovery: Allows you to create and search for discoverable services.

  • Standard endpoints: Predefined endpoints that allow you to specify only certain properties.

  • Workflow services: Integrates WCF and WF by providing activities to send and receive messages, the ability to correlate messages based on content, and a workflow service host.

  • WCF REST features:

    • Web HTTP caching: Allows caching of Web HTTP service responses.

    • Web HTTP formats support: Allows you to dynamically determine the best format for a service operation to respond in.

    • Web HTTP services help page: Provides an automatic help page for Web HTTP services, similar to the WCF service help page.

    • Web HTTP error handling: Allows Web HTTP Services to return error information in the same format as the operation.

    • Web HTTP cross-domain JavaScript support: Allows use of JSON Padding (JSONP).

  • Simplified configuration: Reduces the amount of configuration a service requires

For more information, see What's New in Windows Communication Foundation.

Back to top

Windows Workflow Foundation

Windows Workflow Foundation (WF) provides improvements in the following areas:

  • Improved workflow activity model: The Activity class provides the base abstraction of workflow behavior.

  • Rich composite activity options: Workflows benefit from new flow-control activities that model traditional flow-control structures, such as Flowchart, TryCatch, and Switch<T>.

  • Expanded built-in activity library: New features of the activity library include new flow-control activities, activities for manipulating member data, and activities for controlling transactions.

  • Explicit activity data model: New options for storing or moving data include variable and directional arguments.

  • Enhanced hosting, persistence, and tracking options: Hosting enhancements include more options for running workflows, explicit persistence using the Persistactivity, persisting without unloading, preventing persistence by using no-persist zones, using ambient transactions from the host, recording tracking information to the event log, and resuming pending workflows by using a Bookmark object.

  • Easier ability to extend the WF Designer: The new WF Designer is built on Windows Presentation Foundation (WPF) and provides an easier model to use when rehosting the WF Designer outside of Visual Studio.

For more information, see What's New in Windows Workflow Foundation.

Back to top

Updates to the .NET Framework 4

Platform updates are feature upgrades to the .NET Framework 4. These updates add types and members that you can target when you build your applications. The goal of platform updates is to incrementally expose new features so that you can build rich applications now, before the next major .NET Framework release. The latest platform update available is Update 4.0.3.

Each platform update builds on previous updates, so you can install Update 4.0.3 to get all the features listed in the following table.

Feature

4.0.1

4.0.2

4.0.3

Compensation for custom hosts

SqlWorkflowInstanceStore on SQL Azure

State machine workflows (including designer support)

SQL Server Express Local Database Runtime support in SqlClient

AlwaysOn support in SqlClient

New assemblies in .NET Framework 4 Portable Class Libraries

Correlated Connection ID in SqlClient

Sustained low latency in garbage collection

Windows Workflow Foundation messaging activities enabled across multiple hosts

Support for running workflows in partial trust

Platform Updates

To install a platform update on Visual Studio 2010, you must first install Visual Studio 2010 Service Pack 1 (SP1), and then download one of these packages: design-time update, multi-targeting pack, or run-time update. To develop applications, download the design-time update.

Downloads for Update 4.0.3:

  • Design-time update includes the multi-targeting pack and the run-time update. The update configures Visual Studio 2010 SP1 with new .NET Framework targeting profiles, adds new IntelliSense files, and adds items to the toolbox. This is the only update you need to develop applications. See Knowledge Base article KB2600214.

  • Multi-targeting pack contains reference assemblies and IntelliSense files for the platform update. This package is installed as part of the design-time update, but you can install it independently if you want to configure the .NET Framework 4.0.3 on a computer that contains Visual Studio 2012. See Knowledge Base article KB2600213.

  • Run-time update contains the run-time files for the platform update. This package must be deployed on systems where applications that target the platform update are deployed. It is installed as part of the design-time update. See Knowledge Base article KB2600211.

The latest update (4.0.3) includes all the features from the earlier updates. We recommend that you install the latest update. If you want to install an earlier update, see the following articles on the Microsoft Support website:

.NET Framework Compatibility

All of the features in the platform update will also be available in the .NET Framework 4.5. Therefore, applications you build for Update 4.0.3 will also work with the .NET Framework 4.5. Applications that you built for Update 4.0.1 or 4.0.2 will run on a computer that has the .NET Framework 4 and the 4.0.3 run-time update installed. We recommend that you upgrade applications from earlier updates to the Update 4.0.3 run-time, but this is not required.

Targeting Update 4.0.3

When you install the design-time update, you will be able to create new applications that target either the .NET Framework 4.0.3 or the .NET Framework 4.0.3 Client Profile. You can select the target framework when you create a new project or in the project Properties dialog box.

Deploying Update 4.0.3

To configure a computer to run applications that target Update 4.0.3, you must deploy the following run-time files with your application:

For more information, see .NET Framework Deployment Guide for Developers and .NET Framework Client Profile.

Features

The following features are included in the latest platform update.

Compensation for Custom Workflow Hosts

The platform update adds the System.Activities.Statements.CompensationExtension extension to enable compensation behavior in Windows Workflow Foundation. For information about compensation support for custom workflow hosts, see Knowledge Base article KB2478063.

Persistence for SQL Azure

The platform update enables you to use SQL Workflow Instance Store with SQL Azure. For information about persistence support for SQL Azure, see Knowledge Base article KB2478063.

State Machine Workflows

The following new classes were added to support state machine workflows:

For more information about how to use the new state machine functionality, see How to: Create a State Machine Workflow and Introduction to State Machine Hands On Lab.

SQL Server Express Local Database Runtime Support in SqlClient

For more information, see SQL Server Express LocalDB Reference in the SQL Server documentation.

AlwaysOn Support for SqlClient

For more information, see AlwaysOn Availability Groups in the SQL Server documentation.

New Assemblies in .NET Framework 4 Portable Class Libraries

The System.Xml.Linq.dll and System.ComponentModel.DataAnnotations.dll assemblies were added to the Portable Class Library project in the .NET Framework 4.0.3. For more information, see Portable Class Libraries.

Correlated Connection ID in SqlClient

SqlClient sends the connection ID to the server so it can be logged. SqlClient also includes the following capabilities to retrieve the connection ID on the client side if it is available:

  • ConnectionId property on SqlConnection

  • ConnectionId property on SqlException

  • SqlException.ToString will include the connection ID

For more information, see SQL Server Extended Events and Data Tracing in ADO.NET.

Sustained Low Latency in Garbage Collection

The value SustainedLowLatency was added to the GCLatencyMode enumeration. Use this setting to minimize the likelihood of a full-blocking garbage collection during time-sensitive operations. However, full-blocking garbage collection may still occur in situations such as low memory or if garbage collection is deliberately induced. The SustainedLowLatency setting is applicable only when concurrent garbage collection is enabled. If concurrent garbage collection is not enabled, SustainedLowLatency does not affect garbage collection behavior. For more information, see Latency Modes.

Windows Workflow Foundation Messaging Activities Enabled Across Multiple Hosts

This update introduces a new workflow extension that is used by messaging activities to send or receive messages. The extension must be provided by the host to be available for execution. The new extension provides methods for each step in the messaging patterns. A host author implements the methods to use with the existing Windows Workflow Foundation 4 programing model.

Workflows in Partial Trust

This update enables workflows that use Windows Workflow Foundation 4 to run in partially trusted environments. However, SqlWorkflowInstanceStore and Visual Basic expressions are not supported by this update and are not available in partial trust.

Reliability Updates

In addition to the platform updates, the .NET Framework provides reliability updates that fix stability, reliability, and performance issues in the .NET Framework 4. These updates are recommended for all developers who want to improve the performance of their applications:

See Also

Reference

New Types and Members in the .NET Framework 4

Concepts

What's New in Visual Studio 2010

What's New in ASP.NET 4 and Visual Web Developer

What's New in WPF Version 4

What's New in ADO.NET

What's New in Visual Basic 2010

What's New in Visual C# 2010

What's New in Visual C++ 2010

What's New in Visual F# 2010

Other Resources

What's New in Windows Communication Foundation

What's New in Windows Workflow Foundation

What's New in WCF Data Services

Change History

Date

History

Reason

March 2012

Added information about Update 4.0.3.

Information enhancement.

October 2011

Added information about Update 4.0.2.

Information enhancement.

June 2011

Added information about Update 4.0.1.

Information enhancement.