次の方法で共有


ADO.NET のアーキテクチャ

従来のデータ処理は、主に接続をベースとした 2 層モデルに基づいていました。データ処理では多階層アーキテクチャが多用されるようになったため、プログラマは非接続型アプローチへと切り替えて、アプリケーションに、より優れたスケーラビリティを提供しています。

XML と ADO.NET

ADO.NET は XML の機能を活用して、データに対する非接続型アクセス機能を提供します。ADO.NET は .NET Framework に属する XML クラスと密接な連携をとってデザインされました。これらはどちらも同じアーキテクチャに属するコンポーネントです。

.NET Framework 内の ADO.NET および XML クラスは DataSet オブジェクトの中に集められています。DataSet に、XML のソース (ファイルまたは XML ストリーム) に含まれるデータを入力できます。DataSet 内のデータ ソースとは関係なく、DataSet を XSD (XML Schema definition language) スキーマを含めた W3C (World Wide Web Consortium) 準拠の XML として書くことができます。DataSet の基本のシリアル化形式は XML であることから、層間でデータを移動する優れた媒体となります。DataSet は、XML Web サービスとの間でデータとスキーマ コンテキストをリモート処理する場合に最適です。

DataSetXmlDataDocument の同期をとることで、データに対するリレーショナルで階層的なアクセスをリアルタイムで実行することもできます。詳細については、「Dataset と XmlDataDocument の同期」を参照してください。

ADO.NET のコンポーネント

ADO.NET のコンポーネントは、データ操作機能の中からデータ アクセス機能を分離するようにデザインされています。この目的を実現する ADO.NET の中心的なコンポーネントは 2 つあり、それが DataSet.NET Framework データ プロバイダです。.NET Framework データ プロバイダは ConnectionCommandDataReaderDataAdapter の各オブジェクトを含むコンポーネントのセットです。

ADO.NET DataSet は ADO.NET の非接続型アーキテクチャの中心となるコンポーネントです。DataSet は、どのデータ ソースにも依存しないデータ アクセスを明確な目的としてデザインされています。したがって、複数の異なるデータ ソースと併用したり、XML データと併用したり、アプリケーションにとってローカルなデータを管理するために使用したりできます。DataSet には、DataTable オブジェクト内のデータに関する主キー、外部キー、制約、およびリレーションシップ情報だけでなく、データの行と列で構成される複数の DataTable オブジェクトのコレクションが含まれます。

その他の ADO.NET アーキテクチャの核となるコンポーネントは .NET Framework データ プロバイダです。.NET Framework データ プロバイダのコンポーネントは、データの操作と、データに対する高速かつ前方専用、読み込み専用のアクセスを実行することを明確な目標としてデザインされています。Connection オブジェクトはデータ ソースとの接続機能を提供します。Command オブジェクトによってデータベース コマンドにアクセスできるため、データの返却、データの修正、格納されたプロシージャの実行、およびパラメータ情報の送信または取得を実行できます。DataReader は、データ ソースからの高いパフォーマンスのデータ ストリームを提供します。最後に、DataAdapterDataSet オブジェクトとデータ ソースの間のブリッジを提供します。DataAdapterCommand オブジェクトを使用して DataSet とデータの両方を読み込んだデータ ソースに SQL コマンドを実行し、DataSet 内で変更されたデータの内容をデータ ソースに戻します。

任意のデータ ソースに対する .NET Framework データ プロバイダを作成できます。.NET Framework には、.NET Framework Data Provider for SQL Server および .NET Framework Data Provider for OLE DB の 2 つの .NET Framework データ プロバイダである .NET Framework Data Provider for ODBC と .NET Framework Data Provider for Oracle が同梱されます。

ADO.NET アーキテクチャのコンポーネントを次の図に示します。

ADO.NET のアーキテクチャ

層およびクライアント間のリモート処理またはマーシャリング

DataSet のデザインによって、XML Web サービスを使用してクライアントにデータを Web 経由で簡単に転送したり、.NET リモート サービスを使用して .NET コンポーネント間でデータをマーシャリングしたりできます。またこのようにして、厳密に型指定された DataSet をリモート処理できます。XML Web サービスの概要については、「XML Web サービスの概要」を参照してください。XML Web サービスから DataSet を使用する例については、「XML Web サービスからの DataSet の使用」を参照してください。

リモート処理サービスの概要については、「.NET リモート処理の概要」を参照してください。DataTable オブジェクトはリモート処理サービスと併用できますが、XML Web サービス経由では転送できないことに注意してください。

ADO.NET プラットフォームの要件

Microsoft .NET Framework SDK (ADO.NET を含む) は、Microsoft® Windows® 2000、Microsoft® Windows NT® 4 with Service Pack 6a、Microsoft® Windows® Millennium Edition、Microsoft® Windows® 98、Microsoft® Windows® SE の各プラットフォーム上でサポートされています。.NET Framework Data Provider for SQL Server または OLE DB の Framework .NET データ プロバイダを使用するには、Microsoft Data Access Components バージョン 2.6 以降をインストールする必要があります。

次の例では、アプリケーションに名前空間 System.Data をインクルードして ADO.NET を使用する方法を示します。

Imports System.Data
[C#]
using System.Data;

ADO.NET クラスは System.Data.dll に含まれており、System.Xml.dll に含まれる XML クラスと統合されます。名前空間 System.Data を使用したコードをコンパイルする場合は、System.Data.dll と System.Xml.dll の両方を参照してください。コマンド ライン コンパイラを使用して ADO.NET アプリケーションをコンパイルした例については、「ADO.NET の応用例」を参照してください。

DataReader または DataSet の選択

アプリケーションで DataReader (「DataReader によるデータの取得」を参照) または DataSet (「DataSet の作成および使用」を参照) を使用する必要があるかどうかを判断する場合は、アプリケーションが必要とする機能の種類を考慮する必要があります。以下を実行する場合は DataSet を使用します。

  • 層間で、または XML Web サービスからデータをリモート処理する場合。
  • Windows フォーム コントロールとの連結、または複数ソースに属するデータの組み合わせや関連付けなど、データと動的に対話する場合。
  • アプリケーションでデータをローカルにキャッシュする場合。
  • リレーショナル データの階層 XML ビューを提供し、データについて XSL Transformation または XML Path Language (XPath) Query などのツールを使用する場合。詳細については、「XML と DataSet」を参照してください。
  • データ ソースとの接続を開かずにデータに対する広範な処理を実行する場合。他のクライアントが使用できるように、接続が解放されます。

DataSet によって提供される機能が必要ない場合は、DataReader を使用して前方専用、読み込み専用の方法でデータを返すことにより、アプリケーションのパフォーマンスを向上させることができます。DataAdapterDataReader を使用して DataSet (「DataAdapter からの DataSet の読み込み」を参照) の内容を入力していますが、DataReader を使用するとパフォーマンスを向上させることができます。これは、DataSet の内容を作成および入力するために必要な処理が節約されるだけでなく、DataSet が消費するメモリが節約されるためです。

参照

ADO.NET の概要 | ADO.NET を使用したデータのアクセス | ADO.NET の応用例