.NET Framework Version 3.5 の新機能
更新 : 2007 年 11 月
このトピックでは、.NET Framework version 3.5 の新機能および拡張機能について説明します。
.NET Compact Framework
.NET Compact Framework version 3.5 では、Windows Communication Foundation (WCF) テクノロジの追加によって、分散モバイル アプリケーションのサポートが強化されています。また、コミュニティからのフィードバックを反映した新しい API である LINQ など、新しい言語機能が追加されているほか、デバッグ機能も最新の診断ツールや診断機能により強化されています。
これらの新機能および機能強化の詳細については、「.NET Compact Framework Version 3.5 の新機能」を参照してください。
ASP.NET
.NET Framework 3.5 では、ASP.NET および Visual Web Developer の対象領域における機能強化がなされています。最も大きく進化した点は、AJAX 対応 Web サイトの開発に関連したサポート強化です。ASP.NET は、一連の新しいサーバー コントロールおよび API によって、サーバー主体の AJAX 開発を支援します。既存の ASP.NET 2.0 ページを AJAX に対応させるには、ScriptManager コントロールおよび UpdatePanel コントロールを追加します。これにより、ページ全体を再表示することなく、必要な部分だけを更新できるようになります。
ASP.NET は、Microsoft AJAX Library と呼ばれる新しいクライアント ライブラリにより、クライアント主体の AJAX 開発にも対応しています。Microsoft AJAX Library は、ブラウザに依存しない、クライアント主体のオブジェクト指向開発を支援します。クライアント ライブラリのクラスを ECMAScript (JavaScript) で使用することによって、サーバーへのラウンドトリップを必要としない洗練された UI 動作を実現できます。サーバー主体の開発とクライアント主体の開発を適宜組み合わせながら、アプリケーションのニーズを満たすことが可能です。Visual Web Developer ではさらに、JavaScript の IntelliSense サポートと、Microsoft AJAX Library のサポートが強化されています。
今後、ASP.NET および Visual Web Developer では、ASMX ベースと WCF ベースの両方の Web サービスがサポートされることになります。どちらの実装も、Microsoft AJAX Library を使用することにより、Web ページからシームレスに使用できます。また、フォーム認証、ロール管理、プロファイルなどのサーバー側のアプリケーション サービスは、WCF 互換のアプリケーション (クライアント スクリプトや Windows フォーム クライアントなど) から利用できる Web サービスとして公開されます。ASP.NET によって、あらゆる Web ベース アプリケーションが、こうした共通のアプリケーション サービスを共有できるようになります。
これ以外にも ASP.NET の機能強化の一環として、新しいデータ コントロールが追加されています。たとえば、データを表示するための ListView や、ASP.NET のデータ ソース コントロール アーキテクチャを介して Web 開発者に統合言語クエリ (LINQ) を公開する新しいデータ ソース コントロール (LinqDataSource)、プリコンパイル済みアセンブリをマージするための新しいツール (ASP.NET マージ ツール (Aspnet_merge.exe))、IIS 7.0 との緊密な統合などが挙げられます。ListView は、テンプレートやスタイルを使って自由にカスタマイズできるコントロールであり、並べ替えやページング機能のほか、編集、挿入、削除などの操作もサポートします。ListView のページング機能は、DataPager と呼ばれる新しいコントロールによって実現されます。複数のアセンブリを結合させることができるマージ ツールを使用することで、配置やリリース管理におけるさまざまなシナリオに対応することが可能です。ASP.NET と IIS 7.0 の統合により、認証やキャッシュなどの ASP.NET サービスを、あらゆる種類のコンテンツで利用できるようになります。両者の統合がもたらすメリットとしては、他にも、ASP.NET マネージ コードでサーバー パイプライン モジュールを開発できることや、モジュールとハンドラの統一された構成がサポートされる点なども挙げられます。
Visual Web Developer のその他の機能強化としては、マルチ ターゲットのサポート、Web アプリケーション プロジェクトの追加、新しいデザイン ビュー、新しいカスケード スタイル シート (CSS) デザイン ツール、SQL データベース用 LINQ サポートなどがあります。マルチ ターゲットがサポートされたことにより、Visual Web Developer を使って、特定のバージョンの .NET Framework (Version 2.0、3.0、3.5 など) を対象に Web アプリケーションを開発できるようになります。
詳細については、「ASP.NET および Web 開発の新機能」を参照してください。
アドインおよび拡張機能
.NET Framework 3.5 の System.AddIn.dll アセンブリは、拡張可能アプリケーションの開発を強力かつ柔軟に支援します。アプリケーションの機能を拡張するために必要な初期作業を支援し、ホスト アプリケーションが変更されても拡張機能の動作を維持できるようにする新しいアーキテクチャおよびモデルが導入されています。このモデルには、次の機能が備わっています。
探索
AddInStore クラスを使用することで、コンピュータ上の複数の場所に存在する一連のアドインを容易に検索および管理できます。このクラスでは、アドインに関する情報を、対応する基本型で検索および取得できます。実際にアドインを読み込む必要はありません。
アクティベーション
アプリケーションからアドインを選択した後は、AddInToken クラスを使って簡単にアクティブにすることができます。分離レベルとサンドボックス レベルを選択するだけで、他の処理はシステムによって自動的に行われます。
分離
アプリケーション ドメインと、アドインのプロセス分離が組み込まれてます。各アドインの分離レベルは、ホストの管理下に置かれます。アプリケーション ドメインとプロセスの読み込み、および、アドインの実行が停止された後のシャットダウンは、システムによって処理されます。
サンドボックス
アドインは既定の信頼レベルを使用するか、信頼レベルをカスタマイズすることによって簡単に構成できます。インターネット、イントラネット、完全信頼、および "ホストと同じ" アクセス許可セットがサポートされているほか、ホストにカスタムのアクセス許可セットを指定させるオーバーロードもサポートされています。
UI コンポジション
アドイン モデルは、アプリケーション ドメインの境界にまたがる、Windows Presentation Foundation (WPF) コントロールのダイレクト コンポジションをサポートしています。分離、アンロード機能、サンドボックス、バージョン管理などの利点を活かしつつ、アドインをホストの UI に直接参加させることも簡単にできます。
バージョン管理
アドイン アーキテクチャでは、既存のアドインとの互換性を損ねたり、開発者に負担を強いることなく、ホストに新しいバージョンのオブジェクト モデルを導入できます。
詳細については、「アドインおよび拡張機能」を参照してください。
共通言語ランタイム
コレクション
HashSet<T> は、.NET Framework に高パフォーマンスの集合操作を提供します。集合は、重複しない要素を任意の順序で格納したコレクションです。詳細については、「HashSet コレクション型」を参照してください。
診断
EventSchemaTraceListener クラスには、エンド ツー エンドのスキーマ互換イベントのトレースが用意されています。スレッド、AppDomain、プロセス、およびコンピュータの境界を越えて異種のコンポーネントが含まれるシステムに対してエンド ツー エンドのトレースを使用できます。標準化されたイベント スキーマ (「Event Representation for Event Consumers」を参照してください) が、これらの境界を越えるトレースを有効にするように定義されています。このスキーマは、Windows Vista の診断ツールであるイベント ビューアなどさまざまなトレース技術で共有されます。このスキーマでは、スキーマ準拠のカスタムの要素を追加することもできます。
EventSchemaTraceListener クラスは、ロック制御の不要なトレースを暗黙的にサポートして、ログ処理のパフォーマンスを向上するように調整されています。
入出力とパイプ
パイプは、同じコンピュータ上またはネットワーク内の他の Windows コンピュータ上で実行されている任意のプロセス間の通信を可能にします。.NET Framework では、匿名パイプと名前付きパイプという 2 種類のパイプにアクセスできます。パイプの詳細については、「パイプ」を参照してください。
ガベージ コレクション
GCSettings クラスには、ガベージ コレクタがアプリケーションに介入するタイミングを調整するための新しい LatencyMode プロパティが追加されています。このプロパティを、新しい GCLatencyMode 列挙体のいずれかの値に設定できます。
GC クラスには、新しい Collect(Int32, GCCollectionMode) メソッド オーバーロードが追加され、強制的に実行されるガベージ コレクションの動作を調整できるようになりました。たとえば、このオーバーロードを使用すると、オブジェクトをクリアするのに現在が最適なときかどうかをガベージ コレクタに判断させることができます。このオーバーロードは、新たに追加された GCCollectionMode 列挙値を引数として受け取ります。
部分信頼でのリフレクションとリフレクション出力
部分信頼で実行されたアセンブリからコードを出力したり、それを実行したりできるようになりました。出力されたコードが、パブリックの型とメソッドしか呼び出さないのであれば、アクセス対象の型およびメソッドによって要求されるアクセス許可さえあればよく、それ以上のアクセス許可は不要です。このようなコードは、新しい DynamicMethod(String, Type, array<Type[]) コンストラクタによって簡単に出力できます。
出力されたコードがプライベート データにアクセスする場合は、新しい DynamicMethod(String, Type, array<Type[], Boolean) コンストラクタを使用して制限付きアクセスを許可できます。この機能を有効にするには、ホスト側が新しい RestrictedMemberAccess フラグで ReflectionPermission を付与する必要があります。この場合、それと同等以下の信頼レベルを持つアセンブリ内の型およびメソッドについてのみ、出力されたコードがプライベート データにアクセスできるようになります。「チュートリアル : 部分信頼シナリオにおけるコード出力」を参照してください。
リフレクションでは、ホストが RestrictedMemberAccess を付与することにより、プライベート プロパティにアクセスするメソッドや、プライベート メソッドを呼び出すメソッドなどを制限付きで使用できるようになりますが、その対象は、同等以下の信頼レベルを持ったターゲット アセンブリに限られます。
スレッド処理
読み取り/書き込みロックの強化
新しい ReaderWriterLockSlim クラスのパフォーマンスは、lock ステートメント (Visual Basic の場合は SyncLock) に匹敵し、ReaderWriterLock を大きくしのいでいます。ロック状態間の遷移が簡素化されているため、プログラミングが容易になり、デッドロックが発生する機会も削減されます。この新しいクラスは再帰をサポートしており、lock や ReaderWriterLock から容易に移行できます。
ThreadPool のパフォーマンス強化
マネージ スレッド プールにおける作業項目と入出力タスクのディスパッチのスループットが大幅に向上しています。ディスパッチがマネージ コードで処理されるようになり、アンマネージ コードへの切り替えは不要で、ロックの回数も少なくて済みます。アプリケーション固有のスレッド プールの実装には、ThreadPool の使用をお勧めします。
タイム ゾーンの強化
DateTimeOffset および TimeZoneInfo という、新たに追加された 2 つの型によってタイム ゾーンのサポートが強化され、異なるタイム ゾーンの日付と時刻を扱うアプリケーションをより簡単に開発できます。特定の状況ごとの型の選択については、「DateTime、DateTimeOffset、および TimeZoneInfo の使い分け」を参照してください。
TimeZoneInfo
新しい TimeZoneInfo クラスは、主に既存の TimeZone クラスを置き換えるものです。TimeZoneInfo を使用すると、ローカル タイム ゾーンや世界協定時刻 (UTC) だけでなく、レジストリに定義されているあらゆるタイム ゾーンを取得できます。カスタム タイム ゾーンの定義、カスタム タイム ゾーン データのシリアル化と逆シリアル化、異なるタイム ゾーン間の時刻変換なども可能です。TimeZoneInfo クラスを使用したアプリケーション開発の詳細については、「時刻とタイム ゾーン」を参照してください。
DateTimeOffset
新しい DateTimeOffset 構造体は、DateTime 構造体を拡張して、異なるタイム ゾーンの時刻を容易に扱うことができるようにしたものです。DateTimeOffset 構造体には、UTC の日時として表現された日時情報が、UTC との時差を示すオフセット値と共に格納されます。
暗号
ClickOnce マニフェスト
ClickOnce アプリケーションのマニフェストの署名に関する情報を検証および取得するための新しい暗号化クラスが導入されています。ManifestSignatureInformation クラスは、VerifySignature メソッド オーバーロードの使用時に、マニフェストの署名に関する情報を取得します。検証するマニフェストを指定するには、ManifestKinds 列挙体を使用します。検証の結果は、SignatureVerificationResult のいずれかの列挙値になります。ManifestSignatureInformationCollection は、検証された署名の ManifestSignatureInformation オブジェクトの読み取り専用コレクションを提供します。特定の署名情報を提供するクラスとしては、他にも次のようなものがあります。
StrongNameSignatureInformation
マニフェストの厳密な名前の署名情報を保持します。
AuthenticodeSignatureInformation
マニフェストの Authenticode 署名情報を表します。
-
Authenticode 署名のタイム スタンプ情報を保持します。
-
Authenticode 署名が信頼済みかどうかを簡単な方法でチェックできます。
Suite B のサポート
.NET Framework 3.5 は、米国国家安全保障局 (NSA: National Security Agency) によって公開された暗号化アルゴリズム Suite B セットをサポートしています。NSA のドキュメントについては、www.nsa.gov/ia/industry/crypto_suite_b.cfm を参照してください。
次のアルゴリズムが含まれています。
キー サイズ 128 ビットおよび 256 ビットの AES (Advanced Encryption Standard)。暗号化に使用されます。
Secure Hash Algorithm (SHA-256 および SHA-384)。ハッシュ化に使用されます。
256 ビットおよび 384 ビットの素数の曲線を使用した ECDSA (Elliptic Curve Digital Signature Algorithm)。署名に使用されます。このアルゴリズムは、ECDsaCng クラスによって提供されます。秘密キーを使った署名と公開キーを使った検証ができます。
256 ビットおよび 384 ビットの素数の曲線を使った ECDH (Elliptic Curve Diffie-Hellman)。キーの交換と秘密協定に使用されます。このアルゴリズムは、ECDiffieHellmanCng クラスによって提供されます。
新たに追加された AesCryptoServiceProvider、SHA256CryptoServiceProvider、SHA384CryptoServiceProvider の各クラスでは、連邦情報処理規格 (FIPS: Federal Information Processing Standard) によって認定された AES、SHA-256、および SHA-384 実装のマネージ コード ラッパーを使用できます。
CNG (Cryptography Next Generation) のクラスには、ネイティブ Crypto API (CAPI) のマネージ実装が提供されています。このグループの中心は、CNG キーのストレージと使用を抽象化する CngKey キー コンテナ クラスです。このクラスにより、キー ペアまたは公開キーを安全に格納したり、単純な文字列名を使って参照したりすることが可能となります。CngKey オブジェクトは、ECDsaCng クラスおよび ECDiffieHellmanCng クラスで使用されています。
CngKey クラスは、キーを開く、作成する、削除する、エクスポートするなど、さまざまな補足的な操作に使用されます。また、ネイティブ API を直接呼び出すときに使用する、基になるキー ハンドルへのアクセスも提供します。
CNG に関連したクラスとしては、キー ストレージ プロバイダを管理する CngProvider、CNG アルゴリズムを管理する CngAlgorithm、使用頻度の高いキー プロパティを管理する CngProperty などがあります。
ネットワーキング
ピアツーピア ネットワーキング
ピアツーピア ネットワークは、複数のネットワーク デバイスによるリソースの共有と直接相互通信を可能にする、サーバーを介さないネットワーキング テクノロジです。System.Net.PeerToPeer 名前空間には、ピアツーピア クラウドに登録された PeerName オブジェクトを使用して他のピア ノードを検出するためのプロトコル、ピア名解決プロトコル (PNRP: Peer Name Resolution Protocol) をサポートする一連のクラスがあります。PNRP では、ピア名を IPv6 アドレスまたは IPv4 IP アドレスに解決できます。
ピアツーピア ネットワーキングを使用したコラボレーション
System.Net.PeerToPeer.Collaboration 名前空間には、ピアツーピア ネットワーキング インフラストラクチャを使用したコラボレーションをサポートする一連のクラスが存在します。アプリケーションでは、これらのクラスを使用することによって、次のような処理を単純化できます。
サーバーの介入なしにピアのプレゼンスを追跡する。
参加者に招待状を送信する。
同じサブネットまたは同じ LAN 上のピアを検出する。
連絡先を管理する。
ピアと対話する。
Microsoft のピアツーピア コラボレーション インフラストラクチャは、サーバーレスの共同作業を可能にするピアツーピア ネットワーク ベースのフレームワークを提供します。このフレームワークを利用することで、サブネットまたはインターネット上に分散しているコンピュータの総力を使用する非集中型のネットワーキング アプリケーションが実現します。この種のアプリケーションは、共同作業による計画、通信、コンテンツ配布から、マルチプレイヤーによるゲーム対戦まで、さまざまなアクティビティで活用できます。
ソケット パフォーマンスの強化
非同期のネットワーク入出力によって最大限のパフォーマンスを実現するサーバー アプリケーションを想定して、Socket クラスが強化されています。Socket 名前空間に対する機能強化の一環として、一連のクラスが新たに追加されました。これらのクラスは、目的に特化した高パフォーマンスのソケット アプリケーションで使用できる、新たな非同期パターンを提供します。これらの強化された機能は、高いパフォーマンスが要求されるネットワーク サーバー アプリケーションを想定して設計されています。
Windows Communication Foundation
WCF と WF の統合 (ワークフロー サービス)
.NET Framework 3.5 では、Windows Workflow Foundation (WF) と Windows Communication Foundation (WCF) フレームワークが統合され、WCF サービスを作成するための手段として WF を使用したり、既存の WF ワークフローをサービスとして公開したりできます。これにより、永続化可能で、かつデータをワークフローとの間で容易にやり取りでき、さらに、アプリケーション レベルのプロトコルを適用できるサービスの作成が可能となります。詳細については、「ワークフロー サービスと永続性サービスの作成」を参照してください。コード例については、「ワークフロー サービスのサンプル」を参照してください。
永続性サービス
.NET Framework 3.5 では、WF の永続化モデルを使ってサービスの状態情報を永続化する WCF サービスもサポートされています。これらの永続性サービスは、セッションが切断されても、後で再作成できるように自己の状態情報をアプリケーション レイヤで永続化します。サービスの状態情報は、永続化ストアから再読み込みすることができます。詳細については、「ワークフロー サービスと永続性サービスの作成」を参照してください。コード サンプルについては、「永続性サービスのサンプル」を参照してください。
WCF の Web プログラミング モデル
WCF の Web プログラミング モデルは、WCF による Web 形式のサービス開発を可能にします。この Web プログラミング モデルの特徴としては、高度な URI 処理機能、あらゆる HTTP 動詞 (GET など) のサポート、広範なメッセージ形式 (XML、JSON、不透明なバイナリ ストリームなど) を扱うことのできる単純なプログラミング モデルなどが挙げられます。詳細については、「Web プログラミング モデル」を参照してください。コード例については、「Web プログラミング モデルのサンプル」を参照してください。
WCF の配信
WCF には、配信フィード (Atom 1.0 と RSS 2.0 の両形式を含む) を処理するための厳密に型指定されたオブジェクト モデルが採用されています。詳細については、「WCF 配信」を参照してください。コード例については、「配信サンプル」を参照してください。
WCF と部分信頼
.NET Framework 3.5 では、限られたアクセス許可で実行されているアプリケーションが、WCF の機能を制限付きで使用できるようになっています。ASP.NET の "中程度の信頼" アクセス許可で実行されているサーバー アプリケーションは、WCF サービス モデルを使用して基本的な HTTP サービスを作成できます。インターネット ゾーンのアクセス許可で実行されているクライアント アプリケーション (XAML ブラウザ アプリケーション、ClickOnce で配置された無署名のアプリケーションなど) は、WCF プロキシを使用して HTTP サービスを利用できます。さらに、部分的に信頼されたアプリケーションでも、WCF の Web プログラミング モデルの機能 (AJAX や配信など) を利用できます。詳細については、「部分信頼」を参照してください。コード例については、「部分信頼の WCF サンプル」を参照してください。
WCF と ASP.NET AJAX の統合
ASP.NET の AJAX (Asynchronous JavaScript and XML) 機能と WCF の統合は、WCF サービスを使用できる Web アプリケーション構築のためのエンド ツー エンドのプログラミング モデルを実現します。AJAX 形式の Web アプリケーションでは、クライアント (Web アプリケーションのブラウザなど) が、非同期要求を使用して、サーバーとの間で少量のデータを交換できます。WCF が ASP.NET の AJAX 機能と統合されたことにより、ブラウザからクライアント JavaScript を使用することによってアクセスできる WCF Web サービスを簡単に作成できるようになります。詳細については、「AJAX の統合と JSON のサポート」を参照してください。コード例については、「AJAX のサンプル」を参照してください。
Web Services Interoperability
Microsoft では、相互運用性と公開標準を重んじるという従来の姿勢を維持し、.NET Framework 3.5 で、安全かつ信頼性に優れた、トランザクション型の Web サービス標準を新たに導入しました。
これらのプロトコルの実装には、新しい標準バインディングである <ws2007HttpBinding> および <ws2007FederationHttpBinding> を使ってアクセスできます。詳細については、「Web サービス プロトコルの相互運用性ガイド」を参照してください。コード サンプルについては、「WS バインディング サンプル」を参照してください。
Windows Presentation Foundation
.NET Framework 3.5 の Windows Presentation Foundation には、バージョン管理、アプリケーション モデル、データ バインディング、コントロール、ドキュメント、注釈、3-D UI 要素など、さまざまな領域に変更および改良が反映されています。
これらの新機能および機能強化の詳細については、「Windows Presentation Foundation Version 3.5 の新機能」を参照してください。
Windows Workflow Foundation
WCF と WF の統合 (ワークフロー サービス)
.NET Framework 3.5 では、Windows Workflow Foundation (WF) と Windows Communication Foundation (WCF) フレームワークが統合され、WCF サービスを作成するための手段として WF を使用したり、既存の WF ワークフローをサービスとして公開したりできます。これにより、永続化可能で、かつデータをワークフローとの間で容易にやり取りでき、さらに、アプリケーション レベルのプロトコルを適用できるサービスの作成が可能となります。詳細については、「ワークフロー サービスと永続性サービスの作成」を参照してください。コード例については、「ワークフロー サービスのサンプル (WF)」を参照してください。
規則
WF ルール エンジンで、新たに拡張メソッド、演算子のオーバーロード、および、規則での new 演算子の使用がサポートされました。詳細については、「.NET Framework 3.5 でのルールの変更点」を参照してください。コード例については、「ルールと条件のサンプル」を参照してください。
Windows フォーム
ClickOnce の機能強化
ClickOnce には、さまざまな機能強化が施されています。たとえば、複数の場所から配置する機能やサード パーティの商標を追加する機能があります。詳細については、「再署名を行わない ClickOnce アプリケーションの配置」および「開発者以外が配置する ClickOnce アプリケーションの作成」を参照してください。
.NET Framework 3.5 では、ClickOnce と組み合わせて使用されることの多い Mage.exe ツールがアップデートされています。詳細については、「マニフェストの生成および編集ツール (Mage.exe)」を参照してください。
認証、ロール、および設定サービス
.NET Framework 3.5 ではクライアント アプリケーション サービスが新しく追加され、Windows ベースのアプリケーション (Windows フォーム、Windows Presentation Foundation アプリケーションなど) で ASP.NET のログイン、ロール、およびプロファイルの各サービスに容易にアクセスできるようになりました。これらのサービスを使用して、ユーザーを認証したり、共有サーバーからユーザー ロールとアプリケーション設定を取得できます。
クライアント アプリケーション サービスは、アプリケーションの構成ファイルまたは Visual Studio プロジェクト デザイナでクライアント サービス プロバイダを指定および構成することによって有効にできます。これらのプロバイダは Web 拡張モデルに組み込まれ、これにより .NET Framework の既存のログイン、ロール、および設定の各 API を使用して Web サービスにアクセスできます。クライアント アプリケーション サービスでは、ローカル データ キャッシュにユーザー情報を格納しておき、アプリケーションのオフライン時にはこのキャッシュからユーザー情報を取得することで、たまにしか接続されない環境もサポートされます。
詳細については、「クライアント アプリケーション サービス」を参照してください。
Windows Vista のサポート
既存の Windows フォーム アプリケーションは Windows Vista で円滑に動作します。また、いつでもアップグレードして、Windows Vista 用に作成されたアプリケーションと同じ外観を持たせることができます。ファイル操作用のコモン ダイアログ ボックスは、自動的に Windows Vista バージョンに更新されます。.NET Framework 3.5 では、ユーザー アカウント制御 (UAC) シールド アイコンもサポートされます。詳細については、「FileDialog クラス」および Shield を参照してください。
WPF サポート
Windows フォームを使用して、Windows Presentation Foundation (WPF) のコントロールおよびコンテンツを Windows フォーム コントロールと一緒にホストできます。Windows フォームから WPF ウィンドウを開くこともできます。Windows フォームと WPF とを組み合わせて使用する方法の詳細については、「移行と相互運用性」を参照してください。
LINQ
統合言語クエリ (LINQ: Language-Integrated Query) は、Visual Studio 2008 および .NET Framework 3.5 の新機能です。LINQ は、強力なクエリ機能を、標準的で学習しやすいクエリ パターンの形式として C# および Visual Basic の言語構文にまで拡げます。このテクノロジは、潜在的にあらゆる種類のデータ ストアに対応できるだけの拡張性を備えています。.NET Framework 3.5 には、LINQ プロバイダ アセンブリが含まれています。これにより、LINQ を使って、.NET Framework のコレクション、SQL Server のデータベース、ADO.NET のデータセット、および XML ドキュメントを対象にクエリを実行することが可能となります。
.NET Framework 3.5 に含まれている LINQ のコンポーネントは次のとおりです。
System.Linq 名前空間。一連の標準クエリ演算子に加え、LINQ クエリのインフラストラクチャで使用される型とインターフェイスが存在します。この名前空間は、System.Core.dll アセンブリに含まれます。
System.Data.Linq 名前空間。LINQ to SQL アプリケーションでのリレーショナル データベースとの対話をサポートするクラスが含まれています。
System.Data.Linq.Mapping 名前空間。リレーショナル データベースの構造と内容を表す LINQ to SQL オブジェクト モデルの生成に使用できるクラスが含まれています。
System.Xml.Linq 名前空間。LINQ to XML のクラスが含まれています。LINQ to XML は、XML ドキュメントを簡単かつ効率的に変更できるようにする、メモリ内 XML プログラミング インターフェイスです。LINQ to XML を使用すると、XML の読み込み、XML のシリアル化、何もない状態からの XML ツリーの作成、メモリ内 XML ツリーの操作、XSD を使った検証などを行うことができます。これらの機能を組み合わせて使用し、XML ツリーを別の形へ変換することもできます。
System.Web.UI.WebControls 名前空間および System.Web.UI.Design.WebControls 名前空間の新しい型。LinqDataSource などの新しい型は、ASP.NET Web ページからデータ ソース コントロールを介して LINQ を使用するという使い方をサポートしています。
System.Data 名前空間に存在する DataRowComparer、DataRowExtensions、DataTableExtensions の各クラスは、ADO.NET の DataSet オブジェクトを対象とした LINQ クエリをサポートしています。
クラス ライブラリでは、特定のクラスに該当する LINQ の拡張メソッドが、そのクラスのメンバのページ、[目次] ペイン、および [キーワード] ペインに一覧表示されます。
式ツリー
.NET Framework 3.5 で導入された式ツリーでは、言語レベルのコードをデータの形式で表すことができます。式ツリーのビルド ブロックとなる型は、System.Linq.Expressions 名前空間に存在します。これらの型を使用することで、メソッド呼び出しや等価比較など、各種のコード式を表すことができます。
式ツリーは、SQL データベースなどのリモート データ ソースを対象とした LINQ クエリで広く使用されています。これらのクエリは式ツリーとして表現され、この表現によって、クエリ プロバイダが式を検証し、特定領域のクエリ言語に変換できるようになります。
System.Linq.Expressions 名前空間は、System.Core.dll アセンブリに含まれます。
プログラミング言語
Microsoft の 3 つのプログラミング言語は、.NET Framework を明示的に対象としています。これらの言語の新機能と拡張機能の詳細については、以下のトピックを参照してください。
参照
概念
.NET Compact Framework Version 3.5 の新機能