次の方法で共有


ADO.NET アーキテクチャ

データ処理は、従来、主に接続ベースの 2 層モデルに依存していました。 データ処理では多層アーキテクチャがますます使用されるため、プログラマは、アプリケーションのスケーラビリティを向上させるために、切断されたアプローチに切り替えています。

ADO.NET コンポーネント

データにアクセスして操作するための ADO.NET の 2 つの主要なコンポーネントは、.NET Framework データ プロバイダーと DataSetです。

.NET Framework データ プロバイダー

.NET Framework データ プロバイダーは、データ操作用に明示的に設計されたコンポーネントであり、データへの高速、転送専用、読み取り専用アクセスです。 Connection オブジェクトは、データ ソースへの接続を提供します。 Command オブジェクトを使用すると、データベース コマンドにアクセスして、データの取得、データの変更、ストアド プロシージャの実行、パラメーター情報の送信または取得を行うことができます。 DataReaderは、データ ソースからのデータの高パフォーマンス ストリームを提供します。 最後に、 DataAdapter は、 DataSet オブジェクトとデータ ソースの間のブリッジを提供します。 DataAdapterでは、Command オブジェクトを使用してデータ ソースで SQL コマンドを実行し、データを含むDataSetを読み込み、DataSet内のデータに加えられた変更をデータ ソースに調整します。 詳細については、「 .NET Framework データ プロバイダー 」および 「ADO.NET でのデータの取得と変更」を参照してください

The DataSet

ADO.NET DataSet は、データ ソースに関係なく、データ アクセス用に明示的に設計されています。 その結果、複数の異なるデータ ソースと共に使用したり、XML データと共に使用したり、アプリケーションに対してローカルなデータを管理したりすることができます。 DataSetには、データの行と列で構成される 1 つ以上のDataTable オブジェクトのコレクションと、DataTable オブジェクト内のデータに関する主キー、外部キー、制約、および関係情報も含まれます。 詳細については、「 DataSets、DataTables、DataViews」を参照してください。

次の図は、.NET Framework データ プロバイダーと DataSetの関係を示しています。

ADO.Net グラフィック ado_1_bpuedev11
ADO.NET アーキテクチャ

DataReader または DataSet の選択

アプリケーションで DataReader ( DataReader を使用したデータの取得を参照) または DataSet ( DataSet、DataTable、DataView を参照) のどちらを使用するかを決定する場合は、アプリケーションに必要な機能の種類を検討してください。 DataSetを使用して、次の操作を行います。

  • データを操作できるように、アプリケーションでデータをローカルにキャッシュします。 クエリの結果のみを読み取る必要がある場合は、 DataReader を選択することをお勧めします。

  • 階層間または XML Web サービスからのリモート データ。

  • Windows フォーム コントロールへのバインドや、複数のソースからのデータの結合と関連付けなど、データを動的に操作します。

  • データ ソースへのオープン接続を必要とせずに、データに対して広範な処理を実行します。これにより、他のクライアントが使用する接続が解放されます。

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

LINQ to DataSet

LINQ to DataSet には、DataSet オブジェクトにキャッシュされたデータに対するクエリ機能とコンパイル時の型チェックが用意されています。 これにより、C# や Visual Basic などの .NET Framework 開発言語のいずれかでクエリを記述できます。 詳細については、「 LINQ to DataSet」を参照してください。

LINQ to SQL

LINQ to SQL では、中間概念モデルを使用せずにリレーショナル データベースのデータ構造にマップされるオブジェクト モデルに対するクエリがサポートされます。 各テーブルは個別のクラスで表され、オブジェクト モデルとリレーショナル データベース スキーマが密接に結合されます。 LINQ to SQL では、オブジェクト モデル内の言語統合クエリが Transact-SQL に変換され、実行のためにデータベースに送信されます。 データベースから結果が返されると、LINQ to SQL によって結果がオブジェクトに変換されます。 詳細については、「 LINQ to SQL」を参照してください。

ADO.NET Entity Framework(データベースアプリケーションを開発するためのフレームワーク)

ADO.NET Entity Framework は、開発者がリレーショナル ストレージ スキーマに対して直接プログラミングするのではなく、概念的なアプリケーション モデルに対してプログラミングすることで、データ アクセス アプリケーションを作成できるように設計されています。 目標は、データ指向アプリケーションに必要なコードとメンテナンスの量を減らすることです。 詳細については、「 ADO.NET Entity Framework」を参照してください。

WCF Data Services

WCF Data Services は、Web またはイントラネット上にデータ サービスを展開するために使用されます。 データは、エンティティ データ モデルの仕様に従ってエンティティとリレーションシップとして構成されます。 このモデルにデプロイされたデータは、標準の HTTP プロトコルでアドレス指定できます。 詳細については、「 WCF Data Services 4.5」を参照してください。

XML と ADO.NET

ADO.NET は、XML の機能を利用して、データへの切断されたアクセスを提供します。 ADO.NET は、.NET Framework の XML クラスと手を取って設計されています。どちらも 1 つのアーキテクチャのコンポーネントです。

ADO.NET と .NET Framework の XML クラスは、 DataSet オブジェクトに収束します。 DataSetには、ファイルか XML ストリームかに関係なく、XML ソースからのデータを設定できます。 DataSetは、DataSet内のデータのソースに関係なく、そのスキーマを XML スキーマ定義言語 (XSD) スキーマとして含む World-Wide Web Consortium (W3C) 準拠 XML として記述できます。 DataSetのネイティブシリアル化形式は XML であるため、階層間でデータを移動するための優れた媒体であり、DataSetは XML Web サービスとの間でデータとスキーマ コンテキストをリモート処理するための最適な選択肢になります。 詳細については、「 XML ドキュメントとデータ」を参照してください。

こちらも参照ください