The .NET Framework version 2.0 Beta 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.
64-Bit Platform SupportThe 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.
Access Control List SupportAn 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, and new members that utilize an ACL have been added to the I/O, registry, and threading classes.
ADO.NETNew 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.NETThe Microsoft .NET Framework 2.0 Beta 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 include 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 themselves in the browser. You can automatically track page views and control clicks with site statistics, and 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. The new adaptive rendering architecture enables controls to automatically render the correct markup for a specific browser or device; you no longer need to use separate classes for mobile development. You can use device filtering to specify different property values on the same control for different browsers, and ASP.NET includes special controls specifically designed for creating pages that run on small-form browsers and mobile phones.
For a more complete list of new features in ASP.NET, see What's New in ASP.NET.
Authenticated StreamsApplications 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 EnhancementsFour 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) tools eliminate dependency on the registry to resolve type library references. This enhancement is important for creating robust build environments.
Console Class AdditionsNew 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 APIThe 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 AttributesDevelopers can now control how Visual Studio displays a class or member when an application is being debugged. The debugger's Display Attributes feature enables a developer to identify the most useful information to display in the debugger.
Debugger Edit and Continue SupportThe .NET Framework 2.0 Beta 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 ConnectivityThe 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.
Disjunctive DemandsIn prior versions of the .NET Framework, you could not allow multiple code identities access to a class or method. For example, only one strong name could be demanded at a time, creating a problem in situations such as testing multiple strong-named assemblies from different sources. What was needed was a way to combine identity elements using a bitwise OR operation. In response to this need, new disjunctive security actions have been created that allow multiple identity permissions to be simultaneously demanded, inheritance-demanded, or link-demanded. In the case of strong-named assemblies, a developer using the DemandChoice security action can now demand several strong name identities, any of which will allow the stack walk to succeed. The three new security actions that allow disjunctive demands are DemandChoice, InheritanceDemandChoice, and LinkDemandChoice.
Distributed ComputingIn 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 (HttpWebListener Class) 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 EnhancementsDevelopers can now use custom DLLs for EventLog messages, parameters and categories.
Expanded Certificate ManagementThe .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 PCKS7 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 System.Security.Cryptography.X509Certificates.X509CertificateEx.
FTP SupportApplications can now access File Transfer Protocol (FTP) resources using the WebRequest, WebResponse, and WebClient classes.
Generics and Generic CollectionsThe .NET Framework 2.0 Beta introduces generics to allow users 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 HasGenericParameters to detect identify generic types (for example, class Gen<T,U> {...}), GetGenericParameters to obtain type parameter lists, and BindGenericParameters to create specific types, for example, new Gen<int, long>().
GlobalizationFive new globalization features provide greater support for developing applications intended for different languages and cultures.
Support for custom cultures enables developers 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 T.System.Globalization.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, developers can compensate by using the new encoding and decoding fallback feature supported by several classes in the System.Text namespace.
Users who require greater performance from the UTF8Encoding class, which implements UTF-8, the most common encoding used to transform Unicode characters into bytes on computers, will be pleased to know that members in this class are now several times faster than in previous releases.
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 EnhancementsImprovements 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.
Developers 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, available at http://www.ietf.org.
Manifest-Based ActivationThis 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. Clicking on an application's .exe file from within the Windows shell, for example, 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 whose role is to perform the following tasks:
.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 UsageUsing 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.
PingThe 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 ApplicationsYou can use the HttpListener class, you can 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 CachingUsing 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.
Programming LanguagesFour Microsoft programming languages explicitly target the .NET Framework. For more information about new and enhanced features in these languages, see the following topics:
What's New in C# 2.0
What's New in the Visual J# Language
What's New in the Microsoft C/C++ Language
What's New in the Visual Basic Language
Visual Basic Compiler and Language
Language improvements in Visual Basic simplify source code and enable interaction with components that use advanced features.
Compiler
Visual Basic introduces a new conditional compilation constant, VBC_VER, for all projects. This version has the value of VBC_VER 8.0.
The Visual Basic command-line compiler now stores the default command-line options in the Vbc.rsp file, in the same directory as the command-line compiler, Vbc.exe. You can edit Vbc.rsp to reconfigure the default command-line options.
There are four new command-line compiler options:
The /doc option generates an XML documentation file based on comments within your code.
The /noconfig option causes the compiler to ignore the Vbc.rsp file.
The /codepage option specifies which codepage to use when opening source files.
The /filealign option specifies the size of sections in your output file.
For more information, see Visual Basic Compiler Options.
Language
There are several new elements in this version of the Visual Basic language:
Continue Statement
Operator Statement
Using Statement
IsFalse Operator
IsNot Operator
IsTrue Operator
SByte Data Type
UInteger Data Type
ULong Data Type
UShort Data Type
Expands
Global
Of
Narrowing
Widening
Security ExceptionsThe System.Security.SecurityException class has been expanded to provide additional data that facilitates investigation into the cause of security exceptions. New properties provide information that includes the method in which the exception occurred, the first permission that failed, the zone or URL of the assembly, the security action that failed, and the security action on the call stack, such as Deny or PermitOnly, that caused the exception.
Serial I/O Device SupportThe new SerialPort class provides applications with the ability to access the serial ports on a computer, and to communicate with serial I/O devices.
SerializationThe BinaryFormatter class now supports version-tolerant serialization, which allows a type to be deserialized from the serialization of a different version.
XML serialization now supports the use of properties instead of fields to represent schema elements, the serialization of generic types, and the use of the Nullable!1 structure to represent nullable elements. The IXmlSerializable interface supports custom schema generation.
The new XML Serializer Generator (Sgen.exe) allows you to precompile the code used by Web services clients to serialize transmitted information, greatly improving the client startup time.
SMTP SupportUsing the classes in the System.Net.Mail and System.Net.Mime namespaces, applications can send e-mail to one or more recipients. Mail can be sent with alternate views and can include attachments. Sending carbon copies and blind carbon copies is also supported.
Strongly-Typed Resource SupportThe Resource File Generator (Resgen.exe) tool creates resource files that are embedded in executable files and satellite assemblies. The Resgen tool produces a wrapper class for each resource file, which gives the developer easy access to resources and prevents spelling mistakes in resource names.
Threading ImprovementsDevelopers can now name cross-process communication events that are created purely in managed code. Also, the Semaphore class supports specialized resource counting.
Trace Data FilteringThe .NET Framework 2.0 Beta provides classes that trace and log system events related to I/O, application startup and shutdown, and so on. However, the enormous volume and diverse types of trace information make it difficult for users to analyze this data. New support for trace data filtering enables the user to specify the type of information to be logged.
TransactionsThe new System.Transactions namespace contains classes that allow your applications to participate in transactions managed by the Microsoft Distributed Transaction Coordinator (DTC) or other transaction managers. You can use the TransactionScope class to create simple, transactional code blocks, or the ITransaction and IEnlistmentNotification interfaces to maintain participation through each phase of a multiple-phase distributed transaction. This transaction infrastructure can easily interoperate with the existing System.EnterpriseServices (COM+) transaction infrastructure. A new LightweightTransactionManager class provides a faster alternative to the DTC for simple transactions.
Web ServicesWeb services support SOAP 1.2 and the WS-I Basic Profile 1.0, which is documented at http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html.
When consuming two or more Web services that define a shared type, the client proxies generated for those Web services share the corresponding type on the client. This allows clients to easily pass instances of shared types among Web services.
You can now invoke Web methods asynchronously using an event-based programming pattern.
Windows Forms-Related FeaturesClickOnce Deployment
ClickOnce deployment allows you to deploy self-updating Windows applications that can be installed and run as easily as Web applications. You can deploy Windows client and command line applications. There are new Publish Project commands on the Build and Project menus in Visual Studio. For more information, see ClickOnce Deployment Overview.
Application Settings
Application settings for Windows Forms makes it easy to create, store, and maintain custom application and user preferences on the client. With Windows Forms settings, you can store not only application data such as database connection strings, but also user-specific data, such as toolbar positions and most-recently-used lists. For more information, see Application Settings Overview.
New Data-Binding Model
The DataConnector component simplifies the process of data-binding because it acts as an intermediary between the bound control and the target data source. It automatically manages many of the more difficult binding issues such as currency, data-related events, and target data-source changes. It is also designed to interoperate with other data-related Windows Forms controls, particularly the DataNavigator and the DataGridView controls. For more information, see DataConnector Component. The DataConnector component was designed to simplify the process of binding controls to an underlying data source. It acts as both a conduit and a data source to which other controls bind.
New Windows Forms Controls
The DataGridView control provides a powerful and flexible way to display data in a tabular format. It can be used to show read-only views of a small amount of data, or it can be scaled to show editable views of very large sets of data. The data can reside in an external data source or be added directly to the control. For more information, see DataGridView Control Overview.
ToolStrip controls are toolbars that can host menus, controls, and user controls in your Windows Forms applications. The ToolStrip and its associated classes enable you to create toolbars and other user interface elements in a style that is consistent with Microsoft Windows XP, Microsoft Office, Microsoft Internet Explorer, or can be customized. For more information, see ToolStrip Control Overview.
The MaskedTextBox control uses a mask definition to distinguish between valid and invalid user input. For more information, see MaskedTextBox Control.
The Windows Forms SoundPlayer component enables you to easily include sounds in your applications. The SoundPlayer component can play sound files in the .wav format, either from a resource or from Universal Naming Conventions (UNC) or HTTP locations. Additionally, the SoundPlayer component enables you to load or play sounds asynchronously. For more information see SoundPlayer Component.
The Windows Forms SplitContainer control can be thought of as a composite; it is two panels separated by a movable bar. When the mouse pointer hovers over the bar, the cursor changes to show that the bar is movable. Use this control to create complex, resizable user interfaces that are effective for displaying and browsing information. For more information see SplitContainer Control.
The ListView control now supports three features provided by Windows XP and the Windows Server 2003 family: tile view, grouping, and drag-and-drop item repositioning.
The ActiveDocumentHost control lets you display active documents such as Microsoft Office documents in your Windows Forms applications. Active documents are documents designed to allow hosting in other documents or applications. Active documents are initially displayed in a static, read-only state, but can be activated in place to allow user editing. For more information, see ActiveDocumentHost Control Overview.
The WebBrowser control lets you host Web pages in your Windows Forms applications. You can use the WebBrowser control to provide integrated HTML-based Help or Internet Web browsing capabilities in your application. Additionally, you can use the WebBrowser control to convert existing Web applications to client applications that seamlessly integrate dynamic HTML (DHTML) code with the user interface capabilities of Windows Forms. For more information, see WebBrowser Control Overview.
The FlowLayoutPanel control arranges its contents in a horizontal or vertical flow direction. The TableLayoutPanel control arranges its contents in a grid. Because the layout is performed both at design time and run time, it can change dynamically as the application environment changes. For more information, see FlowLayoutPanel Control Overview and TableLayoutPanel Control Overview.
The BackgroundWorker component enables you to perform operations in the background that can take a long time to execute, such as image downloads and database transactions. For more information see BackgroundWorker Component Overview.
The Asynchronous Pattern for Components is an event-driven model that makes available the advantages of multithreaded applications while hiding many of the complex issues inherent in multithreaded design. For more information, see Asynchronous Pattern for Components.
XML-Related FeaturesThe .NET Framework 2.0 Beta includes support for the XQuery language, a new XML data store, and a mapping technology that allows you to map data that is stored in a relational database to an XML view, or a common language runtime (CLR) object view. In addition, there are also enhancements to existing XML-related classes including type support on the XmlReader, XmlWriter, and XPathNavigator classes, a new model for creating XmlReader and XmlWriter objects, a new XSL Transformation (XSLT) processor, and performance improvements. For more information, see What's New in System.Xml.