The Microsoft .NET Framework version 2.0 extends the .NET Framework version 1.1 with new features, improvements to existing features, and enhancements to the documentation. This section provides information about some key additions and modifications.
For more information about breaking changes that might affect your application, see Breaking Changes in the .NET Framework.
64-Bit Platform Support
The new generation of 64-bit computers enables the creation of applications that can run faster and take advantage of more memory than is available to 32-bit applications. New support for 64-bit applications enables users to build managed code libraries or easily use unmanaged code libraries on 64-bit computers. For more information, see 64-bit Applications.
Access Control List Support
An access control list (ACL) is used to grant or revoke permission to access a resource on a computer. New classes have been added to the .NET Framework that allow managed code to create and modify an ACL. New members that use an ACL have been added to the I/O, registry, and threading classes.
ADO.NET
New features in ADO.NET include support for user-defined types (UDT), asynchronous database operations, XML data types, large value types, snapshot isolation, and new attributes that allow applications to support multiple active result sets (MARS) with SQL Server 2005. For more information about these and other new ADO.NET features, see What's New in ADO.NET.
ASP.NET
The Microsoft .NET Framework 2.0 includes significant enhancements to all areas of ASP.NET. For Web page development, new controls make it easier to add commonly used functionality to dynamic Web pages. New data controls make it possible to display and edit data on an ASP.NET Web page without writing code. An improved code-behind model makes developing ASP.NET pages easier and more robust. Caching features provide several new ways to cache pages, including the ability to build cache dependency on tables in a SQL Server database.
You can now customize Web sites and pages in a variety of ways. Profile properties enable ASP.NET to track property values for individual users automatically. Using Web Parts, you can create pages that users can customize in the browser. You can add navigation menus using simple controls.
Improvements to Web site features allow you to create professional Web sites faster and more easily. Master pages allow you to create a consistent layout for all the pages in a site, and themes allow you to define a consistent look for controls and static text. To help protect your sites, you can precompile a Web site to produce executable code from source files (both code files and the markup in .aspx pages). You can then deploy the resulting output, which does not include any source information, to a production server. Enhancements to ASP.NET also include new tools and classes to make Web site management easier for Web site developers, server administrators, and hosters.
ASP.NET accommodates a wide variety of browsers and devices. By default, controls render output that is compatible with XHTML 1.1 standards. You can use device filtering to specify different property values on the same control for different browsers.
For a more complete list of new features in ASP.NET, see What's New in ASP.NET.
Authenticated Streams
Applications can use the new NegotiateStream and SslStream classes for authentication and to help secure information transmitted between a client and a server. These authenticated stream classes support mutual authentication, data encryption, and data signing. The NegotiateStream class uses the Negotiate security protocol for authentication. The SslStream class uses the Secure Socket Layer (SSL) security protocol for authentication.
COM Interop Services Enhancements
Four major enhancements have been made to the classes and tools that support interoperability with COM:
The operating system maintains a limited number of handles, which are used to reference critical operating system resources. The new SafeHandle and CriticalHandle classes, and their specialized derived classes, provide safe and reliable means of manipulating operating system handles.
Marshaling improvements make interoperating with native code easier. Two enhancements to the interop marshaler satisfy the two most common user requests: the ability to wrap native function pointers into delegates and the ability to marshal fixed-size arrays of structures inside structures.
The performance of calls between applications in different application domains has been made much faster for common call types.
New switches on the Type Library Importer (Tlbimp.exe) and Type Library Exporter (Tlbexp.exe) eliminate dependency on the registry to resolve type library references. This enhancement is important for creating robust build environments.
Console Class Additions
New members of the Console class enable applications to manipulate the dimensions of the console window and screen buffer; to move a rectangular area of the screen buffer, which is useful for performing smooth, simple animation; and to wait while reading console input until a key is pressed. Other new class members control the foreground and background colors of text, the visibility and size of the cursor, and the frequency and duration of the console beep.
Data Protection API
The new Data Protection API (DPAPI) includes four methods that allow applications to encrypt passwords, keys, connections strings, and so on, without calling platform invoke. You can also encrypt blocks of memory on computers running Windows Server 2003 or later operating systems.
Debugger Display Attributes
You can now control how Visual Studio displays a class or member when an application is being debugged. The debugger's Display Attributes feature enables you to identify the most useful information to display in the debugger.
Debugger Edit and Continue Support
The .NET Framework 2.0 reintroduces the Edit and Continue feature that enables a user who is debugging an application in Visual Studio to make changes to source code while executing in Break mode. After source code edits are applied, the user can resume code execution and observe the effect. Furthermore, the Edit and Continue feature is available in any programming language supported by Visual Studio.
Detecting Changes in Network Connectivity
The NetworkChange class allows applications to receive notification when the Internet Protocol (IP) address of a network interface, also known as a network card or adapter, changes. An interface address can change for a variety of reasons, such as a disconnected network cable, moving out of range of a wireless local area network, or hardware failure. The NetworkChange class provides address change notification by raising events when a change is detected.
Distributed Computing
In the System.Net namespace, support has been added for FTP client requests, caching of HTTP resources, automatic proxy discovery, and obtaining network traffic and statistical information. The namespace now includes a Web server class (HttpListener) that you can use to create a simple Web server for responding to HTTP requests. Classes that generate network traffic have been instrumented to output trace information for application debugging and diagnostics. Security and performance enhancements have been added to the System.Net.Sockets.Socket and System.Uri classes.
In the System.Web.Services namespaces, support for SOAP 1.2 and nullable elements has been added.
In the System.Runtime.Remoting.Channels namespaces, channel security features have been added. The TCP channel now supports authentication and encryption, as well as several new features to better support load balancing.
EventLog Enhancements
You can now use custom DLLs for EventLog messages, parameters, and categories.
Expanded Certificate Management
The .NET Framework now supports X.509 certificate stores, chains, and extensions. In addition, you can sign and verify XML using X.509 certificates without using platform invoke. There is also support for PKCS7 signature and encryption, and CMS (a superset of the PKCS7 standard available on Microsoft Windows 2000 and later operating systems). PKCS7 is the underlying format used in Secure/Multipurpose Internet Mail Extensions (S/MIME) for signing and encrypting data. For more information, see the X509Certificate2 class topic.
FTP Support
Applications can now access File Transfer Protocol resources using the WebRequest, WebResponse, and WebClient classes.
Generics and Generic Collections
The .NET Framework 2.0 introduces generics to allow you to create flexible, reusable code. Language features collectively known as generics act as templates that allow classes, structures, interfaces, methods, and delegates to be declared and defined with unspecified, or generic type parameters instead of specific types. Actual types are specified later when the generic is used. Several namespaces, such as System Namespace and System.Collections.Generic, provide generic classes and methods. The new System.Collections.Generic namespace provides support for strongly typed collections. System.Nullable<T> is a standard representation of optional values. Generics are supported in three languages: Visual Basic, C#, and C++.
Reflection has been extended to allow runtime examination and manipulation of generic types and methods. New members have been added to System.Type and System.Reflection.MethodInfo, including IsGenericType to identify generic types (for example, class Gen<T,U> {...}), GetGenericArguments to obtain type parameter lists, and MakeGenericType to create specific types (for example, new Gen<int, long>()).
Globalization
Five new globalization features provide greater support for developing applications intended for different languages and cultures.
Support for custom cultures enables you to define and deploy culture-related information as needed. This feature is useful for creating minor customizations of existing culture definitions, and creating culture definitions that do not yet exist in the .NET Framework. For more information, see the CultureAndRegionInfoBuilder class.
Encoding and decoding operations map a Unicode character to or from a stream of bytes that can be transferred to a physical medium such as a disk or a communication line. If a mapping operation cannot be completed, you can compensate by using the new encoding and decoding fallback feature supported by several classes in the System.Text namespace.
Members in the UTF8Encoding class, which implements UTF-8 encoding, are now several times faster than in previous releases. UTF-8 is the most common encoding used to transform Unicode characters into bytes on computers.
The .NET Framework now supports the latest normalization standard defined by the Unicode Consortium. The normalization process converts character representations of text to a standard form so the representations can be compared for equivalence.
The GetCultureInfo method overload provides a cached version of a read-only CultureInfo object. Use the cached version when creating a new CultureInfo object to improve system performance and reduce memory usage.
I/O Enhancements
Improvements have been made to the usability and functionality of various I/O classes. It is now easier for users to read and write text files and obtain information about a drive.
You can now use the classes in the System.IO.Compression namespace to read and write data with the GZIP compression and decompression standard, described in the IETF RFC 1951 and RFC 1952 specifications, which are available at the IETF Request for Comments (RFC) search page. Note: search is limited to RFC numbers.
Manifest-Based Activation
This feature provides new support for loading and activating applications through the use of a manifest. Manifest-based activation is essential for supporting ClickOnce applications. Traditionally, applications are activated through a reference to an assembly that contains the application's entry point. For example, clicking an application's .exe file from within the Windows shell causes the shell to load the common language runtime (CLR) and call a well-known entry point within that .exe file's assembly.
The manifest-based activation model uses an application manifest for activation rather than an assembly. A manifest fully describes the application, its dependencies, security requirements, and so forth. The manifest model has several advantages over the assembly-based activation model, especially for Web applications. For example, the manifest contains the security requirements of the application, which enables the user to decide whether to allow the application to execute before downloading the code. The manifest also contains information about the application dependencies.
Manifest-based activation is provided by a set of APIs that allow managed hosts to activate applications and add-ins described by a manifest. These APIs contain a mixture of both new classes and extensions to existing classes.
This activation model also invokes an entity called a Trust Manager that performs the following tasks:
Determines whether an application is allowed to be activated. This decision can be made by prompting the user, querying policy, or by any other means deemed appropriate for a given Trust Manager.
Sets up the security context to run an application in. Most commonly, this step involves setting up a code access security (CAS) policy tree on the application domain in which the application will run.
.NET Framework Remoting
.NET Framework remoting now supports IPv6 addresses and the exchange of generic types. The classes in the System.Runtime.Remoting.Channels.Tcp namespace support authentication and encryption using the Security Support Provider Interface (SSPI). Classes in the new System.Runtime.Remoting.Channels.Ipc namespace allow applications on the same computer to communicate quickly without using the network. Finally, you can now configure the connection cache time-out and the number of method retries, which can improve the performance of network load-balanced remote clusters.
Obtaining Information About Local Computer Network Configuration and Usage
Using classes in the System.Net.NetworkInformation namespace, applications can access IP, IPv4, IPv6, TCP, and UDP network traffic statistics. Applications can also view address and configuration information for the local computer's network adapters. This information is similar to the information returned by the Ipconfig.exe command-line tool.
Ping
The Ping class allows an application to determine whether a remote computer is accessible over the network. This class provides functionality similar to the Ping.exe command-line tool, and supports synchronous and asynchronous calls.
Processing HTTP Requests from Within Applications
You can use the HttpListener class to create a simple Web server that responds to HTTP requests. The Web server is active for the lifetime of the HttpListener object and runs within your application, with your application's permissions. This class is available only on computers running the Windows XP Service Pack 2 or Windows Server 2003 operating systems.
Programmatic Control of Caching
Using the classes in the System.Net.Cache namespace, applications can control the caching of resources obtained using the WebRequest, WebResponse, and WebClient classes. You can use the predefined cache policies provided by the .NET Framework or specify a custom cache policy. You can specify a cache policy for each request and define a default cache policy for requests that do not specify a cache policy.