.NET Framework 4 の新機能
このトピックでは、.NET Framework Version 4 の主要機能および機能強化について説明します。 このトピックは、すべての新機能の包括的な情報を提供するものではありません。また、この内容は変更される可能性があります。
.NET Framework 4 では、強化されたセキュリティ モデルが導入されています。 詳細については、「.NET Framework 4 におけるセキュリティの変更点」を参照してください。
以下の各セクションで .NET Framework 4 のその他の新機能と機能強化について説明します。
アプリケーションの互換性と配置
コア機能の新機能と機能強化
Managed Extensibility Framework
並列コンピューティング
ネットワーキング
Web
クライアント
データ
Windows Communication Foundation
Windows Workflow Foundation
新しい名前空間、新しい型、および既存の型に追加された新しいメンバーの一覧については、「.NET Framework 4 における新しい型およびメンバー」を参照してください。
Visual Studio 2010 Service Pack 1 (SP1) には、.NET Framework 4 の更新プログラムが含まれています。
アプリケーションの互換性と配置
.NET Framework 4 は、旧バージョンの .NET Framework でビルドされたアプリケーションとの互換性が高いのですが、セキュリティ、標準への準拠、正確性、信頼性、およびパフォーマンスの向上のためにいくつかの変更が加えられています。
旧バージョンの .NET Framework でビルドされたアプリケーションを実行するために、.NET Framework 4 の共通言語ランタイム バージョンが自動的に使用されることはありません。 .NET Framework 4 で旧バージョンのアプリケーションを実行するには、Visual Studio のプロジェクトのプロパティに指定されたターゲット バージョンの .NET Framework を使用して、アプリケーションをコンパイルする必要があります。または、アプリケーション構成ファイルの <supportedRuntime> 要素を使用して、サポートするランタイムを指定できます。
.NET Framework 4 のインストール後にアプリケーションまたはコンポーネントが機能しなくなった場合は、Microsoft Connect Web サイトにバグを送信してください。 互換性をテストするには、「.NET Framework 4 Application Compatibility (.NET Framework 4 のアプリケーションの互換性)」を参照してください。新機能について学習するには、「Visual Studio 2010 and .NET Framework 4 Walkthroughs (Visual Studio 2010 と .NET Framework 4 のチュートリアル)」を参照してください。
.NET Framework 4 に移行する方法については、「.NET Framework 4 移行ガイド」および「.NET Framework のバージョンの互換性」を参照してください。
以降のセクションでは、配置に関する機能強化について説明します。
Client Profile
.NET Framework 4 Client Profile は、以前のバージョンよりも多くのプラットフォームをサポートしており、アプリケーションの迅速な配置を実現します。 いくつかの新しいプロジェクト テンプレートでは、既定で Client Profile を対象とするようになりました。 詳細については、「.NET Framework Client Profile」を参照してください。
インプロセスの side-by-side 実行
この機能を使用すると、アプリケーションは複数のバージョンの .NET Framework を同じプロセスで読み込んで起動することができます。 たとえば、.NET Framework 2.0 SP1 ベースのアドイン (またはコンポーネント) と .NET Framework 4 ベースのアドインを同じプロセスで読み込むアプリケーションを実行できます。 古いコンポーネントは古いバージョンの .NET Framework を引き続き使用し、新しいコンポーネントは新しいバージョンの .NET Framework を使用します。 詳細については、「インプロセスの side-by-side 実行」を参照してください。
ポータブル クラス ライブラリ
Visual Studio 2010 Service Pack 1 (SP1) および Portable Library Tools をインストールすると、再コンパイルすることなく多様な .NET Framework プラットフォームで実行できるポータブル クラス ライブラリを作成できます。 詳細については、「汎用性のあるクラス ライブラリ」を参照してください。
ページのトップへ
コア機能の新機能と機能強化
以降のセクションでは、共通言語ランタイムと基本クラス ライブラリの新機能と機能強化について説明します。
診断とパフォーマンス
旧バージョンの .NET Framework には、特定のアプリケーション ドメインが他のアプリケーション ドメインに影響を与えているかどうかを確認する方法はありませんでした。これは、オペレーティング システムの API とツール (Windows タスク マネージャーなど) では、プロセス レベルまでの精度しかサポートされていなかったためです。 .NET Framework 4 以降では、プロセッサ使用率やメモリ使用量の見積もりをアプリケーション ドメインごとに取得できます。
個別のアプリケーション ドメインの CPU とメモリの使用状況を監視できます。 マネージ API、ネイティブ ホスト API、および Windows イベント トレーシング (ETW) を通じて、アプリケーション ドメインのリソースを監視できます。 この機能が有効になっていると、プロセスの有効期間中、プロセス内のすべてのアプリケーション ドメインに関する統計情報が収集されます。 新しい AppDomain.MonitoringIsEnabled プロパティを参照してください。
パフォーマンスを向上させるために診断目的で ETW イベントにアクセスできるようになりました。 詳細については、「CLR ETW イベント」および「.NET Framework のログ記録の制御」を参照してください。 「パフォーマンス カウンターとインプロセス side-by-side アプリケーション」も参照してください。
System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute 属性を使用すると、破損状態のプロセスを示す例外をマネージ コードで処理できます。
グローバリゼーション
.NET Framework 4 には、新しいニュートラル カルチャと特定カルチャ、更新されたプロパティ値、文字列処理の強化、およびその他の機能強化が含まれています。 詳細については、「グローバリゼーションとローカリゼーションの新機能」を参照してください。
ガベージ コレクション
.NET Framework 4 には、バックグラウンドで動作するガベージ コレクションが用意されています。 これは、以前のバージョンの同時実行ガベージ コレクションに代わる機能であり、より優れたパフォーマンスを実現します。 詳細については、「ガベージ コレクションの基礎」を参照してください。
コード コントラクト
コード コントラクトを使用すると、メソッドや型のシグネチャだけでは表現できないコントラクト情報を指定できます。 新しい System.Diagnostics.Contracts 名前空間に含まれているクラスを使用することにより、コードの前提条件を、事前条件、事後条件、オブジェクト不変条件などの形で、言語に依存しない方法で表現することができます。 このようなコントラクトにより、ランタイム チェックによるテストが強化され、コントラクトの静的検証が可能になり、ドキュメントの生成がサポートされます。 詳細については、「コード コントラクト」を参照してください。
デザイン時のみの相互運用機能アセンブリ
COM オブジェクトと相互運用されるアプリケーションを配置する際に、プライマリ相互運用機能アセンブリ (PIA) を含める必要がなくなりました。 .NET Framework 4 では、アプリケーション (たとえば、アドイン) が実際に使用する型のみを選択し、コンパイラで相互運用機能アセンブリから型情報を埋め込むことができます。 タイプ セーフは共通言語ランタイムによって保証されます。 詳細については、「マネージ コードでの COM 型の使用」および「チュートリアル: Microsoft Office アセンブリからの型情報の埋め込み (C# および Visual Basic)」を参照してください。
動的言語ランタイム
動的言語ランタイム (DLR: Dynamic Language Runtime) は、動的言語の一連のサービスを CLR に追加する新しいランタイム環境です。 DLR により、.NET Framework 上で実行される動的言語の開発や、静的に型指定された言語への動的機能の追加が簡単になります。 DLR をサポートするために、新しい System.Dynamic 名前空間が .NET Framework に追加されています。
式ツリーが拡張されて、System.Linq.Expressions.LoopExpression や System.Linq.Expressions.TryExpression などの制御フローを表す新しい型が追加されました。 これらの新しい型は DLR (動的言語ランタイム) によって使用されますが、LINQ では使用されません。
また、.NET Framework インフラストラクチャをサポートする新しいクラスが System.Runtime.CompilerServices 名前空間にいくつか追加されています。 詳細については、「動的言語ランタイムの概要」を参照してください。
共変性と反変性
いくつかのジェネリック インターフェイスと汎用デリゲートで共変性と反変性がサポートされるようになりました。 詳細については、「ジェネリックの共変性と反変性」を参照してください。
BigInteger と複素数
新しい System.Numerics.BigInteger 構造体は、標準の整数演算 (ビット操作を含む) をすべてサポートする任意の桁数の整数データ型です。 この構造体は、すべての .NET Framework 言語で使用できます。 また、一部の新しい .NET Framework 言語 (F#、IronPython など) には、この構造体のサポートが組み込まれています。
新しい System.Numerics.Complex 構造体は、複素数の算術演算と三角関数演算をサポートする複素数を表します。
組
.NET Framework 4 には、構造化データを含む組オブジェクトを作成するための System.Tuple クラスが用意されています。 また、1 ~ 8 個の構成要素を持つ組 (つまり、1 ~ 8 個の要素で構成される組) をサポートするジェネリック組クラスも用意されています。 9 個以上の構成要素を持つ組オブジェクトをサポートするために、7 個の型パラメーターと、任意の組の型に使用できる 8 番目のパラメーターを持つジェネリック組クラスがあります。
ファイル システムの列挙の強化
新しいファイル列挙型メソッドによって、大きなファイル ディレクトリにアクセスするアプリケーションや、大きなファイルの行を反復処理するアプリケーションのパフォーマンスが向上しました。 詳細については、「方法: ディレクトリとファイルを列挙する」を参照してください。
メモリ マップト ファイル
.NET Framework でメモリ マップト ファイルがサポートされるようになりました。 メモリ マップト ファイルは、非常に大きなファイルを編集したり、プロセス間通信用の共有メモリを作成したりするために使用できます。
64 ビットのオペレーティング システムとプロセス
Environment.Is64BitOperatingSystem プロパティと Environment.Is64BitProcess プロパティで、64 ビットのオペレーティング システムとプロセスを識別できます。
基本キーを開くときに Microsoft.Win32.RegistryView 列挙型を使用すると、32 ビットと 64 ビットのどちらのレジストリ ビューを使用するかを指定できます。
その他の新機能
その他の新機能、機能強化、および便利な機能を次に示します。 顧客の提案に基づくものもいくつか含まれています。
カルチャ依存の書式設定をサポートするために、ToString、Parse、および TryParse の各メソッドの新しいオーバーロードと、ParseExact と TryParseExact という新しいメソッドが、System.TimeSpan 構造体に含まれています。
新しい String.IsNullOrWhiteSpace メソッドは、文字列が null か空であるか、または空白文字のみで構成されているかを示します。 System.Collections.Generic.IEnumerable<T> コレクションのメンバーを連結する新しいオーバーロードが String.Concat メソッドと String.Join メソッドに追加されています。
String.Concat メソッドを使用すると、列挙可能なコレクションの各要素を事前に文字列に変換することなく連結できます。
2 つの便利な新メソッド StringBuilder.Clear および Stopwatch.Restart を使用できます。
新しい Enum.HasFlag メソッドは、設定されている 1 つ以上のビット フィールドまたはフラグが列挙値で設定されているかどうかを判断します。 Enum.TryParse メソッドは、文字列または整数を正しく解析できるかどうかを示すブール値を返します。
System.Environment.SpecialFolder 列挙型にいくつかの新しいフォルダーが含まれています。
System.IO.Stream クラスを継承するクラスの CopyTo メソッドにより、ストリームを別のストリームに簡単にコピーできるようになりました。
Path.Combine メソッドの新しいオーバーロードを使用すると、ファイル パスを結合できます。
新しい System.IObservable<T> インターフェイスと System.IObserver<T> インターフェイスにより、プッシュ ベースの通知の機構が一般化されています。
System.IntPtr クラスと System.UIntPtr クラスで加算演算子と減算演算子がサポートされるようになりました。
型を System.Lazy<T> クラスにラップすることにより、任意のカスタム型の限定的な初期化を行うことができるようになりました。
新しい System.Collections.Generic.SortedSet<T> クラスは、データを挿入、削除、および検索した後にデータの並べ替え順序を保持する自動調整ツリーを提供します。 このクラスは、新しい System.Collections.Generic.ISet<T> インターフェイスを実装します。
System.IO.Compression.DeflateStream クラスと System.IO.Compression.GZipStream クラスの圧縮アルゴリズムが強化されて、既に圧縮されているデータのサイズが増大しなくなりました。 また、ストリームの圧縮に対する 4 GB のサイズ制限がなくなりました。
Monitor.Enter(Object, Boolean) メソッドの新しいオーバーロードは、ブール参照を受け取り、モニターが正常に入った場合にのみ、それをアトミックに true に設定します。
Thread.Yield メソッドを使用すると、呼び出し元のスレッドから、現在のプロセッサ上で実行する準備が整っている別のスレッドに実行を切り替えることができます。
System.Guid 構造体に、TryParse メソッドと TryParseExact メソッドが含まれるようになりました。
新しい Microsoft.Win32.RegistryOptions 列挙型を使用すると、コンピューターの再起動後は保持されない揮発性のレジストリ キーを指定できます。
レジストリ キーの最大長が 255 文字という制限がなくなりました。
ページのトップへ
Managed Extensibility Framework
Managed Extensibility Framework (MEF) は、組み合わせ自在で拡張可能なアプリケーションの開発をサポートする .NET Framework 4 の新しいライブラリです。 MEF を使用すると、アプリケーションを拡張できるポイントを指定したり、他の拡張可能なアプリケーションに提供するサービスを公開したりできるほか、拡張可能なアプリケーションで使用するパーツを作成することもできます。 使用可能なパーツをメタデータに基づいて簡単に見つけることもできます。パーツのアセンブリを読み込む必要はありません。 詳細については、「Managed Extensibility Framework の概要」および「Managed Extensibility Framework」を参照してください。 MEF 型の一覧については、System.ComponentModel.Composition 名前空間を参照してください。
ページのトップへ
並列コンピューティング
.NET Framework 4 には、アプリケーション開発者とライブラリ開発者の作業を大幅に簡略化する、マルチスレッドの非同期コードを記述するための新しいプログラミング モデルが導入されています。 この新しいモデルを使用すると、効率的で詳細な、拡張性のある並列コードを自然な表現方法で記述できます。スレッドやスレッド プールを直接操作する必要はありません。 この新しいモデルは、新しい System.Threading.Tasks 名前空間とその他の関連する型でサポートされています。 LINQ to Objects の並列実装である Parallel LINQ (PLINQ) を使用すると、同様の機能を宣言構文で実現できます。 詳細については、「.NET Framework の並列プログラミング」を参照してください。
ページのトップへ
ネットワーキング
次の点でネットワーク機能が向上しています。
System.Net.HttpWebRequest、System.Net.HttpListener、System.Net.Mail.SmtpClient、System.Net.Security.SslStream、および System.Net.Security.NegotiateStream を含むさまざまなクラスで Windows 認証のセキュリティが強化されました。 Windows 7 および Windows Server 2008 R2 上のアプリケーションに対して拡張保護を使用できます。 詳細については、「Integrated Windows Authentication with Extended Protection」を参照してください。
IPv6 および Teredo を使用したネットワーク アドレス変換 (NAT) トラバーサルがサポートされます。 詳細については、「NAT Traversal using IPv6 and Teredo」を参照してください。
HttpWebRequest オブジェクトに関するパフォーマンス情報を提供するネットワーク パフォーマンス カウンターが新しく追加されました。 詳細については、「ネットワーク パフォーマンス カウンター」を参照してください。
System.Net.HttpWebRequest クラスで、大きなバイト範囲ヘッダー (64 ビット範囲) を、AddRange メソッドの新しいオーバーロードで使用できるようになりました。 System.Net.HttpWebRequest クラスの新しいプロパティを使用すると、アプリケーションで多数の HTTP ヘッダーを設定できます。 Host プロパティを使用して、要求 URI に依存しない HTTP 要求の Host ヘッダー値を設定できます。
System.Net.Mail.SmtpClient と関連クラスで SSL (Secure Sockets Layer) がサポートされます。
System.Net.Mail.MailMessage クラスの電子メール ヘッダーのサポートが強化されました。
暗号化で使用する null 暗号がサポートされます。 System.Net.ServicePointManager クラスと EncryptionPolicy プロパティを使用して、暗号化ポリシーを指定できます。 System.Net.Security.SslStream クラスのコンストラクターが System.Net.Security.EncryptionPolicy クラスをパラメーターとして受け取るようになりました。
System.Net.NetworkCredential クラスで、基本認証、ダイジェスト認証、NTLM 認証、Kerberos 認証などのパスワードに基づく認証方式に資格情報を提供します。 セキュリティ強化のため、パスワードを System.String インスタンスではなく System.Security.SecureString インスタンスとして扱うことができるようになりました。
パーセント記号をエンコードした値を持つ URL を変換および正規化する方法を、System.Uri クラスと System.Net.HttpListener クラスで指定できるようになりました。 詳細については、System.Net.Configuration.HttpListenerElement、System.Configuration.SchemeSettingElement、System.Configuration.SchemeSettingElementCollection、および System.Configuration.UriSection の各クラスを参照してください。
ページのトップへ
Web
ASP.NET Version 4 には、次の領域の新機能が導入されています。
コア サービス (キャッシュを拡張するための新しい API、セッション状態データの圧縮のサポート、新しいアプリケーション プリロード マネージャー (自動開始機能) など)。
Web フォーム (ASP.NET ルーティングのより統合されたサポート、Web の標準のサポートの強化、更新されたブラウザー サポート、データ コントロールの新機能、ビューステート管理の新機能など)。
Web フォーム コントロール (新しいグラフ コントロールなど)。
MVC (ビュー用の新しいヘルパー メソッド、分割された MVC アプリケーションのサポート、非同期コントローラーなど)。
動的データ (既存の Web アプリケーションのサポート、多対多リレーションシップと継承のサポート、新しいフィールド テンプレートと属性、強化されたデータ フィルター処理など)。
Microsoft Ajax (Microsoft Ajax Library でのクライアント ベースの Ajax アプリケーションの追加サポートなど)。
Visual Web Developer (JScript 用の IntelliSense の強化、HTML および ASP.NET マークアップ用の新しいオートコンプリート スニペット、CSS 互換性の強化など)。
配置 (一般的な配置タスクを自動化するための新しいツールなど)。
マルチ ターゲット (.NET Framework のターゲット バージョンで使用できない機能のフィルター処理の向上など)。
これらの機能の詳細については、「ASP.NET 4 および Visual Web Developer の新機能」を参照してください。
ページのトップへ
クライアント
WPF (Windows Presentation Foundation) Version 4 では、次の領域の機能が変更および強化されています。
Calendar、DataGrid、DatePicker などの新しいコントロール。
VisualStateManager により、コントロールの状態の変更がサポートされます。
タッチおよび操作により、Windows 7 での複数の同時タッチからの入力を受け取るアプリケーションを作成できます。
グラフィックスとアニメーションでは、レイアウトの丸め、Pixel Shader Version 3.0、キャッシュ済みコンポジション、およびイージング関数がサポートされます。
テキストについては、テキスト レンダリング機能が向上し、テキスト ボックスでのキャレットの色および選択色のカスタマイズがサポートされます。
InputBinding の Command プロパティ、動的オブジェクト、および Text プロパティでバインディングがサポートされます。
XAML ブラウザー アプリケーション (XBAP) で、Web ページとの通信および完全信頼配置がサポートされます。
System.Windows.Shell 名前空間の新しい型により、Windows 7 タスク バーと通信してデータを Windows シェルに渡すことが可能になります。
Visual Studio 2010 の WPF および Silverlight デザイナーでは、WPF アプリケーションまたは Silverlight アプリケーションの作成を支援するために、多様なデザイナー機能が強化されています。
詳細については、「WPF Version 4 の新機能」を参照してください。
ページのトップへ
データ
ADO.NET
ADO.NET には、永続化非依存オブジェクト、LINQ クエリの関数、カスタム オブジェクト レイヤー コード生成など、Entity Framework のための新しい機能が導入されています。 詳細については、「ADO.NET の新機能」を参照してください。
動的データ
ASP.NET 4 では、Dynamic Data が強化されて、データ ドリブン Web サイトをすばやく作成するための機能がさらに強化されています。 次に例を示します。
データ モデルで定義されている制約に基づいて自動検証を実行できます。
Dynamic Data プロジェクトの一部であるフィールド テンプレートを使用して、GridView コントロールと DetailsView コントロールのフィールドに対して生成されるマークアップを簡単に変更できます。
詳細については、「ASP.NET 4 および Visual Web Developer の新機能」を参照してください。
WCF Data Services
ADO.NET データ サービスは WCF Data Services という名前に変更され、次の機能を提供しています。
データ バインディング。
エンティティ セット内のエンティティのカウント。
サーバー ドリブン ページング。
クエリ射影。
カスタム データ サービス プロバイダー。
バイナリ リソースのストリーミング。
詳細については、「What's New in WCF Data Services」を参照してください。
ページのトップへ
Windows Communication Foundation
Windows Communication Foundation (WCF) の機能は次のように強化されています。
構成ベースのアクティブ化: .svc ファイルを用意する必要がなくなりました。
System.Web.Routing 統合: 拡張子のない URL の使用を許可することにより、サービスの URL に対する柔軟な制御を実現しています。
複数の IIS サイト バインディングのサポート: 同じ Web サイトで同じプロトコルを使用する、複数のベース アドレスが許可されます。
ルーティング サービス: コンテンツに基づいてメッセージをルーティングすることができます。
WS-Discovery のサポート: 探索可能なサービスを作成および検索できます。
標準エンドポイント: 特定のプロパティのみを指定できる定義済みのエンドポイントです。
ワークフロー サービス: メッセージを送受信するアクティビティ、コンテンツに基づいてメッセージを関連付ける機能、およびワークフロー サービス ホストを提供して、WCF と WF を統合します。
WCF REST 機能:
Web HTTP キャッシュ: Web HTTP サービスの応答をキャッシュできます。
Web HTTP 形式のサポート: サービス操作で返す応答の最適な形式を動的に決定できます。
Web HTTP サービスのヘルプ ページ: WCF サービスのヘルプ ページに似た、Web HTTP サービスの自動ヘルプ ページを提供します。
Web HTTP エラー処理: Web HTTP サービスが、操作と同じ形式でエラー情報を返すことができます。
Web HTTP ドメイン間 JavaScript サポート: JSONP (JSON with Padding) の使用が可能になります。
簡略化された構成: サービスに必要な構成作業が少なくなります。
詳細については、「What's New in Windows Communication Foundation」を参照してください。
ページのトップへ
Windows Workflow Foundation
Windows Workflow Foundation (WF) では、次の領域の機能が強化されています。
強化されたワークフロー アクティビティ モデル: ワークフロー動作の基本抽象クラスとして、Activity クラスが提供されています。
豊富な複合アクティビティ オプション: Flowchart、TryCatch、Switch<T> などの従来のフロー制御構造をモデル化する新しいフロー制御アクティビティをワークフローで利用できます。
拡張ビルトイン アクティビティ ライブラリ: アクティビティ ライブラリの新しい機能に、新しいフロー制御アクティビティ、メンバー データを操作するためのアクティビティ、およびトランザクションを制御するためのアクティビティが含まれています。
明示的なアクティビティ データ モデル: データを格納および移動するための新しいオプションとして、変数と、方向のある引数を使用できます。
ホスティング、永続化、追跡の強化されたオプション: ホスティングの強化機能として、ワークフローを実行するための多数のオプション、Persist アクティビティの使用による明示的な永続化、アンロードを必要としない永続化、非永続化ゾーンの使用による永続化の回避、ホストからのアンビエント トランザクションの使用、イベント ログへの追跡情報の記録、Bookmark オブジェクトの使用による保留中のワークフローの再開などがあります。
WF デザイナーの容易な拡張: 新しい WF デザイナーは Windows Presentation Foundation (WPF) に基づいて構築されており、Visual Studio の外部で WF デザイナーを再ホストするときに簡単に使用できるモデルを提供しています。
詳細については、「What's New in Windows Workflow Foundation」を参照してください。
ページのトップへ
参照
概念
ASP.NET 4 および Visual Web Developer の新機能
その他の技術情報
.NET Framework 4 における新しい型およびメンバー
What's New in Windows Communication Foundation